《操作系统课程设计3.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计3.doc(18页珍藏版)》请在三一办公上搜索。
1、计算机科学与应用系课程设计报告操作系统原理姓名徐光辉学号111096135指导教师齐艳科专业计算机科学与技术日期2012年5月25日成 绩题目1. 请求调页存储管理2. Bochs虚拟机、Minix操作系统的安装、运行及退出指导教师评语题目一:请求调页存储管理一、实验目的通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。二、实验内容1假设每个页面中可存放10条指令,分配给作业的内存块数为4。2用C语言或C+语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显
2、示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。在所有320指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。3置换算法:请分别考虑最佳置换算法(OPT)、先进先出(FIFO)算法和最近最久未使用(LRU)算法。4作业中指令的访问次序按下述原则生成;50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令均匀分布在后地址部分。具体的实现办法是:(1)在0,319之间随机选取一条起始执行指令,其序号为m;(2)顺序执行下一条
3、指令,其序号为m+1条指令;(3)通过随机数,跳转到前地址部分0,m-1中的某条指令处,其序号为m1;(4)顺序执行下一条指令,即序号为m1+1的指令;(5)通过随机数,跳转到后地址部分m1+2,319中的某条指令处,其序号为m2;(6)顺序执行下一条指令,则序号为m2+1的指令;(7)重复跳转到前地址部分,顺序执行,跳转到后地址部分;顺序执行的过程,直至执行320条指令。三、程序代码#include #include#include#include#define Bsize 4typedef struct BLOCK/声明一种新类型物理块类型 int pagenum;/页号int acces
4、sed;/访问字段,其值表示多久未被访问BLOCK;int pc;/程序计数器,用来记录指令的序号int n;/缺页计数器,用来记录缺页的次数static int temp320;/用来存储320条随机数BLOCK blockBsize; /定义一大小为4的物理块数组/*void init(); /程序初始化函数int findExist(int curpage);/查找物理块中是否有该页面int findSpace();/查找是否有空闲物理块int findReplace();/查找应予置换的页面void display();/显示void suijishu();/产生320条随机数,显示并
5、存储到temp320void pagestring();/显示调用的页面队列void OPT();/OPT算法/-void init() for(int i=0;iBsize;i+) blocki.pagenum=-1; blocki.accessed=0; pc=n=0; /-int findExist(int curpage) for(int i=0; iBsize; i+)if(blocki.pagenum = curpage ) return i;/检测到内存中有该页面,返回block中的位置 return -1;/-int findSpace() for(int i=0; iBsiz
6、e; i+) if(blocki.pagenum = -1) return i;/找到空闲的block,返回block中的位置 return -1;/-int findReplace() int pos = 0; for(int i=0; iblockpos.accessed) pos = i;/找到应予置换页面,返回BLOCK中位置 return pos;/-void display() for(int i=0; iBsize; i+) if(blocki.pagenum != -1) printf( %02d,blocki.pagenum); coutpc; cout*按照要求产生的320
7、个随机数:*endl; for(int i=0;i320;i+) tempi=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,tempi); if(i+1)%10=0) coutendl; /-void pagestring() for(int i=0;i320;i+) printf( %02d,tempi/10); if(i+1)%10=0) coutendl;/-void OPT()int e
8、xist,space,position ;int curpage; for(int i=0;i320;i+) /if(i%100=0) getch();pc=tempi; curpage=pc/10; exist = findExist(curpage); if(exist=-1)space = findSpace(); if(space != -1)blockspace.pagenum = curpage; display(); n=n+1; elsefor(int k=0;kBsize;k+)for(int j=i;j320;j+)if(blockk.pagenum!= tempj/10)
9、 blockk.accessed = 1000; /将来不会用,设置为一个很大数 elseblockk.accessed = j;break; position = findReplace(); blockposition.pagenum = curpage; display(); n+;cout缺页次数:nendl;cout缺页率:(n/320.0)*100%endl;/-void main() int select; cout请输入第一条指令号(0320):; suijishu(); cout*对应的调用页面队列*endl; pagestring(); cout最佳置换算法OPT:endl
10、; cout*endl; OPT(); 四、实验结果程序运行结果如下图所示:图1:结果图(1)图2:结果图(2)图3:结果图(3)图4:结果图(4)图5:结果图(5)图6:结果图(6)五、思考题1如果增加分配给作业的内存块数,将会对作业运行过程中的缺页率产生什么影响?块数算法4块5块6块7块8块OPT36.87534.0625%31.25%29.0625%27.1875%FIFO48.437545.9375%44.375%43.4375%42.1875%LRU47.812545.3125%42.5%41.25%40.625%答:上表为在以第88条指令为首指令,分配物理块为4、5、6、7、8时的
11、运行结果。由运行结果可得知,增加作业的内存块数,可以降低缺页率,对于不同的算法,增加物理块数都能降低缺页率,只是效果有所不同。2为什么一般情况下,LRU具有比FIFO更好的性能?答:FIFO置换算法设计简单,容易理解。但它的效率并不是总能达到令人满意的效果。这种算法只有在顺序访问地址空间时才能达到理想效果,但根据程序的局部性原理,那些常被访问的页面,往往要在主存中停留得最久,FIFO算法却将会将其换出页面,留下的只是一些新调入的指令,这将导致内存频繁换页。而LRU则选择在最近一段时间里最久没有使用过的页面予以置换,LRU算法是与每个页面最后使用的时间有关的。当必须置换一个页面时,LRU算法选择
12、过去一段时间里最久未被使用的页面。这种算法以“最近的过去”作为“最近的将来”的近似,较好地利用了程序的局部性原理。一般情况下,能取得较好的效果,是经常采用的页面置换算法。题目二: Minix操作系统的安装、运行及退出一、实验目的阅读并理解Bochs虚拟机的基本概念,成功安装Bochs虚拟机。阅读Minix操作系统相关技术资料,理解Minix操作系统的安装过程和Minix操作系统的模块结构,实现Minix操作系统的运行;二、实验内容步骤一、在地址下载Bochs-2.0.2虚拟机软件Bochs-2.0.2.Win32-bin.zip,大小为2.55MB,Bochs虚拟机软件解压缩后即完成安装,在B
13、ochs解压缩目录下,bochs.exe是虚拟机可执行文件;将其安装在D:bochs-2.0.2目录下(安装目录可以是任意硬盘分区,本处为D盘分区)。步骤二、下载Minix操作系统镜像Minix204.zip,大小为6.84MB,并用WINRAR解压缩软件解压缩镜像文件,将镜像文件复制到D:bochs-2.0.2Minix204目录下;步骤三、配置Minix操作系统的启动文件D:bochs-2.0.2Minix204run.bat,配置内容如下:#设置BXSHARE环境变量SET BXSHARE=D:bochs-2.0.2#将当前目录换到D:Bochs-2.0.2minix204cd D:Bo
14、chs-2.0.2minix204#使用当前目录下的minix.bxrc配置文件运行bochs.bochs -q -f minix.bxrc步骤四、在C:bochs-2.0.2Minix204目录下配置Minix操作系统硬件配置文件minix.bxrc,配置内容如下:megs: 40romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000vgaromimage: $BXSHARE/VGABIOS-elpin-2.40ata0-master: type=disk, path=minix.img, cylinders=200, heads
15、=16, spt=32log: bochsout.txtpanic: action=askerror: action=reportinfo: action=reportdebug: action=ignoreips: 1000000mouse: enabled=0user_shortcut: keys=ctrlaltdelboot: diskfloppya: 1_44=vfloppya.img, status=insertedata0-slave: type=cdrom, path=d:, status=inserted步骤五、在D:bochs-2.0.2Minix204目录下,双击run.b
16、at,运行Minix操作系统;步骤六、在/usr/src目录下,存放着Minix操作系统的源代码,其大小约为12MB。Minix操作系统源码包含以下几个模块,应大致了解一下。步骤七、退出,点击Bochs上的poweroff按钮即可退出。三、 实验结果1、双击Bochs-2.0.2.exe,即进入如下图3-2-1所示的安装页面图3-2-12、点击I Agree,进入下面的页面,如图3-2-2所示:图3-2-23、点击next,进入如下页面,如图3-2-3所示:图3-2-34、点击Install,即开始安装,如下图3-2-4所示:图3-2-41、点击Close后,Bochs虚拟机即安装成功,可以在
17、开始菜单中看到,如图3-2-5所示:图3-2-52、Minix操作系统的安装完成后,双击run.bat,可以运行Minix操作系统;弹出如下两个窗口,如图3-2-6所示:图3-2-6 3、选择单机版启动Minix,即在上图中输入“=”,系统随即提示输入用户名,输入“root”后即可开始输入各种命令,进行相应操作了。如需突出系统,单击右上角的power即可。图3-2-7课程设计总结本次课程设计我的第一个实验的主要目的是完成请求调页存储管理方式的模拟,通过对页面、页表、地址转换和页面置换过程的模拟,让我对请求调页的几种算法有了进一步的认识。并且懂得了有时候增加内存块的数量,并不一定会减少系统的缺页
18、次数和缺页率。从中学到了很多以前并没有真正学会的知识。通过这次操作系统课程设计的第二个实验,Bochs虚拟机和Minix系统的安装。让我在一定程度上加深了对操作系统概念的理解,即:操作系统的功能中包含的对各类资源的管理。并且对Minix操作系统有了一定的了解,学会了如何安装Bochs虚拟机和Minix的安装、运行和退出。知道了Minix操作系统的界面,和windows系统并不相同。 通过这一周的实践学习,我认识到学号计算机要重视实践操作,不仅仅是学习操作系统,以及其他的计算机方面的只是都要重在实践。并且在这次的操作系中,我不断去找书本知识和查阅其他有关资料,不仅巩固了对课本掌握,还有利于以后更好的进步。在以后的学习过程中,我要认真负责地对待课本中的每一个知识点,进一步充实自己,提高自己,最后还要感谢老师的辛勤指导。