1、操作系统实验1计算机操作系统实验指导实验一 进程管理1目的和要求加强对进程概念的理解。2实验内容至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。3实验环境PC兼容机Windows、DOS系统TC语言4实验提示PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。主体程序 #include conio.h#include stdio.h#include stdlib.hstruct jincheng_type int pid; int youxia
2、n; int daxiao; ;struct jincheng_type neicun20;int shumu=0,pid_l;main() int n,m,i; char a; n=1; while(n=1) clrscr(); printf(n*); printf(n* 进程演示系统 *); printf(n*); printf(n 1.创建新的进程 2.查看运行进程 ); printf(n 3.换出某个进程 4.杀死运行进程 ); printf(n 5.进程之间通信 6.退出系统 ); printf(n*); printf(n请选择(16)); a=getche(); switch(a)
3、 case1: create( ); break; case2: run( ); break; case3: huanchu(); break; case4: kill( ); break; case5: tongxun( ); break; case6: exit(0); default: n=0; create( ) /* 创建一个进程的示例(不完整的程序) */ if(shumu=20) printf(n内存已满,请先结束或换出进程n); else printf(n请输入新进程的pidn); scanf(%d,&neicunshumu-1.pid); printf(n请输入新进程的优先级
4、n); scanf(%d,&neicunshumu-1.youxian); printf(n请输入新进程的大小n); scanf(%d,&neicunshumu-1.daxiao); shumu+; 5实验运行结果 * * 进程演示系统 * * 1.创建新的进程 2.查看运行进程 3.换出某个进程 4.杀死运行进程 5.进程之间通信 6.退出系统 * 请选择(16)然后根据你选择的不同,出现不同的结果。实验二 存储管理1目的和要求存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌
5、握请求页式管理的页面置换算法。2实验内容1过随机数产生一个指令序列,共320条指令。其地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在后地址部分;#具体的实施方法是:A. 在0,319的指令地址之间随机选区一起点M;B. 顺序执行一条指令,即执行地址为M+1的指令;C. 在前地址0,M+1中随机选取一条指令并执行,该指令的地址为M;D. 顺序执行一条指令,其地址为M+1;E. 在后地址M+2,319中随机选取一条指令并执行;F. 重复AE,直到执行320次指令。2指令序列变换成页地址流 设:(1)页面大小为1K;(2) 用户内存容量为4
6、页到32页;(3) 用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条第9条指令为第0页(对应虚存地址为0,9); 第10条第19条指令为第1页(对应虚存地址为10,19); 。 第310条第319条指令为第31页(对应虚存地址为310,319);按以上方式,用户指令可组成32页。3. 计算并输出下述各种算法在不同内存容量下的命中率。A. FIFO先进先出的算法B. LRR最近最少使用算法C. OPT最佳淘汰算法(先淘汰最不常用的页地址)D. LFR最少访问页面算法E. NUR最近最不经常使用算法3实验环境在486机或586机上用
7、TC语言实现4实验提示提示:A.命中率=1-页面失效次数/页地址流长度 B.本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。 C.关于随机数产生方法,采用TC系统提供函数RAND()和RANDOMIZE()来产生。5实验运行结果试验输出如下(输出包括了用户内存从3K到32K的各种不同情况)PAGE FIFO LRR OPT LFR NUR试验结论从实验数据来看,OPT算法为最好的一种算法。参考程序见下:#include#include#include #includestruct aa int page; int count; aa* next
8、; ;void main() time_t t; srand(unsigned(time(&t); int i,n,j,ii,m,answer,ffalse,count,fangfa,temp1,min,nn,mm; double sum; aa *head,*tail,*temp,*table,*first,*ti;/* nn=4;mm=1; for(nn=4;nn32;nn+) for(mm=1;mm5;mm+) */ cinm; /m=nn; coutendl; coutfangfa: 1-FIFO;2-LRR;3-OPT;4-LFR;5-NURendl; coutfangfa; /fa
9、ngfa=mm; ffalse=0; answer=0; table=new(aa); temp=table; table-page=-1; table-count=0; head=table; for(ii=2;iipage=-1; table-count=0; temp-next=table; temp=table; if (ii=m)table-next=NULL; tail=table; temp=head; first=head; count=0; i=0; while(ipage=j)answer=1;table-count=2; table=table-next; if (ans
10、wer!=1) table=head; while (table!=NULL) if (table-countcount; table=table-next; if (temp-page!=-1) +ffalse; temp-page=j; temp-count=1; table=head; if (i%32)=0) while(table!=NULL) if (table-page!=-1) table-count=1; / if (table-page=j)answer=1;+(table-count); table=table-next; if (fangfa=4)|(fangfa=3)
11、 while(table!=NULL) if (table-page=j)answer=1;+(table-count); table=table-next; if(answer!=1) table=head; while (table!=NULL) if (table-countcount; table=table-next; if (temp-page!=-1) +ffalse; temp-page=j; table=head; while(table) table-count=1; table=table-next; else temp-page=j; +(temp-count); if
12、 (fangfa=2) while(table!=NULL)&(fangfa=2) if (table-page=j)answer=1;temp=table; table=table-next; if(fangfa=2)&(answer=1) /table=temp; temp1=temp-page; while (temp!=NULL) temp-page=temp-next-page; temp=temp-next; tail-page=temp1; if(answer!=1)&(fangfa=2) if (first-page!=-1) ffalse=ffalse+1; first-pa
13、ge=j; temp=head; while (temp!=NULL) temp-page=temp-next-page; temp=temp-next; tail-page=j; table=head; while(table!=NULL)&(fangfa=1) if (table-page=j)answer=1; table=table-next; if (answer!=1)&(fangfa=1) if (first-page!=-1) ffalse=ffalse+1; first-page=j; if (first-next!=NULL) first=first-next; else first=head; +i; +count; if (count=4)count=0; sum=1.0-ffalse/320.0;/*coutnn ;if (fangfa=1) coutFIFO:sum ;if (fangfa=2) cout LRR:sum ;if (fangfa=3) cout OPT:sum ;if (fangfa=4) cout LFR:sum ;if (fangfa=5) cout NUR:sum ;if(mm=5) coutendl;*/coutsumnext)coutpage ;coutendl;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1