分存储器管理
- 格式:docx
- 大小:15.93 KB
- 文档页数:7
虚拟存储器的管理和技术有哪些我们很多的人应该都听说过虚拟存储器,今天,本文为大家带来的是虚拟存储器管理方面的知识,虚拟存储器管理是怎么样的,它又有哪些类型呢。
一、分区式存储管理1、这类型的存储管理方法管理起来不复杂比较的简单,它的不足之处就会会对于内存空间造成大量的浪费,早期的单一用户以及单一任务的控制装置,把内存空间进行划分,形成两个分区,为我们的用户区域以及系统区域。
我们的操作系统则采用的是系统区域;应用程序则使用的是我们的用户区域,同时的可以对用户区域的所有的空间进行利用。
2、为了达到多个程序同时的一起被执行,在我们现代的控制系统里面则加入了分区式的存储方法管理,将内存划分为很多个区域,操作系统使用里面的其中一个区域,所有的剩下的区域则由应用程序进行利用,各个应用程序占据里面的一个或者是几个区域。
3、按照划分区域的空间有没有固定,又能够吧分区式的存储管理划分成为固定区域以及动态区域两个区域。
二、交换技术和分区技术1、按照程序的部分性的为原理,在一个不是很长的时间端里面,程序进行访问的存储器位置占有比较大的比例集聚在存储器位置比较少的空间里面。
交换技术则是采用了程序的部分性原理达到多个任务同时的进行环境存储管理工作。
2、交换的进程里面通过换入以及换出这两个进程构成,换入的进程把外村交换区的数据以及程序代码进行交换到内存里面,换出的进程则是把内存里面的数据进行交换到外村交换里面中去。
3、操作控制装置不会立刻的执行程序代码在外存里面进行保存的工作,同时的把这些过程排到过程请求中的长期调度里面中去,队列里面的一些过程被调进主存里面进行执行,当因为输入以及输出等操作而造成存储器里面没有过程处于准备就绪的情况时,操作装置就会把一些进程交换到外存里面来,同时的排进中期里面中去。
4、交换技术的优势则是将同时运行的进程的数量加大。
不足之处则是换入以及换出的工作把处理机的时间开销加长同时交换的单位是所有的进程地址的容积,并无思考程序运行的进程里面地址访问进行统计的功能。
第四章存储器管理第0节存储管理概述一、存储器的层次结构1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。
但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。
实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
2、各种存储器•寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;•内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;•磁盘高速缓存:存在于主存中;•磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、CPU 不可直接访问;由操作系统协调这些存储器的使用。
二、存储管理的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。
(注意cpu和主存储器,这两类资源管理的区别)2、存储管理的主要功能:•地址重定位•主存空间的分配与回收•主存空间的保护和共享•主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。
这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。
●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。
四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;地址映射分静态和动态两种方式。
1、静态地址重定位是程序装入时集中一次进行的地址变换计算。
物理地址= 重定位的首地址+ 逻辑地址•优点:简单,不需要硬件支持;•缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。
第十一讲存储器管理之连续分配方式连续分配是指将存储器中的空间按照一定的方式连续划分给进程使用的一种存储器管理方式。
常见的连续分配方式有三种:单一连续分配方式、固定分区分配方式和动态分区分配方式。
单一连续分配方式是最简单的分配方式,每个进程只有一个连续的存储区域。
操作系统将整个存储器分成两部分,一部分为操作系统占用,另一部分为用户程序占用。
优点是实现简单,缺点是无法有效利用存储器空间和不能同时运行多个程序。
2.固定分区分配方式固定分区分配方式是将存储器划分成若干个固定大小的区域,每个区域对应一个作业或进程。
每个进程的大小必须小于等于所分配的存储区域大小。
操作系统为每个进程分配存储空间时,优先从大小与所需存储空间最接近的空闲分区开始分配。
优点是管理简单,缺点是会导致存储空间的浪费和外部碎片的产生。
3.动态分区分配方式动态分区分配方式是将存储器分为多个大小不等的存储块,每个进程可以根据需要分配不同大小的存储块。
当新的进程需要存储空间时,操作系统从存储器的起始地址开始查找,找到第一个可用空闲块,并将其分配给进程。
优点是存储空间利用率高,可以同时运行多个进程,但缺点是会导致内部碎片的产生。
对于动态分区分配方式,还可以采用三种具体的分区算法:a. 首次适应算法(First Fit):从前向后遍历所有空闲分区,找到第一个大小大于或等于所需存储空间的空闲分区进行分配。
优点是速度快,但容易产生较多的碎片。
b. 循环首次适应算法(Next Fit):与首次适应算法类似,但从上一次分配的位置开始查找,减少了空闲分区的时间。
可以避免每次都从头开始,但仍会产生较多的碎片。
c. 最佳适应算法(Best Fit):从所有空闲分区中找到最小且大于所需存储空间的空闲分区进行分配。
优点是最大限度地避免碎片,但速度相对较慢。
综上所述,连续分配方式是一种常见的存储器管理方式。
根据应用场景和需求不同,可以选择合适的连续分配方式来管理存储器,以实现存储空间的高效利用和进程的有效管理。
简述分页存储管理基本方法分页存储管理是存储器管理的一项重要技术,它被广泛应用于不同种类的计算机存储器中。
项技术主要是解决计算机存储资源的使用效率与利用问题。
本文将简述分页存储管理基本方法。
分页存储管理是一种页式存储器管理方法,其主要思想是将一个程序中的指令和数据以页的形式存放到内存储器中,然后由操作系统的内存管理子系统对存储器资源进行有效的管理。
该方法的主要特点有:(1)页面存储。
分页存储管理方法是将一个程序分割成若干个页面,每个页面有固定大小,把一个程序放在内存中时,可以把它拆分为小的页,存入内存,然后由操作系统来控制和管理。
(2)有效利用存储空间。
分页存储管理方法使得内存空间利用率得到了极大的提升,主要体现在几个方面:首先,每一页可以有效的利用存储空间,因为每一页都可以容纳若干条指令,这也就意味着一个程序可以放得更多,减少了存储空间的浪费。
其次,在内存中使用更多的内存可以更有效的使用存储空间,因为每一页中储存的都是有用的数据,不需要每次都往内存中加载数据,从而节省了存储时间。
(3)提高使用效率。
分页存储管理方法可以有效的提高存储空间的使用效率,采用这种方式存储的程序,其可执行性比较高,可以大大降低存储时间,从而提高程序的执行效率。
除此以外,分页存储管理还可以实现存储自由和动态扩充功能,可以更好的满足程序的存储需求,同时也可以减少存储空间的浪费。
总之,分页存储管理方法是一种有效的存储器管理方法,它可以有效的提高存储资源的使用率,提高存储空间利用率,提高存储使用效率,减少存储空间的浪费,并且可以实现存储自由和动态扩充功能,满足程序的存储需求。
分页存储管理的具体实施方法要根据不同的操作系统,硬件结构特点和实际要求而定。
一般来说,其实现步骤包括:对所有程序进行页面加载装入内存,对装入内存的页面进行排序,若有空闲页面则把数据页存储在不同的物理存储器上,并且动态地准备存储页面,释放已经存储过的页面,以及恢复程序运行等。
第十一讲存储器管理之连续分配方式所谓连续分配方式:是指为一个用户程序分配一个连续的内存空间。
又可把连续分配方式分为:单一连续分配,固定分区分配,动态分区分配,动态重定位分区分配,四种方式。
1 单一连续分配(单独分区分配)最简单的一种存储管理方式,但只能用于单用户、单任务的OS中。
概念:单一连续分配就是整个主存区域的用户空间均归一个用户作业使用。
存储管理方法:将内存分为系统区(内存低端,分配给OS用)和用户区(内存高端,分配给用户用)。
其中用户区是指除了系统区外的内存空间,提供给用户程序使用。
采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存。
主要特点:管理简单,只需小量的软件和硬件支持,便于用户了解和使用。
但因内存中只装入一道作业运行,内存空间浪费大,各类资源的利用率也不高。
例子:一个容量为256KB的内存,操作系统占用32KB,剩下224KB全部分配给用户作业,如果一个作业仅需64KB,那么就有160KB的存储空间被浪费。
2 固定分区分配分区分配方式是满足多道程序设计需要的一种最简单的存储管理方法。
2.1 思想:将内存分成若干个分区(大小相等/不相等),除OS占一区外,其余的每一个分区容纳一个用户程序。
这样来实现多道并发。
2.2 分区划分方法:分区大小相等,分区大小不等。
但事先必须确定,在运行时不能改变。
即分区大小及边界在运行时不能改变。
2.3 内存分配:首先:要先建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)。
其次:当某个用户程序要装入内存时,由内存分配程序检索分区说明表,从表中找出一个满足要求的尚未分配的分区分配该程序,同时修改说明表中相应分区的状态;若找不到大小足够的分区,则拒绝为该程序分配内存。
第三:当程序执行完毕,释放占用的分区,管理程序将修改说明表中相应分区的状态为未分配,实现内存资源的回收。
2.4 特点主要特点:管理简单,但因作业的大小并不一定与某个分区大小相等,从而使一部分存储空间被浪费。
分级存储管理的四⼤优点
本篇⽂章将为⼤家详细介绍分级存储管理的优点,⼴⼤读者可以通过此篇⽂章了解到⾃⼰的系统适不适合进⾏分级存储。
希望能对读者有所帮助。
数据分级存储之所以重要,是因为它既能最⼤限度地满⾜⽤户需求,⼜可使存储成本最⼩化。
数据分级存储管理的优点具体表现在:
1.减少总体存储成本
不经常访问的数据驻留在较低成本的存储器中,可综合发挥磁盘驱动器的性能优势与磁带的成本优势。
2.性能优化
分级存储管理可使不同性价⽐的存储设备发挥最⼤的综合效益。
分级存储管理
3.改善数据可⽤性
分级存储管理把很少使⽤的历史数据迁移到辅助存储器中,或归档到离线存储池中,这样就⽆需反复保存,减少了存储的时间;同时提⾼了在线数据的可⽤性,使磁盘的可⽤空间维持在系统要求的⽔平上。
4.数据迁移对应⽤透明
进⾏分级存储管理后,数据移动到另外的存储器时,应⽤程序不需要改变,使数据迁移对应⽤透明。
存储管理的基本模式存储管理是操作系统中重要的组成部分,负责管理计算机系统中的内存和外部存储器。
存储管理的基本模式主要有以下几种:1. 固定分区固定分区是一种简单的存储管理方式,它将内存分为若干个固定大小的区域,每个区域对应一个进程或任务。
每个进程只能在自己的区域中运行,不能访问其他区域的内存。
这种方式在一定程度上限制了进程的自由度,但由于实现简单,在一些简单系统中仍然被采用。
优点:实现简单,安全可靠。
缺点:分区数量固定,造成内存浪费,且不利于大内存程序的运行。
适用场景:适用于内存较小、任务数量固定的系统。
2. 动态分区动态分区是一种更为灵活的存储管理方式,它根据进程或任务的实际需要,动态地分配内存空间。
这种方式能够更好地利用内存资源,提高内存利用率。
优点:内存利用率高,适用于大内存程序。
缺点:实现相对复杂,需要操作系统进行更多的管理操作。
适用场景:适用于内存较大、任务数量不确定的系统。
3. 页式管理页式管理是一种将内存分为若干个页(page)的存储管理方式。
每个页的大小固定,可以存放一个进程或任务的一部分。
页式管理通过将程序分割成多个页面,实现了内存的离散分配。
优点:内存利用率高,可以实现多道程序运行。
缺点:实现相对复杂,需要处理页面置换和缺页等问题。
适用场景:适用于内存较大、任务数量不确定的系统。
4. 段式管理段式管理将内存分为若干个段(segment),每个段的大小不固定,可以存放一个进程或任务的一部分。
段式管理通过将程序分割成多个段,实现了内存的逻辑分段。
优点:便于多道程序运行,可以实现分段保护和分段共享。
缺点:实现相对复杂,需要处理段之间的地址映射和保护等问题。
适用场景:适用于内存较大、任务数量不确定的系统。
5. 段页式管理段页式管理结合了页式管理和段式管理的优点,将内存分为若干个段,每个段又包含若干个页。
这种方式可以实现内存的逻辑分段和离散分配,同时提高了内存的利用率和多道程序运行能力。
基本分段存储管理方式基本分段存储管理方式是计算机操作系统用来管理内存的一种方法。
通常将内存分成固定大小的若干段,每个段都有一个起始地址和一个长度,随着程序的运行,可以动态地将不同大小的进程加载到这些段中,从而优化内存使用,提高系统性能。
基本分段存储管理方式的实现过程大致分为三个步骤:操作系统将物理内存划分成若干固定大小的段,这些段称为物理段或实际段。
接着,操作系统为每个进程分配虚拟地址空间,并用一组相同的大小将其划分为若干虚拟段。
每个虚拟段的起始地址和长度都与实际段相对应,但它们不一定在物理空间上是连续的。
操作系统将进程的虚拟地址映射到实际的物理地址,以便进程能够访问内存。
基本分段存储管理方式有以下几个优点:1. 灵活性:基本分段存储管理方式可以用相对较少的内存空间来持久存储多个进程,这增加了系统的灵活性,使得操作系统能够同时运行多个进程,而不会导致内存溢出。
2. 内存利用率:基本分段存储管理方式允许操作系统根据每个进程的需求动态分配内存,从而提高内存利用率。
如果一个进程只需要几百KB的内存,而系统中的物理内存大大小于这个需求,那么只需要分配给它一个相应的虚拟段就可以了,这样就避免了浪费内存的情况。
3. 保护:基本分段存储管理方式可以通过在每个虚拟段中设置访问权限进行内存保护。
只允许进程访问它被授权访问的虚拟地址范围,而禁止它访问其他虚拟地址空间,从而增强系统的安全性。
基本分段存储管理方式也有以下几个缺点:1. 内部碎片:由于每个分段的大小是固定的,使得当进程只需要使用部分段时,其中未使用的部分会变成内部碎片。
这会浪费一些内存,降低内存利用率。
2. 外部碎片:当系统中有大量的小进程时,这些小进程可能会被分配到不同的分段中。
当一些分段中的进程被撤销时,这些空闲的小空间难以合并在一起,从而导致外部碎片的产生。
3. 上下文切换:由于每个进程的虚拟空间不一定是连续的,因此在进程切换时需要进行频繁的虚拟地址到物理地址的映射操作,这会增加系统的开销。
实验7分页存储器管理实验性质:验证+设计建议学时:2学时一、实验目的学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。
查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。
编程修改页目录和页表的映射关系,理解分页地址变换原理。
二、预备知识阅读本书第6章。
了解i386处理器的二级页表硬件机制,EOS操作系统的分页存储器管理方式,以及进程地址空间的内存分布。
三、实验内容准备实验按照下面的步骤准备本次实验:1. 启动OS Lab。
2. 新建一个EOS应用程序项目。
查看EOS应用程序进程的页目录和页表使用OS Lab打开本实验文件夹中的和文件(将文件拖动到OS Lab窗口中释放即可打开)。
仔细阅读这两个文件中的源代码和注释,main函数的流程图可以参见图16-1。
按照下面的步骤查看EOS应用程序进程的页目录和页表:1. 使用文件中的源代码替换之前创建的EOS应用程序项目中文件中的源代码。
2. 右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。
3. 在弹出的“添加新文件”对话框中选择“asm 源文件”模板。
4. 在“名称”中输入文件名称“func”。
5. 点击“添加”按钮添加并自动打开文件。
6. 将文件中的源代码复制到文件中。
7. 按F7生成修改后的EOS应用程序项目。
8. 按F5启动调试。
9. 应用程序执行的过程中,会将该进程的二级页表映射信息输出到虚拟机窗口和OS Lab“输出”窗口中,输出内容如图16-2(a)。
10. 将“输出”窗口中的内容复制到一个文本文件中。
图16-2:(a)EOS应用程序进程的二级页表映射信息(b)有应用程序进程时,系统进程的二级页表映射信息图16-2(a)中第一行是CR3寄存器的值,也就是页目录所在的页框号。
第一列是页目录中有效的PDE,第二列是PDE映射的页表中有效的PTE(详细的格式可以参考源代码中的注释)。
注意,在标号为0x200的PDE对应的页表中,所有的1024个PTE都是有效的,所以在图中省略了一部分。
根据图16-2(a)回答下面的问题:应用程序进程的页目录和页表一共占用了几个物理页页框号分别是多少映射用户地址空间(低2G)的页表的页框号是多少该页表有几个有效的PTE,或者说有几个物理页用来装载应用程序的代码、数据和堆栈页框号分别是多少查看应用程序进程和系统进程并发时的页目录和页表需要对EOS应用程序进行一些修改:1. 结束之前的调试。
2. 取消第121行语句的注释(该行语句会等待10秒)。
3. 按F7生成修改后的EOS应用程序项目。
4. 按F5启动调试。
5. 在“Console-1”中会自动执行,创建该应用程序进程。
利用其等待10秒的时间,按Ctrl+F2切换到“Console-2”。
6. 在“Console-2”中输入命令“mm”后按回车,会将系统进程的二级页表映射信息输出到虚拟机窗口和OS Lab的“输出”窗口,输出内容如图16-2(b)。
注意,在图16-2(b)中添加了一些空行,方便与图16-2(a)比较。
“Console-1”中的应用程序在等待10秒后,又会输出和图16-2(a)一致的内容。
7. 将“输出”窗口中的内容复制到一个文本文件中。
控制台命令“mm”对应的源代码在EOS内核项目ke/文件的ConsoleCmdMemoryMap函数中(第382行)。
阅读这部分源代码后会发现,其与文件中的源代码基本类似。
结合图16-2(a)和(b)回答下面的问题:EOS启动后系统进程是一直运行的,所以当创建应用程序进程后,系统中就同时存在了两个进程,这两个进程是否有各自的页目录在页目录映射的页表中,哪些是独占的,哪些是共享的分析其中的原因。
统计当应用程序进程和系统进程并发时,总共有多少物理页被占用应用程序结束后,在“Console-1”中再次输入命令“mm”,查看在没有应用程序进程时,系统进程的页目录和页表。
将“输出”窗口中的内容复制到一个文本文件中。
将输出的内容与图16-2(b)比较,思考为什么系统进程(即内核地址空间)占用的物理页会减少(提示:创建应用程序进程时,EOS内核要为其创建PCB,应用程序结束时,内核要释放PCB占用的内存。
)查看应用程序进程并发时的页目录和页表需要对EOS应用程序进行一些修改:1. 结束之前的调试。
2. 取消第201行语句的注释(该行语句会等待10秒)。
3. 按F7生成修改后的EOS应用程序项目。
4. 按F5启动调试。
5. 在“Console-1”中会自动执行,创建该应用程序进程。
利用其等待10秒的时间,按Ctrl+F2切换到“Console-2”。
6. 在“Console-2”中输入“eosapp”后按回车,再执行一个。
7. 由创建的两个并发进程会先后在各自的控制台和OS Lab“输出”窗口中,输出各自的二级页表映射信息。
输出的内容如图16-3。
8. 将“输出”窗口中的内容复制到一个文本文件中。
图16-3:(a)应用程序进程1的二级页表映射信息(b)应用程序进程2的二级页表映射信息结合图16-3(a)和(b)回答下面的问题:观察这两个进程的用户地址空间,可以得出结论:同一个应用程序创建的两个并发的进程,它们的用户虚拟地址空间完全相同,而映射的物理页完全不同,从而保证相同的行为(执行过程)可以在独立的空间内完成。
假设进程1的0x41E和0x41F物理页保存了应用程序的可执行代码,由于可执行代码是不变的、只读的,现在假设优化过的EOS允许进程2共享进程1的保存了可执行代码的物理页,尝试结合图16-3写出此时进程2用户地址空间的映射信息。
并说明共享可执行代码的物理页能带来哪些好处。
统计当两个应用程序进程并发时,总共有多少物理页被占用有更多的进程同时运行呢根据之前的操作方式,尝试在更多的控制台中启动应用程序来验证自己的想法。
如果进程的数量足够多,物理内存是否会用尽,如何解决该问题在二级页表中映射新申请的物理页下面通过编程的方式,从EOS操作系统内核中申请两个未用的物理页,将第一个物理页当作页表,映射基址为0xE0000000的4M虚拟地址空间,然后将第二个物理页分别映射到基址为0xE0000000和0xE0001000的4K虚拟地址空间。
从而验证下面的结论:虽然进程可以访问4G虚拟地址空间,但是只有当一个虚拟地址通过二级页表映射关系能够映射到实际的物理地址时,该虚拟地址才能够被访问,否则会触发异常。
所有未用的物理页都是由EOS操作系统内核统一管理的,使用时必须向内核申请。
为虚拟地址映射物理页时,必须首先为页目录安装页表,然后再为页表安装物理页。
并且只有在刷新快表后,对页目录和页表的更改才能生效。
不同的虚拟地址可以映射相同的物理页,从而实现共享。
首先验证第一个结论:1. 新建一个 EOS Kernel项目。
2. 从“项目管理器”打开ke/文件。
3. 打开本实验文件夹中的文件(将文件拖动到OS Lab窗口中释放即可)。
4. 在文件的ConsoleCmdMemoryMap函数中找到“关中断”的代码行(第413行),将文件中的代码插入到“关中断”代码行的后面。
5. 按F7生成该内核项目。
6. 按F5启动调试。
7. 在EOS控制台中输入命令“mm”后按回车。
8. OS Lab会弹出一个调试异常对话框,选择“是”调试异常。
9. 黄色箭头指向访问虚拟地址0xE0000000的代码行。
由于该虚拟地址没有映射物理内存(图16-2和图16-3中都未映射该虚拟地址),所以对该虚拟地址的访问会触发异常。
10. 结束此次调试,然后删除或者注释会触发异常的该行代码。
按照下面的步骤验证其它结论:1. 按F7生成该内核项目。
2. 按F5启动调试。
3. 在EOS控制台中输入命令“mm”后按回车。
4. 在OS Lab的“输出”窗口中查看执行的结果,并将“输出”窗口中的内容复制到一个文本文件中。
结合插入的源代码和执行的结果理解上面的结论。
注意,在代码中修改了虚拟地址0xE0000000处的内存的值,然后从虚拟地址0xE0001000处读取到了相同的值,原因是这两处虚拟地址映射到了相同的物理页。
四、思考与练习1. 观察之前输出的页目录和页表的映射关系,可以看到页目录的第0x300个PDE映射的页框号就是页目录本身,说明页目录被复用为了页表。
而恰恰就是这种映射关系决定了4K的页目录映射在虚拟地址空间的0xC0300000-0xC0300FFF,4M的页表映射在0xC0000000-0xC03FFFFF。
现在,假设修改了页目录,使其第0x100个PDE映射的页框号是页目录本身,此时页目录和页表会映射在4G虚拟地址空间的什么位置呢说明计算方法。
2. 修改中的源代码,通过编程的方式统计并输出用户地址空间占用的内存数目。
3. 修改中的源代码,通过编程的方式统计并输出页目录和页表的数目。
注意页目录被复用为页表。
4. 在EOS启动时,软盘引导扇区被加载到从0x7C00开始的512个字节的物理内存中,计算一下其所在的物理页框号,然后根据物理内存与虚拟内存的映射关系得到其所在的虚拟地址。
修改中的源代码,尝试将软盘引导扇区所在虚拟地址的512个字节值打印出来,与文件中的指令字节码进行比较,验证计算的虚拟地址是否正确。
5. 既然所有1024个页表(共4M)映射在虚拟地址空间的0xC0000000-0xC03FFFFF,为什么不能从页表基址0xC0000000开始遍历,来查找有效的页表呢而必须先在页目录中查找有效的页表呢编写代码尝试一下,看看会有什么结果。
6. 学习EOS操作系统内核统一管理未用物理页的方法(可以参考本书第6章的第节)。
尝试在本实验第节中ConsoleCmdMemoryMap函数源代码的基础上进行修改,将申请到的物理页从二级页表映射中移除,并让内核回收这些物理页。
7. 思考页式存储管理机制的优缺点。