操作系统报告三(共5页)_第1页
操作系统报告三(共5页)_第2页
操作系统报告三(共5页)_第3页
操作系统报告三(共5页)_第4页
操作系统报告三(共5页)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验3 存储器管理模拟实验一、实验目的1 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解;2 熟悉虚存管理的各种页面淘汰算法;3 通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二、实验准备1虚拟存储器的管理方式l 段式管理l 页式管理l 段页式管理2页面置换算法l 先进先出置换算法l 最近最久未使用置换算法l Clock置换算法l 其他置换算法三、实验内容1 实验题目设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得 50

2、的指令是顺序执行的。25的指令均匀地散布在前地址部分,25的地址是均匀地散布在后地址部分。为简单起见。页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。2 具体做法产生一个需要访问的指令地址流;指令合适的页面尺寸(例如以 1K或2K为1页);指定内存页表的最大长度,并对页表进行初始化;每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按 FIFO页面淘汰算法淘汰一页后调入所

3、需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。3 存储管理算法的流程图四、相关代码#include <stdio.h>#include <stdlib.h>#define BUSY 0#define NOTBUSY 1struct Page int PNumber; /页号 int BNumber; /物理块号 int Count; /计数器 bool State; /状态位 Page6=0,2,3,true,1,1,2,true,2,-1,0,false,3,0,1,true,4,-1,0,false,5,-1,0,false; /对页表进行初始化/利用结

4、构体数组存储页表struct Physical int BNumber; /物理块号 int State; /状态位 Physical3=0,1,1,1,2,1; /利用结构体数组初始化页框int main() int P, BNumber; int i, j, k; int MaxSzie, MaxCount = 0; printf("nPlease input the size of the course:"); scanf("%d",&MaxSzie);/输入进程大小 int Address; printf("nPlease in

5、put the address:"); scanf("%d",&Address);/输入要访问的地址 while(Address < 0 | Address > MaxSzie) printf("ERROR"); printf("nPlease input the address again:"); scanf("%d",&Address); P = Address / 1024; for (i = 0; i <= 5; i+) if (Pagei.PNumber = P

6、 && Pagei.State = true) /在页表中并 在主存中 printf("n页在主存,打印页表:"); printf("n*n页号:%dn物理块号:%dn状态:%dn*n",Pagei.PNumber,Pagei.BNumber,Pagei.State); for(i = 0; i <= 5; i+) if (Pagei.PNumber = P && Pagei.State = false) printf("n在辅存"); /判断页面是否已满 if(Physical0.State =

7、 BUSY && Physical1.State = BUSY && Physical2.State = BUSY) for (j = 0; j <= 5; j+) if (Pagej.Count >= MaxCount && Pagej.State = true) MaxCount = Pagej.Count; k = j; BNumber = Pagek.BNumber; Pagek.Count = 0; Pagek.State = false; Pagei.BNumber = BNumber; Pagei.State = tru

8、e; /修改count for (j = 0; j <= 5; j+) if (Pagej.State = true) Pagej.Count = Pagej.Count + 1; /淘汰页面,重新调入 printf("/n页在辅存并已调入主存,打印页表:"); printf("n*n页号:%dn物理块号:%dn状态:%dn*n",Pagei.PNumber,Pagei.BNumber,Pagei.State); else for (j = 0; j <= 2 ; j+) if (Physicalj.State = NOTBUSY) Pagei.BNumber = Physicalj.BNumber; Pagei.State = true; for (j = 0; j <= 5; j+) if (Pagej.State = true) Pagej.Count = Pagej.Count + 1; printf("/n页在辅存,打印页表:"); printf("n*n页号:%dn物

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论