收藏 分享(赏)

分页存储管理模拟实验程序源代码(C语言).doc

上传人:精品资料 文档编号:10581462 上传时间:2019-12-02 格式:DOC 页数:6 大小:47.62KB
下载 相关 举报
分页存储管理模拟实验程序源代码(C语言).doc_第1页
第1页 / 共6页
分页存储管理模拟实验程序源代码(C语言).doc_第2页
第2页 / 共6页
分页存储管理模拟实验程序源代码(C语言).doc_第3页
第3页 / 共6页
分页存储管理模拟实验程序源代码(C语言).doc_第4页
第4页 / 共6页
分页存储管理模拟实验程序源代码(C语言).doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、# include # include # define pagesize 8 /页 面 尺 寸 大 小 typedf struct BLOCK /声 明 一 种 新 类 型 -物 理 块 类 型 int pagenum; /页 号 int acesd; /访 问 量 , 其 值 表 示 多 久 未 被 访 问 BLOCK; int pc; /程 序 计 数 器 , 用 来 记 录 对 应 的 页 号 int ; /缺 页 计 数 器 , 用 来 记 录 缺 页 的 次 数 staic int um320; /用 来 存 储 320条 随 机 数 BLOCK blockpagesize; /定

2、 义 一 大 小 为 8的 物 理 块 数 组 void init(); /程 序 初 始 化 函 数 int findExist(int curpage); /查 找 物 理 块 中 是 否 有 该 页 面 int findSpace(); /查 找 是 否 有 空 闲 物 理 块 int findReplace(); /查 找 应 予 置 换 的 页 面 void isplay (); /显 示 void randam(); /产 生 320条 随 机 数 ,显 示 并 存 储 到 num320 void pagestring(); /显 示 调 用 的 页 面 队 列 vi OPT();

3、 void LRU(); void FIO(); void main() int selct; printf(“请 输 入 第 一 个 随 机 数 (0320):“); radam(); printf(“*对 应 的 调 用 页 面 队 列 *n“); agestring(); do printf(“*n“); printf(“-1:OPT 2:LRU 3:FIO 4:退 出 -n“); ritf(“*n“); printf(“请 选 择 一 种 页 面 置 换 算 法 :“); scaf(“%d“, printf(“*n“); init(); switch(selct) case 1: pr

4、intf(“最 佳 置 换 算 法 OPT:n“); ritf(“*“); OPT(); break; case 2: printf(“最 近 最 久 未 使 用 置 换 算 法 LRU:n“); ritf(“*“); LRU(); break; case 3: printf(“先 进 先 出 置 换 算 法 FIO:n“); ritf(“*“); FIO(); break; while(slect!=4); void init() for(int i=0;iblockpos.acesd) pos = i; /找 到 应 该 置 换 页 面 , 返 回 BLOCK中 位 置 return po

5、s; void isplay() for(int i=0; ipagesize; i+) if(blocki.pagenum != -1) printf(“ %02d“,blocki.pagenum); printf(“n“); void randam() int flag=0; scanf(“%d“, printf(“*按 照 要 求 产 生 的 320个 随 机 数 : *n“); for(it i=0;i320;i+) numi=pc; if(lag%2=0) pc=+pc320; if(lag=1) pc=rand()%(pc-1); if(lag=3) pc=c+1(rand()%(

6、320-(pc+1); flag=+flag%4; printf(“ 03d“,numi); if(i+1)%10=0) printf(“n“); void pagestring() /显 示 调 用 的 页 面 队 列 ,页 面 号 取 法 为 随 机 数 除 10取 整 for(int i=0;i320;i+) printf(“ %02d“,numi/10); if(i+1)10=0) printf(“n“); void OPT() /最 佳 替 换 算 法 int exist,pace,positon; int curpage; for(int i=0;i320;i+) pc=numi;

7、 curpage=pc/10; exist=findExist(curpage); if(exist=-1) space=findSpace(); if(space != -1) blockspace.pagenum = curpage; display(); n=+1; els for(int k=0;kpagesize;k+) for(int j=i;j320;j+) if(block.pagenum!= numj/10) block.acesd = 10; /将 来 不 会 用 , 设 置 为 一 个 很 大 数 els block.acesd = j; break; positon =

8、 findReplace(); blockpositon.pagenum = curpage; display(); n+; printf(“缺 页 次 数 :%dn“,); printf(“缺 页 率 :fn“,(n/320.)*10); void LRU() /最 近 最 久 未 使 用 算 法 int exist,pace,positon ; int curpage; for(int i=0;i320;i+) pc=numi; curpage=pc/10; exist = findExist(curpage); if(exist=-1) space = findSpace(); if(s

9、pace != -1) blockspace.pagenum = curpage; display(); n=+1; els positon = findReplace(); blockpositon.pagenum = curpage; display(); n+; els blockexist.acesd = -1;/恢 复 存 在 的 并 刚 访 问 过 的 BLOCK中 页 面 acesd为 -1 fr(int j=0; jpagesize; j+) blockj.acesd+; printf(“缺 页 次 数 :%dn“,); printf(“缺 页 率 :fn“,(n/320.)*

10、10); void FIO() /先 进 先 出 算 法 int exist,pace,positon ; int curpage; for(int i=0;i320;i+) pc=numi; curpage=pc/10; /转 换 为 页 面 号 exist = findExist(curpage); / 查 找 物 理 块 中 是 否 有 该 页 面 ,没 有 的 话 , 置 为 -1 if(exist=-1) space = findSpace(); /查 找 是 否 有 空 的 物 理 块 , 没 有 的 话 , 置 为 -1; 有 的 话 , 把 位 置 返 回 if(space !

11、= -1) blockspace.pagenum=curpage; display(); n=+1; els positon = findReplace(); / 没 有 空 闲 物 理 块 , 进 行 置 换 blckpsito.agenum = curpage; display(); n+; blockpositon.acesd-; for(int j=0; jpagesize; j+) /把 所 有 在 页 面 里 的 页 面 号 的 访 问 次 数 加 1 blckj.acesd+; printf(“缺 页 次 数 :%dn“,); printf(“缺 页 率 :fn“,(n/320.)*10);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报