ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:264.52KB ,
资源ID:20696518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20696518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验源码参考终版含文件系统实验Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实验源码参考终版含文件系统实验Word格式.docx

1、(ready-super) /*优先级最大者,插入队首*/ p-link=ready; ready=p; else /* 进程比较优先级,插入适当的位置中*/ first=ready; second=first-link; while(second!=NULL) if(p-(second-super) /*若插入进程比当前进程优先数大,*/ /*插入到当前进程前面*/ p-link=second; first-link=p; second=NULL; insert=1; else /* 插入进程优先数最低,则插入到队尾*/ first=first- second=second- if(inse

2、rt=0) first- input() /* 建立进程控制块函数*/ int i,num; clrscr(); /*清屏*/ printf(n 请输入进程号?); scanf(%d,&num); for(i=0;iname); printf(n 输入进程优先数: scanf(p-super);n 输入进程运行时间:ntime); p-rtime=0;state=w;link=NULL; sort(); /* 调用sort函数*/ int space() int l=0; PCB* pr=ready; while(pr! l+; pr=pr- return(l); disp(PCB * pr)

3、 /*建立进程显示函数,用于显示当前进程*/ printf(n qname t state t super t ndtime t runtime n|%st,pr-|%ctstate);|%dtrtime); check() /* 建立进程查看函数,检查等待队列的进程是否进入就绪队列*/ PCB* pr;n * 当前正在运行的进程是: /*显示当前运行进程*/ disp(p); pr=ready;n *当前就绪队列状态为: /*显示就绪队列状态*/ disp(pr);destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ n 进程 %s 已完成.n free(p); runni

4、ng() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/ (p-rtime)+; if(p-rtime=p-ntime) destroy(); /* 调用destroy函数*/ else (p-super)-; /*调用sort函数*/ main() /*主函数*/ int len, h=0; char ch; input(); len=space(); while(len!=0)&(ready!=NULL) ch=getchar(); h+;n The execute number:%d n,h); p=ready; ready=p-R check(); running(); pri

5、ntf(n 按任一键继续. ch=getchar();nn 进程已经完成.n ch=getchar(); 3、运行结果:请输入进程号?5进程号No.0:输入进程名:A输入进程优先数:2输入进程运行时间:1进程号No.1:B3进程号No.2:C进程号No.3:D4进程号No.4:EThe execute number:*当前正在运行的进程是:Qname state super ndtime runtimeE R 5 1 0*当前就绪队列状态为:D w 4 1 0B w 3 1 0A w 2 1 0C w 1 1 0进程E已完成按任一键继续D R 4 1 0进程D已完成B R 3 1 0进程B已完

6、成A R 2 1 0进程A已完成cc R 1 1 0进程C已完成进程已经完成(二)、简单轮转法在分时系统中,都毫无例外采用时间片轮转法。在一种简单的轮转法中,系统将所有就绪进程按FIFO规则排成一个队列,把CPU分配给队首进程,并规定它执行一给定的时间如100ms,称此时间间隔为时间片。当时间片完成时,系统产生一个时钟中断,剥夺该进程的执行,将它送至就绪队列的末尾,并把处理机分配给就绪队列的新队首进程,同样也让它执行一个时间片。这样,就绪队列中的所有进程均可获得一个时间片的处理机而运行。就绪队列中的进程在依次执行时,可能发生以下三种情况:(1)进程未用完一个时间片就结束,这时系统应提前调度;(

7、2)进程在执行过程中提出I/O请求而阻塞,系统应将它放入相应的阻塞队列并引起调度;(3)进程完成一个时间片后尚未完成,系统应将它重新放到就绪队列的末尾,等待下次执行。由于在分时系统中,键盘命令的执行时间较短,大多能在一个时间片内执行完毕,因此分时系统的实际响应时间将比Nq(N是同时性用户数,q是时间片大小)小。#include/*定义一个pcb的结构体*/struct pcb char name; /*进程名*/int time; /*进程执行时间*/;void main() int n,i,j,flag=1;struct pcb a100; /*最多可以有100个进程*/printf(输入进

8、程 个数:scanf(n);getchar();/*接收回车*/ for(i=0;n; printf(输入进程的名字:%cai.name); /*以字符接收进程名*/输入占用的时间片: /*输入进程占用的时间片*/ai.time); i=0;while(flag & n0) /*若进程数为空,结束程序*/ if(ai.time!=0) /*就绪队列是否为空*/,ai.name); /*进程执行一次,打印出该进程*/ai.time-; /*使该进程占用的时间片减1*/for(j=0;jj+) if(aj.time) /*若进程所占用的时间片不为0,仍执行下一进程*/ flag=1;break;e

9、lse /*若进程所占用的时间片为0,说明已经完成,跳过执行下一进程*/flag=0;i=(+i)%n; /*继续执行下一个进程,i1*/输入进程个数:ABCDEABDEBDEDEEPress any key to continue实验二 存储管理一.实验目的:存储管理的主要功能之一是合理分配空间,请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中的页面置换算法设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二.实验内容:1、分区管理的原理:将存储器划分成若干段大小固定的区域,一个区域里只能运行一个程序,程序只能在其自身所在的分区中活动。 2、固定式分区管

10、理的原理:区域大小及起始地址是固定的。一个分区只能存放一个程序。需要设置一个分区说明表来标明内存的使用状态。根据分区说明表来给程序分配相应的区域。由于程序不可能刚刚占有一个分区的大小 ,这样就会在一个分区之中留下零头,造成了极大的浪费。 3、可变式分区管理的原理:区域的大小及起始地址是可变的,根据程序装入时的大小动态地分配一个区域。保证每个区域之中刚好放一个程序。这样可以充分地利用存储空间,提高内存的使用效率。如果一个程序运行完毕,就要释放出它所占有的分区,使之变成空闲区。这样就会出现空闲区与占用区相互交错的情况。这样就需要P表,F表来分别表示内存的占用区状态与空闲区的状态。(一)、设计一个固

11、定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。1.通过随机数产生一个程序指令序列,使得50%的指令是顺序执行的。25%的指令是均匀分布在前地址部分,25%的指令是均匀分布在后地址部分。2.FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。FIFO算法认为先调入内存的页不再被访问的可能性要比其他页大,因而选择最先调入内存的页换出。实现FIFO算法需要把各个已分配页面按分配时间顺序记录在一个数组中,每次淘汰最早进入数组的页。3、程序代码如下:#include #define maxsize 32#define vpf 200void FIFO(int a);int countma

12、xsize;int avpf;void main() / 定义主函数for(int i=0;200;i+) / 用随机数产生页地址流 ai=rand()%32;FIFO(a);void FIFO(int a) / FIFO算法 for(int n=4;n33;n+) /不同的页面数计算命中率 int num; int max; int maxpage=0; int dis=0; int i=0; int k=0; int sum=n; int bmaxsize; for (k=0;kk+) / 页面数组,计数数组初始化 bk=-1; countk=0; for (i=0;vpf;i+) num

13、=0;k+) / 测试是否命中 if(ai=bk) num+; if(num=0) /未命中 dis+; for(k=0;k+) / 所有页面计数器加一 countk+; if(sum=0) /没空白页面时 max=0;k+) if(maxstruct freeMint Sadd; int length;struct busyMEMint Sadd; int Eadd; char fill; busyMEM *next;class Assignpublic: void initMEM(); void pai(); void printList(); void resetfree(); void

14、 insert(); void Delete();private: freeM freeMEM20; busyMEM *p;void Assign:initMEM() p=(busyMEM*)malloc(sizeof(busyMEM); busyMEM *L; L=p; L-fill=OEadd=19;Sadd=0;next=(busyMEM*)malloc(sizeof(busyMEM); L=L-next;AEadd=51;Sadd=20;BEadd=71;Sadd=52;CEadd=137;Sadd=98;DEadd=169;Sadd=148;next=p; resetfree();r

15、esetfree() for(int i=0;20; freeMEMi.length=-1; freeMEMi.Sadd=-1; i=0; busyMEM *L=p; while(L-next!=p) if(L-next-Sadd-L-Eadd-1!=0) freeMEMi.length=L-Eadd-1; freeMEMi.Sadd=L-Eadd+1; i+; L=L- freeMEMi.length=256-L- freeMEMi.Sadd=L-printList() coutendl; cout分区起始地址长度状态 while(freeMEMi.length!=-1) if(freeMEMi.Sadd100) cout freeMEMi.Saddk freeMEMi.lengthk空闲 else coutL-fill;请输入作业长度: int a;a; for(int i=0; if(freeMEMi.length=a) break; if(i=19) coutEadd R=R-next=R- R-next=L;Sadd=freeMEMi.Sadd;Eadd=freeMEMi.Sadd+a-1; resetfree()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1