虚存 级软件 班许小颖
Nachos 虚存实验报告
一、 实验名称:
虚存
二、 实验目的:
本实验牵涉到 虚存子系统的部分实现,也是第一次用到 的虚拟机。测
试代码是一组覆盖了绝大部分虚存空间的数组操作,该虚存空间被映射到 个物理页中。
地址转换和页表结构已给出。本实验的目的是要实现缺页处理程序,这需要在适当的
时候将某些页面替换出入。为了减少缺页和将页面从内存淘汰到磁盘的次数,要求实现以
下五种页面替换算法:
()算法
()算法
算法
算法
算法
三、 实验步骤
1. 预备
!"素材:
本 实 验 的 源 代 码 是 ##$% 文 件 。 复 制 到 本 地 目 录 后 解 包 , 要 在
&$ 子 目 录 下 工 作 , 也 需 阅 读 文 件 ''% , '$'% , #
% , #(#% , 和 )*% 。 本 实 验 需 修 改 文 是 ###% 和
###%$$。
!"分析代码:
每个地址空间都有相应的页表,页表中的每一项称为页表条目。在本实验中,我们会
牵涉到其中的三个主要字段:+、,-./ 和 0 1-,,它们在 #% 中有详细描
述。
$ 结构包含了 进程地址空间的所有信息:页表、页表长度等,以及操作地
址空间的函数。当创建了一个新的进程时,该结构也就随之产生并初始化。所提供的代码
已实现了页面调度机制,在该机制中,仅在一个执行进程访问页面时,才将它从可执行的
源文件中读入物理内存。所以,在进程刚创建时,页表中的所有条目都是初始化为无效的
(所有页表条目的有效位都置为 2)。然而,访问这样的页面(不属于任何程序段)一
般来说是不合法的。当初始化一个页表时,要生成一个报告,该报告说明哪些页面的访问
是合法的,而哪些页面的访问是不合法的(1 字段)。每个可执行程序都以一个头开始,