请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换
算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的
理解。
本实验要求使用 C 语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、
并在缺页中断发生时分别使用 FIFO 和 LRU 算法进行页面置换的情形。其中虚页的个数可以事
先给定(例如 10 个),对这些虚页访问的页地址流(其长度可以事先给定,例如 20 次虚页访
问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程
中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,
来比较两种置换算法的稳定性。
本设计利用 C 语言的结构体来描述虚页和实页的结构。
在虚页结构中,pn 代表虚页号,因为共10 个虚页,所以 pn 的取值范围是 0—9。pfn 代表实
页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页
的实页号 pfn。time 项在 FIFO 算法中不使用,在 LRU 中用来存放对该虚页的最近访问时间。
在实页结构中中,pn 代表虚页号,表示 pn 所代表的虚页目前正放在此实页中。pfn 代表实页号,
取值范围(0—n-1)由动态指派的实页数n 所决定。next 是一个指向实页结构体的指针,用于多个
实页以链表形式组织起来,关于实页链表的组织详见下面第
4 点。
为计算命中率,需要统计在20 次的虚页访问中命中的次数。为此,程序应设置一个计数器count,
来统计虚页命中发生的次数。每当所访问的虚页的 pfn 项值不为-1,表示此虚页已被装入某实页内,
此虚页被命中,count 加 1。最终命中率=count/20*100%。
3.LRU 算法中“最近最久未用”页面的确定
为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问
一个虚页面时, countime 的值加 1,然后将所要访问的虚页的 time 项值设置为增值后的当前