收藏 分销(赏)

FIFO页面调度算法处理缺页中断源代码及结果.doc

上传人:快乐****生活 文档编号:4791845 上传时间:2024-10-12 格式:DOC 页数:5 大小:54.77KB 下载积分:6 金币
下载 相关 举报
FIFO页面调度算法处理缺页中断源代码及结果.doc_第1页
第1页 / 共5页
FIFO页面调度算法处理缺页中断源代码及结果.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
一、 源代码 #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;//修改标志 }pagelist[SizeOfPage]; long po;//队列标记 long P[M]; int num; void init() { memset(pagelist,0,sizeof(pagelist)); //根据实验数据初始化 pagelist[0].textNumber=0; pagelist[0].flag=1; pagelist[0].block=5; pagelist[0].dirty=0; pagelist[0].disk=11; pagelist[1].textNumber=1; pagelist[1].flag=1; pagelist[1].block=8; pagelist[1].dirty=0; pagelist[1].disk=12; pagelist[2].textNumber=2; pagelist[2].flag=1; pagelist[2].block=9; pagelist[2].disk=13; pagelist[3].textNumber=3; pagelist[3].flag=1; pagelist[3].block=1; pagelist[3].dirty=0; pagelist[3].disk=21; pagelist[4].textNumber=4; pagelist[4].flag=0; pagelist[4].dirty=0; pagelist[4].disk=22; pagelist[5].textNumber=5; pagelist[5].flag=0; pagelist[5].dirty=0; pagelist[5].disk=23; pagelist[6].textNumber=6; pagelist[6].flag=0; pagelist[6].dirty=0; pagelist[6].disk=121; num=6; } void init_ex2() { po=0; P[0]=0;P[1]=1;P[2]=2;P[3]=3; init(); } void work() { long p,q,i; char s[100]; bool stop=0; do { printf("请输入指令的页号、单元号,以及是否为存指令(输入exit结束循环):\n"); if (scanf("%ld%ld",&p,&q)!=2) { scanf("%s",s); if (strcmp(s,"exit")==0) { stop=1; } } else if(q>128) { printf("注意!所输入的地址单元已经越界!\n请继续......\n"); q=-1; } else { scanf("%s",s); if (pagelist[p].flag) { printf("绝对地址=%ld\n",pagelist[p].block*SizeOfBlock+q); if (s[0]=='Y' || s[0]=='y') { pagelist[p].dirty=1;//已修改过 } } else { if (pagelist[P[po]].dirty) { //将更新后的内容写回外存 pagelist[P[po]].dirty=0; } pagelist[P[po]].flag=0;//修改要调出的页标志 printf("调出 %ld 调入 %ld\n",P[po],p); //显示调出调入页面 pagelist[p].block=pagelist[P[po]].block; pagelist[p].flag=1;//该页被调入内存 P[po]=p; po=(po+1)%M; } } }while (!stop); printf("数组P 的值为:\n"); for (i=0;i<M;i++) { printf("P[%ld]=%ld\n",i,P[i]); } } void printInit() { int i; printf("____________________________________________________________________\n"); printf("| 页号 | 标志 | 主存块号 | 修改标志 |在磁盘上的位置 \n"); for(i=0;i<=num;i++) { if(pagelist[i].flag==1) printf("| %ld | %d | %ld | %d | %ld \n",pagelist[i].textNumber,pagelist[i].flag,pagelist[i].block,pagelist[i].dirty,pagelist[i].disk); else printf("| %ld | %d | | %d | %ld \n",pagelist[i].textNumber,pagelist[i].flag,pagelist[i].dirty,pagelist[i].disk); } printf("____________________________________________________________________\n"); } int main() { printf("初始化页表:\n"); init(); //打印页表 printInit(); init_ex2(); work(); //算法分析 return 0; } 二、 结果如下: A、初始化页表 B、测试数据 I、未发生缺页中断时 2、发生缺页中断时 3、退出时显示现在主存中的页面号(即数组的值)。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服