分 存储器管理
- 格式:docx
- 大小:16.02 KB
- 文档页数:7
虚拟存储器的管理和技术有哪些我们很多的人应该都听说过虚拟存储器,今天,本文为大家带来的是虚拟存储器管理方面的知识,虚拟存储器管理是怎么样的,它又有哪些类型呢。
一、分区式存储管理1、这类型的存储管理方法管理起来不复杂比较的简单,它的不足之处就会会对于内存空间造成大量的浪费,早期的单一用户以及单一任务的控制装置,把内存空间进行划分,形成两个分区,为我们的用户区域以及系统区域。
我们的操作系统则采用的是系统区域;应用程序则使用的是我们的用户区域,同时的可以对用户区域的所有的空间进行利用。
2、为了达到多个程序同时的一起被执行,在我们现代的控制系统里面则加入了分区式的存储方法管理,将内存划分为很多个区域,操作系统使用里面的其中一个区域,所有的剩下的区域则由应用程序进行利用,各个应用程序占据里面的一个或者是几个区域。
3、按照划分区域的空间有没有固定,又能够吧分区式的存储管理划分成为固定区域以及动态区域两个区域。
二、交换技术和分区技术1、按照程序的部分性的为原理,在一个不是很长的时间端里面,程序进行访问的存储器位置占有比较大的比例集聚在存储器位置比较少的空间里面。
交换技术则是采用了程序的部分性原理达到多个任务同时的进行环境存储管理工作。
2、交换的进程里面通过换入以及换出这两个进程构成,换入的进程把外村交换区的数据以及程序代码进行交换到内存里面,换出的进程则是把内存里面的数据进行交换到外村交换里面中去。
3、操作控制装置不会立刻的执行程序代码在外存里面进行保存的工作,同时的把这些过程排到过程请求中的长期调度里面中去,队列里面的一些过程被调进主存里面进行执行,当因为输入以及输出等操作而造成存储器里面没有过程处于准备就绪的情况时,操作装置就会把一些进程交换到外存里面来,同时的排进中期里面中去。
4、交换技术的优势则是将同时运行的进程的数量加大。
不足之处则是换入以及换出的工作把处理机的时间开销加长同时交换的单位是所有的进程地址的容积,并无思考程序运行的进程里面地址访问进行统计的功能。
操作系统学习指导书操作系统课程组信息工程学院计算机系第1章操作系统引论知识点总结1、什么是操作系统操作系统:是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。
1) OS是什么:是系统软件(一整套程序组成,如UNIX由上千个模块组成)2) 管什么:控制和管理系统资源(记录和调度)2、操作系统的主要功能操作系统的功能:存储器管理、处理机管理、设备管理、文件管理和用户接口管理。
1) 存储器管理:内存分配,地址映射,内存保护和内存扩充2) 处理机管理:作业和进程调度,进程控制和进程通信3) 设备管理:缓冲区管理,设备分配,设备驱动和设备无关性4) 文件管理:文件存储空间的管理,文件操作的一般管理,目录管理,文件的读写管理和存取控制5) 用户接口:命令界面/图形界面和系统调用接口3、操作系统的地位操作系统是裸机之上的第一层软件,是建立其他所有软件的基础。
它是整个系统的控制管理中心,既管硬件,又管软件,它为其它软件提供运行环境。
4、操作系统的基本特征操作系统基本特征:并发,共享和异步性。
1) 并发:并发性是指两个或多个活动在同一给定的时间间隔中进行。
2) 共享:共享是指计算机系统中的资源被多个任务所共用。
3) 异步性:每个程序什么时候执行,向前推进速度快慢,是由执行的现场所决定。
但同一程序在相同的初始数据下,无论何时运行都应获得同样的结果。
5、操作系统的主要类型多道批处理系统、分时系统、实时系统、个人机系统、网络系统和分布式系统1) 多道批处理系统(1) 批处理系统的特点:多道、成批(2) 批处理系统的优点:资源利用率高、系统吞吐量大(3) 批处理系统的缺点:等待时间长、没有交互能力2) 分时系统(1) 分时:指若干并发程序对CPU时间的共享。
它是通过系统软件实现的。
共享的时间单位称为时间片。
(2) 分时系统的特征:同时性:若干用户可同时上机使用计算机系统交互性:用户能方便地与系统进行人--机对话独立性:系统中各用户可以彼此独立地操作,互不干扰或破坏及时性:用户能在很短时间内得到系统的响应(3) 优点主要是:响应快,界面友好多用户,便于普及便于资源共享3) 实时系统(1) 实时系统:响应时间很快,可以在毫秒甚至微秒级立即处理(2) 典型应用形式:过程控制系统、信息查询系统、事务处理系统(3) 与分时系统的主要区别:4) 个人机系统(1) 单用户操作系统单用户操作系统特征:个人使用:整个系统由一个人操纵,使用方便。
实验7 分页存储器管理实验性质:验证+设计建议学时:2学时一、实验目的● 学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。
● 查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。
● 编程修改页目录和页表的映射关系,理解分页地址变换原理。
二、预备知识阅读本书第6章。
了解i386处理器的二级页表硬件机制,EOS操作系统的分页存储器管理方式,以及进程地址空间的内存分布。
三、实验内容3.1 准备实验按照下面的步骤准备本次实验:1. 启动OS Lab。
2. 新建一个EOS应用程序项目。
3.2 查看EOS应用程序进程的页目录和页表使用OS Lab打开本实验文件夹中的memory.c和getcr3.asm文件(将文件拖动到OS Lab窗口中释放即可打开)。
仔细阅读这两个文件中的源代码和注释,main函数的流程图可以参见图16-1。
按照下面的步骤查看EOS应用程序进程的页目录和页表:1. 使用memory.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中的源代码。
2. 右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。
3. 在弹出的“添加新文件”对话框中选择“asm 源文件”模板。
4. 在“名称”中输入文件名称“func”。
5. 点击“添加”按钮添加并自动打开文件func.asm。
6. 将getcr3.asm文件中的源代码复制到func.asm文件中。
7. 按F7生成修改后的EOS应用程序项目。
8. 按F5启动调试。
9. 应用程序执行的过程中,会将该进程的二级页表映射信息输出到虚拟机窗口和OS Lab“输出”窗口中,输出内容如图16-2(a)。
10. 将“输出”窗口中的内容复制到一个文本文件中。
图16-2:(a)EOS应用程序进程的二级页表映射信息(b)有应用程序进程时,系统进程的二级页表映射信息图16-2(a)中第一行是CR3寄存器的值,也就是页目录所在的页框号。
存储管理的目的是______。
A.方便用户B.提高内存利用率C.方便用户和提高内存利用率D.增加内存实际容量存储器管理的对象是主存,也称内存。
它的主要功能包括分配和回收主存空间、提高主存利用率、扩充主存、对主存信息实现有效保护。
分区存储分区存储管理又有三种不同的方式:静态分区、可变分区、可重定位分区。
静态分区静态分区存储管理是预先把可分配的主存储器空间分割成若干个连续区域,每个区域的大小可以相同,也可以不同。
为了说明各分区的分配和使用情况,存储管理需设置一张“主存分配表”。
主存分配表指出各分区的起始地址和长度,表中的占用标志位用来指示该分区是否被占用了,当占用的标志位为“0”时,表示该分区尚未被占用。
进行主存分配时总是选择那些标志为“0”的分区,当某一分区分配给一个作业后,则在占用标志栏填上占用该分区的作业名。
采用静态分区存储管理,主存空间的利用不高。
可变分区可变分区方式是按作业的大小来划分分区。
当要装入一个作业时,根据作业需要的主存量查看主存中是否有足够的空间,若有,则按需要量分割一个分区分配给该作业;若无,则令该作业等待主存空间。
由于分区的大小是按作业的实际需要量来定的,且分区的个数也是随机的,所以可以克服固定分区方式中的主存空间的浪费。
随着作业的装入、撤离,主存空间被分成许多个分区,有的分区被作业占用,而有的分区是空闲的。
当一个新的作业要求装入时,必须找一个足够大的空闲区,把作业装入该区,如果找到的空闲区大于作业需要量,则作业装入后又把原来的空闲区分成两部分,一部分给作业占用了;另一部分又分成为一个较小的空闲区。
当一作主行结束撤离时,它归还的区域如果与其它空闲区相邻,则可合成一个较大的空闲区,以利大作业的装入。
可变分区调度算法1)首次适应算法。
每次分配时,总是顺序查找未分配表,找到第一个能满足长度要求的空闲区为止。
分割这个找到的未分配区,一部分分配给作业,另一部分仍为空闲区。
这种分配算法可能将大的空间分割成小区,造成较多的主存“碎片”。
简述分页存储管理的基本原理分页存储管理是一种常见的虚拟存储器管理技术,它将物理内存划分为固定大小的页框,将逻辑地址空间划分为固定大小的页,实现了逻辑地址和物理地址之间的映射关系。
它的基本原理是将进程的逻辑地址分为页号和页内偏移两部分,通过页表来查找并将逻辑地址映射到物理地址上。
分页存储管理的基本原理包括页表、页表项和地址转换三个重要组成部分。
页表是一个记录逻辑页与物理页对应关系的表格。
每个进程都有自己的页表,页表中的每一项都对应着进程逻辑地址空间的一个页。
页表项记录了逻辑页号和物理页框号之间的映射关系,以及一些控制位信息,如有效位、保护位等。
地址转换是指将逻辑地址转换为物理地址的过程。
当进程访问一个逻辑地址时,操作系统会根据逻辑页号在页表中查找对应的页表项,如果页表项的有效位为1,表示该页表项有效,可以进行地址转换;如果有效位为0,表示该页表项无效,说明该逻辑页还没有被装入内存,需要进行页面置换操作。
如果页表项有效,则将页表项中的物理页框号与页内偏移拼接成物理地址,供CPU访问。
分页存储管理的好处是实现了逻辑地址和物理地址的分离,进程可以使用连续的逻辑地址空间编程,而不需要关心物理内存的实际分布情况。
同时,分页存储管理也提供了更大的地址空间,使得进程可以使用更多的逻辑地址。
然而,分页存储管理也存在一些问题。
首先,由于页的大小固定,可能会出现内部碎片的问题,即一个页中只有部分空间被利用,导致内存利用率下降。
其次,地址转换的过程需要访问页表,增加了访问内存的开销。
此外,页表的大小和页的大小也会影响地址转换的效率。
为了解决分页存储管理的问题,还有一些相关的技术和方法。
例如,可以采用多级页表来减小页表的规模,提高地址转换的效率。
还可以引入页面置换算法来解决内存不够用的问题,例如最常见的LRU (最近最久未使用)算法和FIFO(先进先出)算法。
分页存储管理是一种重要的内存管理技术,通过将物理内存划分为固定大小的页框,将进程的逻辑地址划分为固定大小的页,实现了逻辑地址和物理地址之间的映射关系。
存储器管理的四个基本功能
1. 内存分配:内存分配根据操作系统的内存使用模式,使用户的程序以一种有效的方式使用存储空间。
2. 内存替换:内存替换可以在无需停止或中断正在运行的程序的情况下,将内存中不需要的数据替换成新数据,以释放更多的存储空间。
3. 内存协调:内存协调能够允许操作系统与应用程序之间的相互协作,以实现最佳的内存利用率。
4. 内存保护:内存保护能够阻止未经授权访问,防止未经授权或恶意软件访问存储空间,保护数据安全和系统的完整性。
第四章存储器管理第0节存储管理概述一、存储器的层次结构1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。
但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等等多方面,同时满足用户的需求。
实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
图4-1 计算机系统存储器层次示意图2、各种存储器•寄存器、高速缓存Cache:容量很小、非常快速、昂贵、需要电源维持、CPU可直接访问;•内存RAM:容量在若干KB、MB、GB,中等速度、中等价格、需要电源维持、CPU可直接访问;•磁盘高速缓存:一般设于主存中;•多种类型的磁盘:容量在数MB或数GB,低速、价廉、不需要电源维持、CPU不可直接访问;由操作系统协调这些存储器的使用。
二、存储管理(主存管理)的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在速度、规模和成本之间获得较好的权衡。
(注意CPU和主存储器,这两类资源管理的区别)2、存储管理的主要功能:•地址重定位•主存空间的分配与回收•主存空间的保护和共享•主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。
这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存(字节)单元的编址。
●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。
四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把(程序中的)逻辑地址转换为对应的物理地址----地址映射;例如指令LOAD L,2500 /*将2500号单元内的数据送入寄存器L*/ ----P123图4-3 作业装进内存时的情况地址映射分静态和动态两种方式。
事业单位招录计算机专业知识(操作系统)模拟试卷3(题后含答案及解析)题型有:1. 单项选择题 4. 简答题单项选择题1.某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空闲),采用最佳适配(Bestfitt)算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB匕时主存中最大空闲分区的大小是( )。
A.7MBB.9MBC.10MBD.15MB正确答案:B解析:其主存容量为55MB(初始为空闲),第一步分配15MB以后还有55MB -15MB=40MB,第二步分配30MB以后还有40MB-30MB=10MB,第三步释放15MB以后有两个空闲区15MB和10MB,第四步分配8MB,则空闲区为15MB,2MB,第五步分配6MB,则空闲区为9MB,2MB,所以这个题目应该是选B。
知识模块:操作系统2.下列的哪种页面置换算法会产生Belady现象?( )A.最近最少使用(LRU)B.先进先出(FIFO)C.最近不经常使用(LFU)D.最佳(OPT)正确答案:B解析:所谓Belady现象是指,在分页式虚拟存储器管理中,发生缺页时的置换算法采用FIFO(先进先出)算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。
知识模块:操作系统3.下列哪一项存储器是指按内容访问的?( )A.虚拟存储器B.相联存储器C.高速存储器D.随机访问正确答案:B 涉及知识点:操作系统4.分区管理要求对每一个作业都分配( )的内存单元。
A.地址连续B.若干地址不连续C.若干连续的帧D.若干不连续的帧正确答案:A解析:分区存储管理是把主存储器中的用户作为一个连续区或者分成若干个连续区进行管理,每个连续区中可装入一个作业。
知识模块:操作系统5.段页式存储管理汲取了页式管理和段式管理的长处,其实现原理结合了页式和段式管理的基本思想,即( )。
操作系统第四章课后答案第四章存储器管理1. 为什么要配置层次式存储器?这是因为:a.设置多个存储器可以使存储器两端的硬件能并行工作。
b.采用多级存储系统,特别是Cache技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。
c.在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。
增加CPU中寄存器的数量,也可大大缓解对存储器的压力。
2. 可采用哪几种方式将程序装入内存?它们分别适用于何种场合?将程序装入内存可采用的方式有:绝对装入方式、重定位装入方式、动态运行时装入方式;绝对装入方式适用于单道程序环境中,重定位装入方式和动态运行时装入方式适用于多道程序环境中。
3. 何为静态链接?何谓装入时动态链接和运行时动态链接?a.静态链接是指在程序运行之前,先将各自目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开的链接方式。
b.装入时动态链接是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的一种链接方式,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找相应的外部目标模块,把它装入内存中,并修改目标模块中的相对地址。
c.运行时动态链接是将对某些模块的链接推迟到程序执行时才进行链接,也就是,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。
4. 在进行程序链接时,应完成哪些工作?a.对相对地址进行修改b.变换外部调用符号6. 为什么要引入动态重定位?如何实现?a.程序在运行过程中经常要在内存中移动位置,为了保证这些被移动了的程序还能正常执行,必须对程序和数据的地址加以修改,即重定位。
引入重定位的目的就是为了满足程序的这种需要。
b.要在不影响指令执行速度的同时实现地址变换,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程序在内存中的起始地址。
程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。
操作系统:离散分配存储管理⽅式⽬录离散分配⽅式连续分配⽅式会形成许多外部碎⽚,虽然可通过“紧凑”⽅法将许多碎⽚拼接成可⽤的⼤块空间,但紧凑的时间开销和复杂度都很⾼。
如果允许将⼀个进程直接分散地装⼊到许多不相邻接的分区中,便可充分地利⽤内存空间,也就是采⽤离散分配的⽅式。
根据在离散分配时所分配地址空间的基本单位的不同,⼜可将离散分配分为以下三种:1. 分页存储管理⽅式:将⽤户程序的地址空间分为若⼲个固定⼤⼩的“页⾯”,也将内存空间分为若⼲个页框,将⽤户程序的任⼀页放⼊任⼀物理块中;2. 分段存储管理⽅式:把⽤户程序的地址空间分为若⼲个⼤⼩不同的段,以段为单位进⾏分配,这些段在内存中可以不相邻接;3. 段页式存储管理⽅式:将分页和分段两种存储管理⽅式相结合。
分页存储管理分页存储的结构分页存储管理将进程的逻辑地址空间分成若⼲个页⾯,并为各页加以编号。
相应地也把内存的物理地址空间分成若⼲个物理块,同样也加以编号。
在为进程分配内存时,以块为单位,将进程中的若⼲个页分别装⼊到多个可以不相邻接的物理块中。
若页⾯⼤⼩设置得较⼩,可以减⼩内存碎⽚并提⾼内存利⽤率,但会造成每个进程占⽤较多的页⾯,从⽽导致进程的页表过长、占⽤⼤量内存和降低页⾯换进换出的效率。
如果选择的页⾯过⼤,虽然可以减少页表的长度,提⾼页⾯换进换出的速度,但却⼜会使页内碎⽚增⼤。
因此页⾯的⼤⼩应选择适中,且页⾯⼤⼩应是 2 的幂,通常为 1KB~8KB。
分页地址中的地址长度为 32 位,地址结构包含两部分内容。
前⼀部分为页号 P,占在 12 ~ 31 位,地址空间最多允许有 1M 页。
后⼀部分为位(偏)移量 W(页内地址),占在 0 ~ 11 位,每页的⼤⼩为 4KB。
对某特定机器的地址结构是⼀定的,若给定⼀个逻辑地址空间中的地址为 A,页⾯的⼤⼩为 L,则页号 P 和页内地址 d 可按下式求得,其中INT 是整除函数。
例如系统的页⾯⼤⼩为 1KB,设 A = 2170B,则由公式可以求得 P = 2,d = 122。
操作系统复习题一、选择题1、在可变式分区分配方案中,某一作业完成后系统收回其主存空间,并与相邻空闲区合并,为此修改空闲区表,造成空闲区数减一的情况是()。
A 无上邻空闲区,也无下邻空闲区B 有上邻空闲区,但无下邻空闲区C 有下邻空闲区,但无上邻空闲区D 有上邻空闲区,也有下邻空闲区2、分区式存储器管理方式,每个程序()。
A 一定在分区中连续,部分存放B 一定在分区中连续,整体存放C 可以在分区中不连续,整体存放D 可以在分区中连续,部分存放3、下列选项中对分段存储管理叙述正确的是()A 分段存储管理中每个段必须是大小相等的。
B 每一段必须是连续的存储区C 每一段不必是连续的存储区D 段间的存储区必须是连续的4、下列对重定位的叙述中,正确的选项是()。
A 经过静态重定位后,指令地址并不发生变化。
B 经过静态重定位后,数据地址和指令地址发生了变化C 经过动态重定位后,指令代码中的操作码和操作数地址都要发生变化。
D 经过动态重定位后,数据地址发生了变化而指令地址没有发生变化。
5、虚拟存储器功能的管理方法包括()。
A 可变分区存储管理B 基本分页存储管理C 请求分段存储管理D 段页式存储管理6、虚拟存储器的最大容量()。
A 由作业的地址空间决定B 是任意的C 由计算机的地址结构决定的D 为内、外容量之和7、操作系统为()分配内存空间。
A线程B高速缓冲存储器(Cache) C 进程 D 快表8、下面的页面置换算法中会产生所谓Belady 异常现象的是()。
(注1)A 最佳页面置换算法(OPT)B 先进先出页面置换算法(FIFO)C 最近最久未使用页面置换算法(LRU)D 最少使用页面置换算法(LFU)9、采用()不会产生内部碎片。
A 分页式存储管理B 分段式存储管理C 固定分区式存储管理D 段页式存储管理10、最佳适应算法的空闲区是()。
A 按大小递减顺序连在一起B 按大小递增顺序连在一起C 按地址由小到大排列D 按地址由大到小排列11、在可变式分区存储管理中的拼接技术可以()。
实验7分页存储器管理实验性质:验证+设计建议学时:2学时一、实验目的✍✍学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。
✍✍查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。
✍✍编程修改页目录和页表的映射关系,理解分页地址变换原理。
二、预备知识阅读本书第6章。
了解i386处理器的二级页表硬件机制,EOS操作系统的分页存储器管理方式,以及进程地址空间的内存分布。
三、实验内容3.1 准备实验按照下面的步骤准备本次实验:1. 启动OS Lab。
2. 新建一个EOS应用程序项目。
3.2 查看EOS应用程序进程的页目录和页表使用OS Lab打开本实验文件夹中的memory.c和getcr3.asm文件(将文件拖动到OS Lab窗口中释放即可打开)。
仔细阅读这两个文件中的源代码和注释,main函数的流程图可以参见图16-1。
按照下面的步骤查看EOS应用程序进程的页目录和页表:1. 使用memory.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中的源代码。
2. 右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。
3. 在弹出的“添加新文件”对话框中选择“asm 源文件”模板。
4. 在“名称”中输入文件名称“func”。
5. 点击“添加”按钮添加并自动打开文件func.asm。
6. 将getcr3.asm文件中的源代码复制到func.asm文件中。
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,或者说有几个物理页用来装载应用程序的代码、数据和堆栈?页框号分别是多少?3.3 查看应用程序进程和系统进程并发时的页目录和页表需要对EOS应用程序进行一些修改:1. 结束之前的调试。
2. 取消EOSApp.c第121行语句的注释(该行语句会等待10秒)。
3. 按F7生成修改后的EOS应用程序项目。
4. 按F5启动调试。
5. 在“Console-1”中会自动执行EOSApp.exe,创建该应用程序进程。
利用其等待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/sysproc.c文件的ConsoleCmdMemoryMap函数中(第382行)。
阅读这部分源代码后会发现,其与EOSApp.c文件中的源代码基本类似。
结合图16-2(a)和(b)回答下面的问题:✍✍EOS启动后系统进程是一直运行的,所以当创建应用程序进程后,系统中就同时存在了两个进程,这两个进程是否有各自的页目录?在页目录映射的页表中,哪些是独占的,哪些是共享的?分析其中的原因。
✍✍统计当应用程序进程和系统进程并发时,总共有多少物理页被占用?应用程序结束后,在“Console-1”中再次输入命令“mm”,查看在没有应用程序进程时,系统进程的页目录和页表。
将“输出”窗口中的内容复制到一个文本文件中。
将输出的内容与图16-2(b)比较,思考为什么系统进程(即内核地址空间)占用的物理页会减少?(提示:创建应用程序进程时,EOS内核要为其创建PCB,应用程序结束时,内核要释放PCB占用的内存。
)3.4 查看应用程序进程并发时的页目录和页表需要对EOS应用程序进行一些修改:1. 结束之前的调试。
2. 取消EOSApp.c第201行语句的注释(该行语句会等待10秒)。
3. 按F7生成修改后的EOS应用程序项目。
4. 按F5启动调试。
5. 在“Console-1”中会自动执行EOSApp.exe,创建该应用程序进程。
利用其等待10秒的时间,按Ctrl+F2切换到“Console-2”。
6. 在“Console-2”中输入“eosapp”后按回车,再执行一个EOSApp.exe。
7. 由EOSApp.exe创建的两个并发进程会先后在各自的控制台和OS Lab“输出”窗口中,输出各自的二级页表映射信息。
输出的内容如图16-3。
8. 将“输出”窗口中的内容复制到一个文本文件中。
图16-3:(a)应用程序进程1的二级页表映射信息(b)应用程序进程2的二级页表映射信息结合图16-3(a)和(b)回答下面的问题:✍✍观察这两个进程的用户地址空间,可以得出结论:同一个应用程序创建的两个并发的进程,它们的用户虚拟地址空间完全相同,而映射的物理页完全不同,从而保证相同的行为(执行过程)可以在独立的空间内完成。
假设进程1的0x41E和0x41F物理页保存了应用程序的可执行代码,由于可执行代码是不变的、只读的,现在假设优化过的EOS允许进程2共享进程1的保存了可执行代码的物理页,尝试结合图16-3写出此时进程2用户地址空间的映射信息。
并说明共享可执行代码的物理页能带来哪些好处。
✍✍统计当两个应用程序进程并发时,总共有多少物理页被占用?有更多的进程同时运行呢?根据之前的操作方式,尝试在更多的控制台中启动应用程序来验证自己的想法。
如果进程的数量足够多,物理内存是否会用尽,如何解决该问题?3.5 在二级页表中映射新申请的物理页下面通过编程的方式,从EOS操作系统内核中申请两个未用的物理页,将第一个物理页当作页表,映射基址为0xE0000000的4M虚拟地址空间,然后将第二个物理页分别映射到基址为0xE0000000和0xE0001000的4K虚拟地址空间。
从而验证下面的结论:✍✍虽然进程可以访问4G虚拟地址空间,但是只有当一个虚拟地址通过二级页表映射关系能够映射到实际的物理地址时,该虚拟地址才能够被访问,否则会触发异常。
✍✍所有未用的物理页都是由EOS操作系统内核统一管理的,使用时必须向内核申请。
✍✍为虚拟地址映射物理页时,必须首先为页目录安装页表,然后再为页表安装物理页。
并且只有在刷新快表后,对页目录和页表的更改才能生效。
✍✍不同的虚拟地址可以映射相同的物理页,从而实现共享。
首先验证第一个结论:1. 新建一个 EOS Kernel项目。
2. 从“项目管理器”打开ke/sysproc.c文件。
3. 打开本实验文件夹中的MapNewPage.c文件(将文件拖动到OS Lab窗口中释放即可)。
4. 在sysproc.c文件的ConsoleCmdMemoryMap函数中找到“关中断”的代码行(第413行),将MapNewPage.c文件中的代码插入到“关中断”代码行的后面。
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. 修改EOSApp.c中的源代码,通过编程的方式统计并输出用户地址空间占用的内存数目。
3. 修改EOSApp.c中的源代码,通过编程的方式统计并输出页目录和页表的数目。
注意页目录被复用为页表。
4. 在EOS启动时,软盘引导扇区被加载到从0x7C00开始的512个字节的物理内存中,计算一下其所在的物理页框号,然后根据物理内存与虚拟内存的映射关系得到其所在的虚拟地址。
修改EOSApp.c中的源代码,尝试将软盘引导扇区所在虚拟地址的512个字节值打印出来,与boot.lst 文件中的指令字节码进行比较,验证计算的虚拟地址是否正确。
5. 既然所有1024个页表(共4M)映射在虚拟地址空间的0xC0000000-0xC03FFFFF,为什么不能从页表基址0xC0000000开始遍历,来查找有效的页表呢?而必须先在页目录中查找有效的页表呢?编写代码尝试一下,看看会有什么结果。
6. 学习EOS操作系统内核统一管理未用物理页的方法(可以参考本书第6章的第6.5节)。
尝试在本实验第3.5节中ConsoleCmdMemoryMap函数源代码的基础上进行修改,将申请到的物理页从二级页表映射中移除,并让内核回收这些物理页。
7. 思考页式存储管理机制的优缺点。