FIFO页面调度算法处理缺页中断源代码及结果_第1页
FIFO页面调度算法处理缺页中断源代码及结果_第2页
FIFO页面调度算法处理缺页中断源代码及结果_第3页
FIFO页面调度算法处理缺页中断源代码及结果_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、一、 源代码 #include <cstdio>#include <cstring>#define SizeOfPage 100#define SizeOfBlock 128#define M 4 struct info/页表long textNumber;/页号 bool flag; /标志long block;/块号long disk;/在磁盘上的位置bool dirty;/修改标志pagelistSizeOfPage;long po;/队列标记long PM;int num; void init()memset(pagelist,0,sizeof(pagelist

2、);/根据实验数据初始化pagelist0.textNumber=0; pagelist0.flag=1; pagelist0.block=5; pagelist0.dirty=0;pagelist0.disk=11; pagelist1.textNumber=1; pagelist1.flag=1; pagelist1.block=8; pagelist1.dirty=0;pagelist1.disk=12; pagelist2.textNumber=2; pagelist2.flag=1; pagelist2.block=9; pagelist2.disk=13; pagelist3.te

3、xtNumber=3; pagelist3.flag=1; pagelist3.block=1; pagelist3.dirty=0;pagelist3.disk=21; pagelist4.textNumber=4; pagelist4.flag=0; pagelist4.dirty=0;pagelist4.disk=22; pagelist5.textNumber=5; pagelist5.flag=0; pagelist5.dirty=0;pagelist5.disk=23; pagelist6.textNumber=6; pagelist6.flag=0; pagelist6.dirt

4、y=0;pagelist6.disk=121; num=6; void init_ex2()po=0;P0=0;P1=1;P2=2;P3=3;init();void work()long p,q,i;char s100;bool stop=0;doprintf("请输入指令的页号、单元号,以及是否为存指令(输入exit结束循环):n");if (scanf("%ld%ld",&p,&q)!=2)scanf("%s",s);if (strcmp(s,"exit")=0)stop=1;else if(q

5、>128) printf("注意!所输入的地址单元已经越界!n请继续.n"); q=-1; elsescanf("%s",s);if (pagelistp.flag)printf("绝对地址=%ldn",pagelistp.block*SizeOfBlock+q);if (s0='Y' | s0='y')pagelistp.dirty=1;/已修改过elseif (pagelistPpo.dirty)/将更新后的内容写回外存pagelistPpo.dirty=0;pagelistPpo.flag=

6、0;/修改要调出的页标志printf("调出 %ld调入 %ldn",Ppo,p); /显示调出调入页面pagelistp.block=pagelistPpo.block;pagelistp.flag=1;/该页被调入内存Ppo=p;po=(po+1)%M;while (!stop);printf("数组P 的值为:n");for (i=0;i<M;i+)printf("P%ld=%ldn",i,Pi); void printInit() int i; printf("_n"); printf("|

7、 页号 | 标志 | 主存块号 | 修改标志 |在磁盘上的位置n"); for(i=0;i<=num;i+) if(pagelisti.flag=1) printf("| %ld | %d | %ld | %d | %ld n",pagelisti.textNumber,pagelisti.flag,pagelisti.block,pagelisti.dirty,pagelisti.disk); else printf("| %ld | %d | | %d | %ld n",pagelisti.textNumber,pagelisti.flag,pagelisti.dirty,pagelisti.disk); printf("_n"); int main()printf("初始化页表:n");init()

温馨提示

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

评论

0/150

提交评论