页式虚拟存储管理
实验四 页式虚拟存储管理中地址转换和页式中断 FIFO
一、实验目的
深入了解页式存储管理如何实现地址转换;进一步认识页式虚拟存储管理中如何处理缺页中断以及页面置换算法。
二、实验主要内容
编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。实验具体内容包括:首先对给定的地址进行转换工作,若发现缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所做工作进行测试。
假定主存64KB,每个主存块1024字节,作业最大支持到64KB,系统中每个作业分得主存块4块。
三、实验原理
1)地址转换过程:
首先从逻辑地址中的高位取得页号,然后根据页号查页表,得到块号;然后从逻辑地址中的低位取得页内地址,将块号和页内地址合并即得到物理地址。
2)缺页中断处理
根据页号查找页表,判断该页是否在主存储器中,若该页标志位“0”,形成缺页中断。操作系统让调出中断处理程序处理中断。
四、实验方法与步骤
实现地址转换与缺页中断处理,主要考虑三个问题:第一,设计页式虚拟存储管理方式中页表的数据结构;第二,地址转换算法的实现;第三,缺页中断处理算法的实现。
1) 设计页表的数据结构
页式虚拟存储管理方式中页表除了页号和该页对应的主存块号外,至少还要包括存在标志(该页是否在主存),磁盘位置(该页的副本在磁盘上的位置)和修改标志(该页是否修改过)。在实验中页表用数组模拟,其数据结构定义如下: struct{
int lnumber; //页号
int flag; //表示页是否在主存中,“1”表示在,“0”表示不在 int pnumber; // 该页所在主存块的块号
int write; //该页是否被修改过,“1”表示修改过,“0“表示没有修改过
int dnumber; //该页存放在磁盘上的位置,即磁盘块号
}page[n]; //页表定义
2)地址转换算法的实现
地址转换是由硬件完成的,实验中使用软件程序模拟地址转换过程。在实验中,每个主存块1024字节,则块内地址占10位;主存64KB,则主存共64块,即块号占6位;物理地址共占16位;作业最大64KB,则作业最大占64块,即页号占6位,逻辑地址共占16位。(用主存的大小计算物理地址位数,用最大作业大小计算逻辑地址位数)。
在页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅把作业信息的部分页面装入主存储器,作业执行时若访问的页面在主存中,则进