甲醇相关股票:本人请计算机操作系统高手编程

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 19:14:35
请用c语言编写程序代码:
三、 内容
编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所做工作进行测试。
条件:假定页的大小为1024字节,作业最大支持到64KB,系统中每个作业分得主存块为m块(m=4)。
四、 提示
页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅把作业信息的一部分页面装入主存,作业执行时若访问的页面在主存中,则进行地址转换;若访问的页面不在主存中,则产生一个“缺页中断”,由操作系统把当前所需 的页面装入主存,再进行地址转换。
页表除页号和该页对应的主存块号外,至少还要包括存在标志(该页是否在主存),磁盘位置(该页在磁盘上的位置)和修改标志(该页是否修改过)。
设计中,页表可用数组模拟,定义为:
define n 64 //假定的页表长度,页表的长度实际上是由系统按照作业长度决定的
struct
{ int lnumber; //页号
int flag; //表示该页是否在主存,“1”表示在;“0”表示不在
int pnumber; //该页所在主存块的块号
int write; //该页是否被修改过,“1”表示修改过,“0”表示没有修改过
int dnumber; //该页存放在磁盘上的位置,即磁盘块号
} page[n]; //页表定义
缺页处理过程:
因为是模拟硬件工作,所以程序中如果访问的页不在主存时,则输出该页页号,表示硬件产生缺页中断,然后转去直接处理缺页问题。
可采用先进先出页面调度算法淘汰一页,调入所需页面。因为没有启动磁盘的工作,所以淘汰的页需要写回磁盘时,用输出页号表示。
调入新的一页时,将该页在页表中的存在标志置为“1”,输出页号表示将该页调入主存。

a