C语言模拟实现虚拟存储管理(请求分页存储管理)

这篇博客介绍了如何使用C语言模拟请求分页存储管理,重点是硬件地址转换和FIFO页面置换算法。实验目标是理解页式虚拟存储管理,掌握硬件地址转换和缺页中断处理。内容涵盖实验目的、内容、基本原理、数据结构和模块划分,并提供了源代码和运行结果分析。
摘要由CSDN通过智能技术生成

C语言模拟实现虚拟存储管理(请求分页存储管理)使用FIFO算法
1)实验目的
2)实验内容
3)实验基本原理和解决方案
4)数据结构、模块划分
5)画出程序的基本结构框图和流程图(包括主程序流程图、模块详细设计流程图等),对程序的每一部分要有详细的设计分析说明,说明设计实现所用的原理。
6)源代码,要求格式规范,适当加注释,以有助于说明问题为宜,注释不少于三分之一。
7)运行的结果,要求有对结果的分析
8)参考资料
一、实验目的
存储管理的主要功能之一是合理的分配空间。请求分页存储管理是一种常用的虚拟存储管理技术。本实验的目的是:通过编程模拟实现请求分页存储管理中硬件地址转换过程、缺页中断处理过程,以及先进先出页面置换算法,加深对页式虚拟存储管理的理解,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换方法;通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。

二、实验内容
阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。
(1)用C语言实现对分页式存储管理中的硬件的地址转换和产生缺页中断。
(2)设计页表。
页式虚拟存储系统是把作业的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式为:
页 号 标志 主存块号 修改标志 在磁盘上的位置

其中:
标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存中,标志位=0,则表示该页尚未装入主存。
主存块号——用来表示已经装入主存的页所占的物理块号。
修改标志——用来表示已经装入主存的页是否被修改过。为,则表示该页装入主存后被修改过;为0,则表示该页该页装入主存后未被修改过。
在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。
可根据页面置换算法的不同,页表的内容可以作适当的增删。

三、实验基本原理和解决方案
(1)地址计算。
作业执行时,先根据指令中的逻辑地址算出参加运算的操作数存放的页号和页内地址,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,根据关系式:
绝对地址=块号*块长+页内地址
计算出欲访问的主存单元地址。按计算出的绝对地址可以取到操作数,完成一条指令的执行。若访问的页标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,由OS按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。
(2)设计“地址转换”程序模拟硬件的地址转换工作。
当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断,执行缺页中断程序。该模拟程序的算法如下图所示。

地址转换模拟流程图
(3) 缺页中断模拟。
在页式虚拟存储系统中,当硬件发出缺页中断请求后,引起操作系统来处理这个中断事件。如果主存有空闲物理块,则调入该页并修改页表;如果主存中没有空闲物理块,则可用FIFO页面置换算法或者LRU页面置换算法从该作业中在主存的页面中选一页淘汰,被淘汰的页是否需要重新写回磁盘,由修改标志决定。然后再把当前要访问的页装入该块。调出和装入后都要修改页表中的相应信息。
四、数据结构、模块划分
(1)存放页表的结构体
struct info //页表信息结构体
{
int pageno;
int flag; //页标志,1表示该页已在主存,0表示该页不在主存
int block; //块号
char disk[10]; //在磁盘上的位置
int dirty; //更新标志(修改标志)

}pagelist[SizeOfPage];
(2)存放操作数、逻辑地址以及页表信息的结构体
struct work{
char operands[10];
long adress;
int pagenum; //页号
int page_local;//页内地址
int sign; //标志
int Block;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值