实验目的
了解操作系统管理内存的框架、物理地址空间和逻辑地址空间的管理方式;掌握分配和回收物理内存的方法。
实验内容与记录
3.2 通过该节步骤,回答下述两个问题:
(1)EOS所管理的虚拟机的物理地址大小是多少Mbyte,其用于管理物理块使用与否的数据结构是什么?如何表示的?
① 物理内存的大小为33488896 Byte,经过计算,可得EOS所管理的虚拟机的物理地址大小是约为31.9375Mbyte
② EOS使用页框号数据库(PEN Database)来管理所有物理页。
③ PFN Database 其实是一个数组,数组中的元素是由一个结构体来定义的,数组的长度和物理存储器所包含的物理页数量是一致的。数组中的第 N 项描述了页框号为 N 的物理页的状态,并且该项还指向了具有相同状态的另一个物理页的页框号,以构成链表。
(2)零页在EOS中的作用是么?
①从物理作用来看:零页是某一物理页的状态,表示此页空闲可用,已进行零初始化,每个字节的值都是 0。
②从安全作用来看:从安全性的角度来分析,分配零页更加安全。例如,一个物理页被操作系统存储过重要的密码信息后被释放,如果没有清零就被分配给用户程序,则用户程序就可能从这个物理页中获取重要的密码信息。
3.3 回答本节书中针对分配和回收物理块所提出的问题。
(1)单步调试MiAllocateAnyPages函数的执行过程,尝试回答下面的问题:
本次分配的物理页的数量是多少?分配的物理页的页框号是多少?
① 本次分配的物理页数量是1
② 分配的物理页的页框号是0x409。
物理页是从空闲页链表中分配的?还是从零页链表中分配的?
① 因为零页的数量一直为零,所以物理页是从空闲页链表中分配的。
哪一行语句减少了空闲页的数量?哪一行语句将刚刚分配的物理页由空闲状态修改为忙状态?
①减少空闲页:
减少了空闲页的数量语句和结果如下图:箭头所指
②空闲变忙:
将刚刚分配的物理页由空闲状态修改为忙状态的语句和结果如下图:箭头所指