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

虚拟存储器的管理和技术有哪些我们很多的人应该都听说过虚拟存储器,今天,本文为大家带来的是虚拟存储器管理方面的知识,虚拟存储器管理是怎么样的,它又有哪些类型呢。
一、分区式存储管理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) 单用户操作系统单用户操作系统特征:个人使用:整个系统由一个人操纵,使用方便。
第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
磁盘存储管理

磁盘访问时间
传输时间Tt 这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。
Tt的大小与每次所读/写的字节数b和旋转速度有关:
被访问的下
移动距离
一个磁道号
(磁道数)
55
45
58
3
39
19
18
21
90
72
160
70
150
10
38
112
184
146
平均寻道长度: 55.3
有9个进程先后提出磁盘I/O请求。进程(请求者)按发出请求的先后次序排 队。平均寻道距离为55.3条磁道,该方法平均寻道距离较大,故FCFS算法 仅适用于请求磁盘I/O的进程数目较少的场合。
20
150
132
160
10
184
24
平均寻道长度: 27.5
SSTF算法的平均每次磁头移动距离明显低于FCFS的距离,因而较FCFS 有更好的寻道性能,曾被广泛采用。
FCFS调度算法
磁盘调度
SSTF调度算法
扫描(SCAN)算法
进程“饥饿”现象
SSTF算法虽然能获得较好的寻道性能,但却可能导致某 个进程发生“饥饿”(Starvation)现象。
1b Ta Ts 2r rN
磁盘访问时间
Ta
Ts
1 2r
b rN
• 由上式可以看出,在访问时间中,寻道时间和旋转延迟时间与所读/ 写数据的多少无关,它通常占据了访问时间中的大部分。
• 例如,假定寻道时间和旋转延迟时间平均为20 ms,而磁盘的传输速 率为10 MB/s,如果要传输10 KB的数据,此时总的访问时间为21 ms, 可见传输时间所占比例是非常小的。当传输100 KB数据时,其访问时 间也只是30 ms,即当传输的数据量增大10倍时,访问时间只增加约 50%。
磁盘存储器的管理课件

磁盘备份与恢复
备份与恢复概述
备份是为了防止数据丢失而将数据复制到其他存储介质的过程,恢复则是将备份的数据还 原到原始位置的过程。
备份策略
根据数据的重要性和业务需求,可以选择不同的备份策略,如完全备份、增量备份和差异 备份等。这些策略各有优缺点,需要根据实际情况进行选择。
恢复流程
恢复流程包括从备份中提取数据、将数据还原到原始位置等步骤。在恢复过程中,需要注 意数据的一致性和完整性,以确保数据的可靠性。
02
磁盘存储器的技术原理
磁盘存储器的物理结构
磁盘片是存储数据的表面,通常 由金属材料制成。
磁盘驱动器是整个磁盘存储器的 控制中心,负责控制磁头的读写 操作和磁盘片的旋转。
01
02
磁盘存储器由磁盘驱动器、磁盘 片和磁头组成。
03
磁头是读写数据的装置,通过悬 浮在磁盘片上方来读写数据。
04
磁盘存储器的数据存储方式
文件系统是操作系统中用于管理磁盘存储空间的软件,它能够记录文件在磁盘上的存储 位置、大小等信息。
常见文件系统
常见的文件系统有FAT32、NTFS、EXT4等。不同的文件系统有不同的特点和适用场景。
文件系统管理任务
文件系统管理主要包括创建文件系统、格式化文件系统、挂载与卸载文件系统等任务。 这些任务能够保证文件系统的正常运行和数据的完整性。
数据以二进制的形式存储在磁盘上,以“位 ”为单位。
每个位都有一个对应的地址,通过该地址可 以访问到该位的数据。
数据以簇为单位进行存储,一个簇包含若干 个位。
磁盘上的数据按照柱面、扇区和簇的层级结 构进行组织和管理。
磁盘存储器的读写原理
当需要读取数据时,磁盘驱动器会控制磁头 定位到相应的数据所在的柱面,并等待该柱 面旋转到磁头下方。
《计算机操作系统》课件第4章

第四章 存 储 器 管 理
3. 运行时动态链接(Run-time Dynamic Linking) 在许多情况下,应用程序在运行时,每次要运行的模块 可能是不相同的。但由于事先无法知道本次要运行哪些模块, 故只能是将所有可能要运行到的模块全部都装入内存,并在 装入时全部链接在一起。显然这是低效的,因为往往会有部 分目标模块根本就不运行。比较典型的例子是作为错误处理 用的目标模块,如果程序在整个运行过程中都不出现错误, 则显然就不会用到该模块。
2
第四章 存 储 器 管 理
4.1.1 多层结构的存储器系统 1. 存储器的多层结构 对于通用计算机而言,存储层次至少应具有三级:最高
层为CPU寄存器,中间为主存,最底层是辅存。在较高档的 计算机中,还可以根据具体的功能细分为寄存器、高速缓存、 主存储器、磁盘缓存、固定磁盘、可移动存储介质等6层。 如图4-1所示。
19
第四章 存 储 器 管 理
4.3 连续分配存储管理方式
4.3.1 单一连续分配 在单道程序环境下,当时的存储器管理方式是把内存分
为系统区和用户区两部分,系统区仅提供给OS使用,它通常 是放在内存的低址部分。而在用户区内存中,仅装有一道用 户程序,即整个内存的用户空间由该程序独占。这样的存储 器分配方式被称为单一连续分配方式。
9
第四章 存 储 器 管 理
4.2 程序的装入和链接
用户程序要在系统中运行,必须先将它装入内存,然后 再将其转变为一个可以执行的程序,通常都要经过以下几个 步骤:
(1) 编译,由编译程序(Compiler)对用户源程序进行编译, 形成若干个目标模块(Object Module);
(2) 链接,由链接程序(Linker)将编译后形成的一组目标 模块以及它们所需要的库函数链接在一起,形成一个完整的 装入模块(Load Module);
分页存储器管理

实验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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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. 思考页式存储管理机制的优缺点。