操作系统实验报告_包括实验内容_第1页
操作系统实验报告_包括实验内容_第2页
操作系统实验报告_包括实验内容_第3页
操作系统实验报告_包括实验内容_第4页
操作系统实验报告_包括实验内容_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实 验 报 告实验课程: 操作系统 学生代号: 信 念 学 号: 专业班级: 网络间谍088班 2009年 12月 25日目 录一、 实验一 编程实现银行家安全算法3二、 实验二 存储管理的模拟实现6三、 实验三 磁盘调度算法的模拟实现15南昌大学实验报告 -(1)编程实现银行家安全算法学生代号: 信念 学 号: 专业班级: 网络间谍088班 实验类型: 验证 综合 设计 创新 实验日期: 11.5,11.12 实验成绩: 一、实验目的通过实验加强对银行家安全算法的理解和掌握。二、实验内容熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全序列。三、实验要求1、

2、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤根据实验要求设计本次实验流程图,并根据实验流程图编写出实验程序。上机运用C语言进行程序输入,并进行程序检查,找出编程错误,直到程序运行成功为止。分析本次实验所获得的收获。五、实验数据及处理结果六、实验体会或对改进实验的建议银行家算法的关键在于安全性算法,银行家算法在计算机操作系统的预防死锁有着很大的作用,对于资源的充分利用做出了很大的贡献。这让我对于计算机内部算法的理解更加加深了。使用C语言编写银行家算法,通过对程序的设计思路的分析算法编写、优化、调试、错误处理等一系列的问题的逐步解决,对于C语言的复习及使用获益颇多。七、参考

3、资料计算机操作系统 汤子瀛等 西安电子科技大学出版社南昌大学实验报告 -(2)存储管理的模拟实现学生代号: 信念 学 号: 专业班级: 网络间谍088班 实验类型: 验证 综合 设计 创新 实验日期: 11.19,11.26,12.3 实验成绩: 一、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二、实验内容编程实现页面置换算法,要求输出页面的置换过程,具体可以编程实现OPT、FIFO和LRU算法。三、实验要求1、需写出设计说明;2、设计

4、实现代码及说明3、运行结果;四、主要实验步骤根据实验要求设计出程序图。根据程序图编写出实验程序。上机进行程序调试,并找出错误,直至程序通过。分析本次实验所得到的收获。五、实验数据及处理结果#include #include #include #include #define overflow -2#define null 0#define codenum 220 /指令数#define pagenum 20 /页数int n=pagenum,m=3; /n为提供的页流数,m为用户可用的物理块数typedef struct linkint data;int sign; /访问位struct li

5、nk *next;struct link *rear;/总是指向链表的最后一个元素qnode,*qlink;void menu(int *str);int *creatstr() /创建页流,并保存在strn中int *str;time_t t; intcount=0,m1,m2,m3;str=(int*)malloc(sizeof(int)*(pagenum+10);if(!str)exit(overflow);srand(unsigned)time(&t);while(count=pagenum)m1=rand()%codenum;str+count=m1/10;/str+count=(m

6、1+1)/10;m2=rand()%(m1+1);str+count=m2/10;/str+count=(m2+1)/10;m3=(codenum-1)-rand()%(m1+2);str+count=m3/10;/str+count=(m3+1)/10;return str;/*FIFO算法*int *initstring() /初始化保存每个页面进行时的结果的二维数组anm int *a,i,j;a=(int *)malloc(sizeof(int*)*(n+1);if(!a) exit(overflow);for(i=0;i=n;i+) ai=(int*)malloc(sizeof(in

7、t)*(m+1);if(!ai) exit(overflow);for(i=1;i=n;i+) /初始化保存结果的数组,使得一开始都为空for(j=1;j=m;j+)aij=-1;return a;void printresult(int *a,int *str)int i,j;printf(*the orders of pages*n);for(i=1;i=n;i+)printf(%3d,stri);putchar(n);for(i=1;i=m;i+)for(j=1;j=n;j+)if(aji=-1) printf( );else printf(%3d,aji);putchar(n);put

8、char(n);int search(int *b,int x) /从物理块中找现在要执行的页面是否已经存在内存中,找到返回1int i;for(i=1;i=m;i+)if(bi=x) return i;return 0;void fifo(int *str) /先进先出置换算法int i,j=0,flag,k;int *a;int count=0; /用来计算缺页次数的a=initstring();for(i=1;i=n;i+)flag=search(ai,stri);/如果没有找到,情况一是没有满,二是当物理块满了就得置换if(!flag) count+;if(!flag) aij+%m+

9、1=stri;/else 如果找到什么也不做if(i!=n)for(k=1;k=m;k+)ai+1k=aik;printresult(a,str);/输出结果;printf(short of pages:%dn,count);/*LRU算法*qlink initlink() /初始化链表,其有M个节点,即可以存放m个页面qlink l,q,s;int i;l=(qlink)malloc(sizeof(qnode);if(!l) exit(overflow);q=l;for(i=1;idata=-1;q-next=s;q=s;l-rear=q; /指向尾部,方便操作l-rear-next=nul

10、l;return l;qlink lsearch(int *a,qlink l,int x,int *pagnum) qlink static k=l; /k-next始终指向下一个空的物理块qlink q=l,temp,p;int flag=0,tempx,findid,j,reardata,flag2=0;int static i=1;int static k1=m;int static count=0; /用来计算缺页数reardata=l-rear-data;while(q-next)temp=q;q=q-next;if(q-data=x) /如果新来的页面内存中已有,则将它压入栈顶,

11、即链表的最后一位if(q!=l-rear) /如果找到的不是最后一个节点 /这个循环仅仅在已满的环境下有用if(l-rear-data=-1) flag=1;break; /如果没有满且新的页面已存在内存中temp-next=q-next;l-rear-next=q;q-next=null;l-rear=q;flag2=2;/else 如果已存在的页面在链尾, 则不动/end whileif(flag2!=2)/情况一物理块未填满,情况二满了要置换新的if(l-rear-data=-1) /物理块没有放满if(flag) /新的页面已存在内存中temp-next=q-next;q-next=k

12、-next;k-next=q;k=k-next;elsek=k-next;k-data=x;count+;else /如果满了,且新来的页面在内存中也没有,就置换出栈底的元素,即最近最久的tempx=l-next-data;l-next-data=x;l-rear-next=l-next;l-rear=l-next;l-next=l-next-next;l-rear-next=null;count+;/ end if flag2if(reardata=-1) /当内存中没有满的时候/printf(i1=%dn,i); if(!flag) /如果页原来没有在内存中 for(p=l-next,j=

13、1;jnext) /将栈的状态保存到二维数组中 aij=p-data; else if(flag)/如果已经在内存中里 if(i!=n) for(j=1;j=m;j+) ai+1j=aij; /end ifelse/如果满了if(i=n)/printf(i2=%dn,i); for(j=1;j=m;j+) aij=ai-1j;findid=search(ai,tempx);/*if(findid)*/ aifindid=x; /end else i+;*pagnum=count;return l;void lru(int *str) /实现方法:栈int *a;int i;int count=

14、0;qlink l;/其中第一个节点是最久的,而最后一个节点总是最新的l=initlink();/初始化特殊的栈 a=initstring(); /初始化保存结果的二维数组for(i=1;inext,i=1;inext)if(x=p-data) return 1;return 0;void nru(int *str)int *a;int flag,i,j;int count=0;qlink pt,r,p;r=initlink();a=initstring();r-rear-next=r-next; /形成循环队列pt=r-next;for(i=1;irear-data=-1) /如果没有满pt

15、-data=stri;pt-sign=1;pt=pt-next;else /如果满了while(pt-sign!=0) /找第一个访问位为0的页pt-sign=0;pt=pt-next; pt-data=stri; /置换pt-sign=1;/end else/end if(!flag)/else 如果已存在内存中,就保持不动for(p=r-next,j=1;jnext)aij=p-data;/end forprintresult(a,str);printf(short of pages:%dn,count);/*主函数*void menu(int *str)int co;printf(1.F

16、IFOn);printf(2.LRUn);printf(3.LFUn);printf(4.NRUn);printf(5.exitn);printf(choose(1-5):);scanf(%d,&co);switch(co)case 1:fifo(str);break;case 2:lru(str);break;case 3:lru(str);break;case 4:nru(str);break;case 5:exit(-1);break;int main()/int str=-1,7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1; /页流/clrscr();

17、int *str=creatstr(); /用随机方法创建页流/int str=-1,4,7,0,7,1,0,1,2,1,2;menu(str);六、实验体会或对改进实验的建议通过本次课程设计,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示。通过查阅相关资料对OPT、FIFO和LRU算法有了一定的了解,基本掌握了C语言编写的基本方法三种页面置换算法的比较,OPT、FIFO和LRU算法,对页面置换有更深一层的了解。使我对操作系统特别是页面置换这一部分的认识有了很大的加深。七、参考资料计算机操作系统 汤子瀛等

18、西安电子科技大学出版社南昌大学实验报告 -(3)磁盘调度算法的模拟实现学生代号: 信念 学 号: 专业班级: 网络间谍088班 实验类型: 验证 综合 设计 创新 实验日期: 12.10,12.17,12.24 实验成绩: 一、实验目的通过实验加强对磁盘调度算法的理解和掌握。二、实验内容编写程序实现磁盘调度算法,具体可以编写程序实现FCFS算法、SSTF算法、SCAN算法和CSCAN算法之二。三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤根据实验要求编写实验流程图。根据实验流程图编写实验代码。上机进行程序输入,并运行,同时检查实验错误,直至实验没有错误为止。分析此次实验所获得的收获。五、实验数据及处理结果六、实验体会或对改进实验的建议FCFS是一种简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。SCAN算法不仅考

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论