操作系统课程设计格式及要求.docx
- 文档编号:9350384
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:14
- 大小:89.13KB
操作系统课程设计格式及要求.docx
《操作系统课程设计格式及要求.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计格式及要求.docx(14页珍藏版)》请在冰点文库上搜索。
操作系统课程设计格式及要求
计算机科学与应用系
课程设计报告
操作系统原理
姓名
徐光辉
学号
111096135
指导教师
齐艳科
专业
计算机科学与技术
日期
2012年5月25日
成绩
题目
1.请求调页存储管理
2.
指
导
教
师
评
语
题目一:
请求调页存储管理
一、实验目的
通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。
二、实验内容
1.假设每个页面中可存放10条指令,分配给作业的内存块数为4。
2.用C语言或C++语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。
在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。
如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。
如果4个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。
在所有320指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。
3.置换算法:
请分别考虑最佳置换算法(OPT)、先进先出(FIFO)算法和最近最久未使用(LRU)算法。
4.作业中指令的访问次序按下述原则生成;
50%的指令是顺序执行的;
25%的指令是均匀分布在前地址部分;
25%的指令均匀分布在后地址部分。
具体的实现办法是:
(1)在[0,319]之间随机选取一条起始执行指令,其序号为m;
(2)顺序执行下一条指令,其序号为m+1条指令;
(3)通过随机数,跳转到前地址部分[0,m-1]中的某条指令处,其序号为m1;
(4)顺序执行下一条指令,即序号为m1+1的指令;
(5)通过随机数,跳转到后地址部分[m1+2,319]中的某条指令处,其序号为m2;
(6)顺序执行下一条指令,则序号为m2+1的指令;
(7)重复跳转到前地址部分,顺序执行,跳转到后地址部分;顺序执行的过程,直至执行320条指令。
三、程序代码
#include
#include
#include
#include
#defineBsize4
typedefstructBLOCK//声明一种新类型——物理块类型
{
intpagenum;//页号
intaccessed;//访问字段,其值表示多久未被访问
}BLOCK;
intpc;//程序计数器,用来记录指令的序号
intn;//缺页计数器,用来记录缺页的次数
staticinttemp[320];//用来存储320条随机数
BLOCKblock[Bsize];//定义一大小为4的物理块数组
//*************************************************************
voidinit();//程序初始化函数
intfindExist(intcurpage);//查找物理块中是否有该页面
intfindSpace();//查找是否有空闲物理块
intfindReplace();//查找应予置换的页面
voiddisplay();//显示
voidsuijishu();//产生320条随机数,显示并存储到temp[320]
voidpagestring();//显示调用的页面队列
voidOPT();//OPT算法
//-------------------------------------------------------------
voidinit()
{
for(inti=0;i { block[i].pagenum=-1; block[i].accessed=0; pc=n=0; } } //------------------------------------------------------------- intfindExist(intcurpage) { for(inti=0;i { if(block[i].pagenum==curpage) returni;//检测到内存中有该页面,返回block中的位置 } return-1; } //------------------------------------------------------------- intfindSpace() { for(inti=0;i { if(block[i].pagenum==-1) returni;//找到空闲的block,返回block中的位置 } return-1; } //------------------------------------------------------------- intfindReplace() { intpos=0; for(inti=0;i { if(block[i].accessed>block[pos].accessed) pos=i;//找到应予置换页面,返回BLOCK中位置 } returnpos; } //------------------------------------------------------------- voiddisplay() { for(inti=0;i { if(block[i].pagenum! =-1) {printf("%02d",block[i].pagenum);} } cout< } //------------------------------------------------------------- voidsuijishu() {intflag=0; cin>>pc; cout<<"******按照要求产生的320个随机数: *******"< for(inti=0;i<320;i++) { temp[i]=pc; if(flag%2==0)pc=++pc%320; if(flag==1)pc=rand()%(pc-1); if(flag==3)pc=pc+1+(rand()%(320-(pc+1))); flag=++flag%4; printf("%03d",temp[i]); if((i+1)%10==0)cout< } } //------------------------------------------------------------- voidpagestring() { for(inti=0;i<320;i++) { printf("%02d",temp[i]/10); if((i+1)%10==0)cout< } } //------------------------------------------------------------- voidOPT() { intexist,space,position; intcurpage; for(inti=0;i<320;i++) { //if(i%100==0)getch(); pc=temp[i]; curpage=pc/10; exist=findExist(curpage); if(exist==-1) { space=findSpace(); if(space! =-1) { block[space].pagenum=curpage; display(); n=n+1; } else { for(intk=0;k { for(intj=i;j<320;j++) { if(block[k].pagenum! =temp[j]/10) { block[k].accessed=1000; }//将来不会用,设置为一个很大数 else { block[k].accessed=j; break; } } } position=findReplace(); block[position].pagenum=curpage; display(); n++; } } } cout<<"缺页次数: "< cout<<"缺页率: "<<(n/320.0)*100<<"%"< } //------------------------------------------------------------- voidmain() { intselect; cout<<"请输入第一条指令号(0~320): "; suijishu(); cout<<"*****对应的调用页面队列*******"< pagestring(); cout<<"最佳置换算法OPT: "< cout<<"*****************"< OPT(); } 四、实验结果 程序运行结果如下图所示: 图1: 结果图 (1) 图2: 结果图 (2) 图3: 结果图(3) 图4: 结果图(4) 图5: 结果图(5) 图6: 结果图(6) 五、思考题 1.如果增加分配给作业的内存块数,将会对作业运行过程中的缺页率产生什么影响? 块数 算法 4块 5块 6块 7块 8块 OPT 36.875% 34.0625% 31.25% 29.0625% 27.1875% FIFO 48.4375% 45.9375% 44.375% 43.4375% 42.1875% LRU 47.8125% 45.3125% 42.5% 41.25% 40.625% 答: 上表为在以第88条指令为首指令,分配物理块为4、5、6、7、8时的运行结果。 由运行结果可得知,增加作业的内存块数,可以降低缺页率,对于不同的算法,增加物理块数都能降低缺页率,只是效果有所不同。 2.为什么一般情况下,LRU具有比FIFO更好的性能? 答: FIFO置换算法设计简单,容易理解。 但它的效率并不是总能达到令人满意的效果。 这种算法只有在顺序访问地址空间时才能达到理想效果, 但根据程序的局部性原理,那些常被访问的页面, 往往要在主存中停留得最久,FIFO算法却将会将其换出页面,留下的只是一些新调入的指令,这将导致内存频繁换页。 而LRU则选择在最近一段时间里最久没有使用过的页面予以置换,LRU算法是与每个页面最后使用的时间有关的。 当必须置换一个页面时,LRU算法选择过去一段时间里最久未被使用的页面。 这种算法以“最近的过去”作为“最近的将来”的近似,较好地利用了程序的局部性原理。 一般情况下,能取得较好的效果,是经常采用的页面置换算法。 题目二 一、实验目的 二、实验内容 三、实验结果 四、思考题 课程设计总结 要求: 1.从课程设计指导书中选择2个题目完成。 学生自选题目需提前征得老师同意。 2.第一个题目从第一章操作系统基础实验选择。 原则是学号除以4取余数为对应的题目号。 第二个题目从第二章或者第三章任选一个。 3.布置题目后要熟悉题目要求,做好实验准备,及早着手开始。 4.集中指导时间为课程结束后下一周周一至周五,每天3个小时。 完成后必须请老师检查。 5.课程设计报告提交时间为周五上午。 请同学们按照要求打印好上交各班负责人。 6.页面大小统一为A4,页边距为默认页边距。 正文字体5号,程序代码可以用小5号。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 格式 要求