操作系统课程设计实验报告模板.docx
- 文档编号:4226355
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:24
- 大小:907.70KB
操作系统课程设计实验报告模板.docx
《操作系统课程设计实验报告模板.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计实验报告模板.docx(24页珍藏版)》请在冰豆网上搜索。
操作系统课程设计实验报告模板
操作系统课程设计
实验报告书
题目:
页面置换算法之先进先出
题目编号:
18
院系:
信息科学与技术学院
班级:
12级1班
小组成员:
组长:
张海洋
学号:
12051004
组员:
李奔
学号:
12051005
2014-12-31
目录
一、课程设计任务划分1
二、基本原理2
(一)页面置换算法定义
(二)所使用的算法
(三)设计思想
三、基本思路3
(一)流程图
(二)变量
(三)所用函数
四、调试及实验结果4
五、个人体会5
一、课程设计任务划分
(此处编辑小组成员的具体分工)
成员
具体分工
张海洋
设计项目流程
程序合并
实验报告书书写
李奔
程序调试
网上搜索程序资料
心得体会
二、基本原理
(题目所涉及课程内容,用到了那种算法,该算法的基本原理是什么?
500字以上,可加页,下同)
(一)页面置换算法定义
在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。
当发生缺页中断时操作系统必须在内存选择一个页面将其移出内 存,以便为即将调入的页面让出空间。
而用来选择淘汰哪一页的规则叫做页面置换算法。
(二)所使用的算法
1)最佳置换算法(OPT):
将以后永不使用的或许是在最
长(未来)时间内不再被访问的页面换出。
2)先进先出算法(FIFO):
淘汰最先进入内存的页面,即
选择在内存中驻留时间最久的页面予以淘汰。
3)最近最久未使用算法(LRU):
淘汰最近最久未被使用
的页面。
(三)设计思想
选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换:
OPT基本思想:
是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。
数组next[mSIZE]记录物理块中对应页面的最后访问时间。
每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。
FIFO基本思想:
是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。
或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。
LRU基本思想:
是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。
数组flag[10]标记页面的访问时间。
每当使用页面时,刷新访问时间。
发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。
三、基本思路
(源代码中定义了哪些变量,用到了哪些函数,画出流程图)
总的流程图
源代码
实验环境:
vc++,编程语言:
c语言
#include
#include
/*全局变量*/
intmSIZE;/*物理块数*/
intpSIZE;/*页面号引用串个数*/
staticintmemery[10]={0};/*物理块中的页号*/
staticintpage[100]={0};/*页面号引用串*/
staticinttemp[100][10]={0};/*辅助数组*/
/*置换算法函数*/
voidFIFO();
voidLRU();
voidOPT();
/*辅助函数*/
voidprint(unsignedintt);
voiddesignBy();
voiddownload();
voidmDelay(unsignedintDelay);
/*主函数*/
voidmain()
{
inti,k,code;
system("color0A");
designBy();
printf("┃请按任意键进行初始化操作...┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(">>>");
getch();
system("cls");
system("color0B");
printf("请输入物理块的个数(M<=10):
");
scanf("%d",&mSIZE);
printf("请输入页面号引用串的个数(P<=100):
");
scanf("%d",&pSIZE);
puts("请依次输入页面号引用串(连续输入,无需隔开):
");
for(i=0;i scanf("%1d",&page[i]); download(); system("cls"); system("color0E"); do{ puts("输入的页面号引用串为: "); for(k=0;k<=(pSIZE-1)/20;k++) { for(i=20*k;(i { if(((i+1)%20==0)||(((i+1)%20)&& (i==pSIZE-1))) printf("%d\n",page[i]); else printf("%d",page[i]); } } printf("***********************\n"); printf("*请选择页面置换算法: \t\t\t*\n"); printf("*-----------------------------------------*\n"); printf("*1.先进先出(FIFO)2.最近最久未使用(LRU)*\n"); printf("*3.最佳(OPT)4.退出*\n"); printf("***********************\n"); printf("请选择操作: []\b\b"); scanf("%d",&code); switch(code) { case1: FIFO(); break; case2: LRU(); break; case3: OPT(); break; case4: system("cls"); system("color0A"); designBy();/*显示设计者信息后退出*/ printf("┃谢谢使用页面置换算法演示器! ┃\n"); printf("┗━━━━━━━━━━━━━━━━━━┛\n"); exit(0); default: printf("输入错误,请重新输入: "); } printf("按任意键重新选择置换算法: >>>"); getch(); system("cls"); }while(code! =4); getch(); } /*载入数据*/ voiddownload() { inti; system("color0D"); printf("╔════════════╗\n"); printf("║正在载入数据,请稍候! ! ! ║\n"); printf("╚════════════╝\n"); printf("Loading...\n"); printf("O"); for(i=0;i<51;i++) printf("\b"); for(i=0;i<50;i++) { mDelay((pSIZE+mSIZE)/2); printf(">"); } printf("\nFinish.\n载入成功,按任意键进入置换算法选择界面: >>>"); getch(); } /*设置延迟*/ voidmDelay(unsignedintDelay) { unsignedinti; for(;Delay>0;Delay--) { for(i=0;i<124;i++) { printf("\b"); } } } /*显示设计者信息*/ voiddesignBy() { printf("┏━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃页面置换算法┃\n"); printf("┃12级1班┃\n"); printf("┃姓名: 张海洋,李奔┃\n"); printf("┣━━━━━━━━━━━━━━━━━━━━┫\n"); } voidprint(unsignedintt) { inti,j,k,l; intflag; for(k=0;k<=(pSIZE-1)/20;k++) { for(i=20*k;(i { if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1))) printf("%d\n",page[i]); else printf("%d",page[i]); } for(j=0;j { for(i=20*k;(i { if(i>=j) printf("|%d|",temp[i][j]); else printf("||"); } for(i=mSIZE+20*k;(i { for(flag=0,l=0;l if(temp[i][l]==temp[i-1][l]) flag++; if(flag==mSIZE)/*页面在物理块中*/ printf(""); else printf("|%d|",temp[i][j]); } /*每行显示20个*/ if(i%20==0) continue; printf("\n"); } } printf("----------------------------------------\n"); printf("缺页次数: %d\t\t",t+mSIZE); printf("缺页率: %d/%d\n",t+mSIZE,pSIZE); printf("置换次数: %d\t\t",t); printf("访问命中率: %d%%\n",(pSIZE-(t+mSIZE))*100/pSIZE); printf("----------------------------------------\n"); } /*计算过程延迟*/ voidcompute() { inti; printf("正在进行相关计算,请稍候"); for(i=1;i<20;i++) { mDelay(15); if(i%4==0) printf("\b\b\b\b\b\b\b\b\b\b\b\b"); else printf("Θ"); } for(i=0;i++<30;printf("\b")); for(i=0;i++<30;printf("")); for(i=0;i++<30;printf("\b")); } /*先进先出页面置换算法*/ voidFIFO() { intmemery[10]={0}; inttime[10]={0};/*记录进入物理块的时间*/ inti,j,k,m; intmax=0;/*记录换出页*/ intcount=0;/*记录置换次数*/ /*前mSIZE个数直接放入*/ for(i=0;i { memery[i]=page[i]; time[i]=i; for(j=0;j temp[i][j]=memery[j]; } for(i=mSIZE;i { /*判断新页面号是否在物理块中*/ for(j=0,k=0;j { if(memery[j]! =page[i]) k++; } if(k==mSIZE)/*如果不在物理块中*/ { count++; /*计算换出页*/ max=time[0]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 实验 报告 模板