分存储器管理

合集下载

分区存储管理

分区存储管理
分区存储管理
1、单用户连续分区存储管理
单一连续分区:把内存储器分为两个区,一个分区固定分配给操 作系统使用,另一个分配给用户使用,称作“用户区” 系统特点:1、系统总是把整个用户区分配给一个用户使用 2、内存用户区又被分为“使用区”和“空闲区”两部分 3、当作业被调度时就获得全部空间 4、作业运行完后,全部主存空间又恢复成空闲(以上所指 的全部主存空间是全部用户区空间) 对于连续区分配而言,虽然这种管理方案不需要专门的硬件,但是应 有硬件保护机构,以确保用户程序不至于偶然或无意地干扰系统区中 的信息 使用界限寄存器的方法。界限寄存器中存放用户程序的起始地址 和终止地址,作业运行时,检查访问指令或数据的地址,若不在界限 寄存器所框住的范围内,则发生越界中断。

区 1 2 3 4

起 始 地 址 20KB 28KB 60KB 124KB
长 8KB 32KB 64KB

使 用 标 志 作业1 作业6 0 作业2
132KB
地址重定位与存储保护
在采用固定分区存储管理这种存储管理方式时,应该对程序实行静态 重定位。不仅要防止用户程序对操作系统形成的侵扰,也要防止用户程序 与用户程序之间形成的侵扰。因此必须在CPU中设置一对专用的寄存器,用 于存储保护。
3、可变分区存储管理
内存的分配:内存不是预先划分好的,而是当作业装入时,根据作业的需求和内 存空间的使用情况来决定是否分配。若有足够的空间,则按需要分割与作业相对 地址空间同样大小分区给该进程;否则令其等待主存空间
最先适应算法
最佳适应算法
最坏ቤተ መጻሕፍቲ ባይዱ应算法
2、固定分区存储管理
“固定分区”存储管理的基本思想:预先把内存储器中可供分配的 用户区事先划分成若干个连续的分区,每个分区的尺寸可以相同, 也可以不同。划分后,内存储器中分区的个数以及每个分区的位置、 尺寸保持不变。每个分区中只允许装入一个作业运行。

虚拟存储器的管理和技术有哪些

虚拟存储器的管理和技术有哪些

虚拟存储器的管理和技术有哪些我们很多的人应该都听说过虚拟存储器,今天,本文为大家带来的是虚拟存储器管理方面的知识,虚拟存储器管理是怎么样的,它又有哪些类型呢。

一、分区式存储管理1、这类型的存储管理方法管理起来不复杂比较的简单,它的不足之处就会会对于内存空间造成大量的浪费,早期的单一用户以及单一任务的控制装置,把内存空间进行划分,形成两个分区,为我们的用户区域以及系统区域。

我们的操作系统则采用的是系统区域;应用程序则使用的是我们的用户区域,同时的可以对用户区域的所有的空间进行利用。

2、为了达到多个程序同时的一起被执行,在我们现代的控制系统里面则加入了分区式的存储方法管理,将内存划分为很多个区域,操作系统使用里面的其中一个区域,所有的剩下的区域则由应用程序进行利用,各个应用程序占据里面的一个或者是几个区域。

3、按照划分区域的空间有没有固定,又能够吧分区式的存储管理划分成为固定区域以及动态区域两个区域。

二、交换技术和分区技术1、按照程序的部分性的为原理,在一个不是很长的时间端里面,程序进行访问的存储器位置占有比较大的比例集聚在存储器位置比较少的空间里面。

交换技术则是采用了程序的部分性原理达到多个任务同时的进行环境存储管理工作。

2、交换的进程里面通过换入以及换出这两个进程构成,换入的进程把外村交换区的数据以及程序代码进行交换到内存里面,换出的进程则是把内存里面的数据进行交换到外村交换里面中去。

3、操作控制装置不会立刻的执行程序代码在外存里面进行保存的工作,同时的把这些过程排到过程请求中的长期调度里面中去,队列里面的一些过程被调进主存里面进行执行,当因为输入以及输出等操作而造成存储器里面没有过程处于准备就绪的情况时,操作装置就会把一些进程交换到外存里面来,同时的排进中期里面中去。

4、交换技术的优势则是将同时运行的进程的数量加大。

不足之处则是换入以及换出的工作把处理机的时间开销加长同时交换的单位是所有的进程地址的容积,并无思考程序运行的进程里面地址访问进行统计的功能。

第十一讲存储器管理之连续分配方式

第十一讲存储器管理之连续分配方式

第十一讲存储器管理之连续分配方式连续分配是指将存储器中的空间按照一定的方式连续划分给进程使用的一种存储器管理方式。

常见的连续分配方式有三种:单一连续分配方式、固定分区分配方式和动态分区分配方式。

单一连续分配方式是最简单的分配方式,每个进程只有一个连续的存储区域。

操作系统将整个存储器分成两部分,一部分为操作系统占用,另一部分为用户程序占用。

优点是实现简单,缺点是无法有效利用存储器空间和不能同时运行多个程序。

2.固定分区分配方式固定分区分配方式是将存储器划分成若干个固定大小的区域,每个区域对应一个作业或进程。

每个进程的大小必须小于等于所分配的存储区域大小。

操作系统为每个进程分配存储空间时,优先从大小与所需存储空间最接近的空闲分区开始分配。

优点是管理简单,缺点是会导致存储空间的浪费和外部碎片的产生。

3.动态分区分配方式动态分区分配方式是将存储器分为多个大小不等的存储块,每个进程可以根据需要分配不同大小的存储块。

当新的进程需要存储空间时,操作系统从存储器的起始地址开始查找,找到第一个可用空闲块,并将其分配给进程。

优点是存储空间利用率高,可以同时运行多个进程,但缺点是会导致内部碎片的产生。

对于动态分区分配方式,还可以采用三种具体的分区算法:a. 首次适应算法(First Fit):从前向后遍历所有空闲分区,找到第一个大小大于或等于所需存储空间的空闲分区进行分配。

优点是速度快,但容易产生较多的碎片。

b. 循环首次适应算法(Next Fit):与首次适应算法类似,但从上一次分配的位置开始查找,减少了空闲分区的时间。

可以避免每次都从头开始,但仍会产生较多的碎片。

c. 最佳适应算法(Best Fit):从所有空闲分区中找到最小且大于所需存储空间的空闲分区进行分配。

优点是最大限度地避免碎片,但速度相对较慢。

综上所述,连续分配方式是一种常见的存储器管理方式。

根据应用场景和需求不同,可以选择合适的连续分配方式来管理存储器,以实现存储空间的高效利用和进程的有效管理。

第十一讲存储器管理之连续分配方式

第十一讲存储器管理之连续分配方式

第十一讲存储器管理之连续分配方式所谓连续分配方式:是指为一个用户程序分配一个连续的内存空间。

又可把连续分配方式分为:单一连续分配,固定分区分配,动态分区分配,动态重定位分区分配,四种方式。

1 单一连续分配(单独分区分配)最简单的一种存储管理方式,但只能用于单用户、单任务的OS中。

概念:单一连续分配就是整个主存区域的用户空间均归一个用户作业使用。

存储管理方法:将内存分为系统区(内存低端,分配给OS用)和用户区(内存高端,分配给用户用)。

其中用户区是指除了系统区外的内存空间,提供给用户程序使用。

采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存。

主要特点:管理简单,只需小量的软件和硬件支持,便于用户了解和使用。

但因内存中只装入一道作业运行,内存空间浪费大,各类资源的利用率也不高。

例子:一个容量为256KB的内存,操作系统占用32KB,剩下224KB全部分配给用户作业,如果一个作业仅需64KB,那么就有160KB的存储空间被浪费。

2 固定分区分配分区分配方式是满足多道程序设计需要的一种最简单的存储管理方法。

2.1 思想:将内存分成若干个分区(大小相等/不相等),除OS占一区外,其余的每一个分区容纳一个用户程序。

这样来实现多道并发。

2.2 分区划分方法:分区大小相等,分区大小不等。

但事先必须确定,在运行时不能改变。

即分区大小及边界在运行时不能改变。

2.3 内存分配:首先:要先建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)。

其次:当某个用户程序要装入内存时,由内存分配程序检索分区说明表,从表中找出一个满足要求的尚未分配的分区分配该程序,同时修改说明表中相应分区的状态;若找不到大小足够的分区,则拒绝为该程序分配内存。

第三:当程序执行完毕,释放占用的分区,管理程序将修改说明表中相应分区的状态为未分配,实现内存资源的回收。

2.4 特点主要特点:管理简单,但因作业的大小并不一定与某个分区大小相等,从而使一部分存储空间被浪费。

分页存储管理

分页存储管理

5(内存块号)
100(页内地址)
内存地址寄存器
图 页式地址变换过程
写出下图中逻辑地址2500所对应的物理地址
5k 第5页
6k
第6页
作业1的地址空间
5 7 9 15 13 10 16
页表
作业图1的地址页空式间 管理的示页表意图
0
5k
6k
7k
8k
9k
10k
11k
12k
13k
14k
15k
16k
...
17k
31k
主存空间
▪ 例:作业地址空间共有7个页, 每 页 的 相 对 地 址 为 0~1023 , 1024~2047 , 2048~3071 , … , 6144~6150 。 其 对 应 的 主 存 块 在 页表中已列出。分别为5,7,9, 15,13,10,16共7块。假定页 表在主存始址为500。若该程序 从第0页开始运行,且现程序计 数器内容为:
4.3.2地址变换(映射)机构
1 .基本的地址变换机构 地址变换机构的基本任务是利用页表把用户程序中的逻辑地 址变换成内存中的物理地址,实际上就要将用户程序中的页 号变换成内存中的物理块号。为了实现地址变换功能,在系 统中设置页表寄存器,用来存放页表的始址和页表的长度。 在进程未执行时,每个进程对应的页表的始址和长度存放在 进程的PCB中,当该进程被调度时,就将它们装入页表寄存 器。在进行地址变换时,系统将页号与页表长度进行比较, 如果页号大于页表寄存器中的页表长度,则访问越界,产生 越界中断。如未出现越界,则根据页表寄存器中的页表始址 和页号计算出该页在页表项中的位置,得到该页的物理块号, 将此物理块号装入物理地址寄存器中。与此同时,将有效地 址(逻辑地址)寄存器中页内地址直接装入物理地址寄存器 的块内地址字段中,这样便完成了从逻辑地址到物理地址的 变换。

第4章4-5节基本分页、分段存储管理方式

第4章4-5节基本分页、分段存储管理方式
页表
页号
计算公式:物理地址 块号 页面大小+块内地址 块号*页面大小 计算公式:物理地址=块号 页面大小 块内地址
0 1
块 号 2 4 6 7
逻辑地址3500:
页号:3500/1024=3 对应物理块号:7 页内地址:428
2 3
故物理地址为: 7*1024+428=7596
逻辑地址4500:
页号:4500/1024=4
第四章 存 储 器 管 理
问题:
在分页系统中,内存的利用率是不是就 可以达到100%了? 由于进程的最后一页经常装不满一块 而形成了不可利用的碎片,称之为“页内 页内 碎片”。 碎片
第四章 存 储 器 管 理
2) 页面大小 在分页系统中的页面其大小应适中: 页面 太小 太大 页面数 分配时间 多 少 长 短 内存碎片 减小 变大 内存利 用率 高 低
n
1742 外部页表
1023 0 1 2 第n页页表 1468
图 4-4 两级页表结构 1023
… … … 内存空间
114 1151468第四章 存 Nhomakorabea 器 管 理
(2)地址变换机构
外部页号 P1 外部页内地址 页内地址 P2 d
逻辑地址
外部页表寄存器

… 外部页表

… 页表
b d 物理地址
图 4-5 具有两级页表的地址变换机构
第四章 存 储 器 管 理
4.4.2 地址变换机构
假设页面大小为1K 假设页面大小为
1. 基本的地址变换机构
越界中断 逻辑地址 3100 页表寄存器
页表始址 页表长度

页号 3
页内地址 28
块号 页号 0 1 2 3 … 页表 物理地址 9244 1 3 4 9

分级存储管理的四大优点

分级存储管理的四大优点

分级存储管理的四⼤优点
本篇⽂章将为⼤家详细介绍分级存储管理的优点,⼴⼤读者可以通过此篇⽂章了解到⾃⼰的系统适不适合进⾏分级存储。

希望能对读者有所帮助。

数据分级存储之所以重要,是因为它既能最⼤限度地满⾜⽤户需求,⼜可使存储成本最⼩化。

数据分级存储管理的优点具体表现在:
1.减少总体存储成本
不经常访问的数据驻留在较低成本的存储器中,可综合发挥磁盘驱动器的性能优势与磁带的成本优势。

2.性能优化
分级存储管理可使不同性价⽐的存储设备发挥最⼤的综合效益。

分级存储管理
3.改善数据可⽤性
分级存储管理把很少使⽤的历史数据迁移到辅助存储器中,或归档到离线存储池中,这样就⽆需反复保存,减少了存储的时间;同时提⾼了在线数据的可⽤性,使磁盘的可⽤空间维持在系统要求的⽔平上。

4.数据迁移对应⽤透明
进⾏分级存储管理后,数据移动到另外的存储器时,应⽤程序不需要改变,使数据迁移对应⽤透明。

分页存储器管理

分页存储器管理

实验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寄存器的值,也就是页目录所在的页框号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验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. 思考页式存储管理机制的优缺点。

相关文档
最新文档