本实验通过构建请求调页存储管理系统模型,探讨虚拟内存机制,并进行页面置换算法的仿真分析。参与者将掌握操作系统中内存管理的核心技术与实践方法。
假设每个页面可以存放10条指令,并且分配给作业的内存块数为4个。用C语言编写程序模拟一个包含320条指令(即地址空间是32页)的作业执行过程,初始状态下所有页都未调入内存。在模拟过程中,如果访问到已存在于内存中的指令,则显示其物理地址并转向下一条;若所访问的指令还未装入内存,则发生缺页,并记录缺页次数同时将相应页面调入内存中。当4个内存块均已存满该作业相关数据时需要进行页面置换操作,随后同样输出物理地址转至执行后续指令。
程序运行结束后应计算并展示整个过程中发生的缺页率。本任务要求分别采用最佳置换算法(OPT)、先进先出法(FIFO)和最近最久未使用算法(LRU)来实现内存管理功能。
作业中指令的访问次序遵循以下规则生成:
- 50%的指令为顺序执行;
- 另外25%随机分布在前地址部分,即[0, m+1]区间内某处;
- 最后剩余25%则均匀散布于后半段地址空间[m1+2,319]之间。
具体生成流程如下:
从[0至319]的指令序列中选取一个随机起点m;随后按顺序执行下一条,即访问序号为(m+1)的指令。接着通过随机函数选择跳转到前段地址区间内某条已确定过的指令处(其编号记作m1),然后继续顺次进行访问操作至下一个目标地址点m1+1。同样地,在到达该位置后,程序会再次利用随机数机制选定位于[m1+2,319]范围内的另一特定指令作为新的执行起点(m2),并开始下一轮迭代直至完成全部320条指令的处理过程。
通过这种方式生成访问序列,并依据上述三种不同策略实施内存管理操作。