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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

处理机调度实验报告Word文档下载推荐.docx

1、d)时间片轮转算法能够使用程序内置数据, 要求运行结果给出每个时间片是被哪个进程使用, 每个进程完成时, 要修改状态并输出提醒。e)多级反馈队列算法使用例题三数据, 要求运行结果给出正确进程调度次序和过程描述。二、 方法、 步骤: (说明程序相关算法原理或知识内容, 程序设计思绪和方法, 能够用步骤图表述, 程序关键数据结构设计、 关键函数之间调用关系等)先来先服务算法:按抵达时间前后, 选择最先来作业最先实施实现思想:对作业抵达时间按大小进行排序, 然后按次序实施短作业优先算法: 在后备队列中, 选择服务时间最短作业最先实施 对作业按抵达时间排序, 接着对抵达作业, 即后备队列中作业按服务时

2、间排序, 取服务时间最小作业最先实施高响应比算法:对作业优先权(响应时间/要求服务时间)进行计算, 对优先权最高最先实施实现实现: 计算后备队列中作业优先权, 并排序, 优先权最高最先实施时间片轮转算法:将全部就绪进程按先来先服务排成队列, 把CPU分配给队首进程, 进程只实施一个时间片, 时间片用完后, 将已使用时间片进程送往就绪队列末尾, 分配处理机给就绪队列中下一进程将作业按抵达时间排序, 在后备队列中选择第一个作业, 把CPU分配给它, 实施一个时间片, 时间片用完后, 将作业送往后备队列末尾, 把CPU分配给下一个作业, 直到全部作业完成多级反馈队列调度算法:设置多个就绪队列, 各个

3、队列优先级逐一降低, 各个队列时间片逐一增加, 优先级越高队列实施时间片就越短, 通常时间片按倍增规则, 每个新进程首优异入第一个队列, 遵照FCFS, 在目前队列时间片内, 进程若能完成, 退出, 进程若未完成, 降级到第二个队列, 一样遵照FCFS依次类推, 若在第二个队列时间片内仍未完成, 再降级到第三个队列设置多个就绪队列, 各个队列优先级逐一降低, 各个队列时间片逐一增加, 优先级越高队列实施时间片就越短, 通常时间片按倍增规则, 比如, 第二队列时间片要比第一个队列时间片长一倍, , 第i+1个队列时间片要比第i个队列时间片长一倍, 整合了时间片、 FCFS、 优先级三种机制。三试

4、验过程及内容: (对程序代码进行说明和分析, 越具体越好, 代码排版要整齐, 可读性要高)#include stdio.h#include/#includetime.hmath.h/#define NULL 0#define getpch(type)(type*)malloc(sizeof(type)typedef struct pcb PCB;struct pcb /定义进程控制块PCB int id; /标示符 char name10; /名称 int time_start; /抵达时间 int time_need; /服务时间 int time_left; /剩下运行时间 int tim

5、e_used; /已使用时间 char state; /进程状态;/*系统函数void _sleep(int n) clock_t goal; goal=(clock_t)n*CLOCKS_PER_SEC+clock(); while(goalclock();char _keygo() char c; printf(按任意键继续n); c=getchar(); return c;/*用户函数int time_unit=2;int num=5; /实际进程数量PCB pcbdata10= /例程内置数据 1000,A,0,4,4,0,R, 1001,B,1,3,3,0, 1002,C,2,5,5

6、,0, 1003,D,3,2,2,0, 1004,E,4,4,4,0,int num1=4;PCB pcbdata110= /例题一数据Job1,1,9,9,0,Job2,1,16,16,0,Job3Job4,1,11,11,0,int num2=4;PCB pcbdata210= /例题二数据P1,10,8,8,0,P2,12,12,12,0,P3,14,4,4,0,P4,16,6,6,0,int num3=4;PCB pcbdata310= /例程三数据,0,7,7,0,5,4,4,0,7,13,13,0,12,9,9,0,int ready10; /就绪队列, 存放进程在pcbdata中

7、位置int order10; /统计排序使用哪个数值作为排序对象void intput() int i;进程总数为: scanf(%d,&num); for(i=0;inum;i+) pcbdatai.id=1000+i; printf(输入第%d个进程名:,i+1); scanf(%spcbdatai.name);输入第%d个进程抵达时间:pcbdatai.time_start);输入第%d个进程服务时间:pcbdatai.time_need); pcbdatai.time_left=pcbdatai.time_need;n pcbdatai.time_used=0; pcbdatai.st

8、ate=; /*调度函数void FCFS() int i,j,temp; double k; orderi=pcbdatai.time_start; readyi=i;i+) /按抵达时间排序 for(j=i+1;jorderj) temp=orderi; orderi=orderj; orderj=temp; temp=readyi; readyi=readyj; readyj=temp; -先来先服务算法调度: 非抢占, 无时间片-n temp=pcbdataready0.time_start; for(i=0; printf(第%d个进程-%s,i+1,pcbdatareadyi.na

9、me);本进程正在运行 _sleep(1);运行完成n temp+=pcbdatareadyi.time_need; j=temp-pcbdatareadyi.time_start; k=(float)j/pcbdatareadyi.time_need;完成时间-%d,周转时间-%d,带权周转时间-%.1fn,temp,j,k);-全部进程调度完成-nvoid SJF() int i,j,temp,l,temp_num; int time=0;num1; orderi=pcbdata1i.time_start; readyi=i;-短作业算法调度: int t_ready10; /就绪队列,

10、存放进程在pcbdata中位置 int t_order10; t_orderi=pcbdata1readyi.time_need;/服务时间作为排序对象 t_readyi=readyi; time=order0; for(l=0;ll+) /判定抵达进程数, 用temp_num存放 for(i=0;num&pcbdata1readyi.time_startt_orderj&t_orderj!=0|t_orderi=0) temp=t_orderi; t_orderi=t_orderj; t_orderj=temp; temp=t_readyi; t_readyi=t_readyj; t_rea

11、dyj=temp; printf(,l+1,pcbdata1t_ready0.name); 正在运行 _sleep(1); time+=pcbdata1t_ready0.time_need; j=time-pcbdata1t_ready0.time_start; k=(float)j/pcbdata1t_ready0.time_need; t_order0=0;,time,j,k);void HRF()num2; orderi=pcbdata2i.time_start;-高响应比算法调度: t_orderi=1; /判定抵达进程数pcbdata2readyi.time_starti+) /计算

12、已抵达进程优先权 if(t_orderi)t_orderi=(time-pcbdata2t_readyi.time_start+ pcbdata2t_readyi.time_need)/pcbdata2t_readyi.time_need;i+) /按优先权排序 if(t_orderit_orderj) ,l+1,pcbdata2t_ready0.name); time+=pcbdata2t_ready0.time_need; j=time-pcbdata2t_ready0.time_start; k=(float)j/pcbdata2t_ready0.time_need;void Times

13、lice() int done=0; orderi=pcbdatai.time_start;-时间片轮转算法调度: 非抢占, 时间片大小为2-n donel+) /判定抵达进程数pcbdatareadyi.time_start if(time!=order0) /将已使用时间片进程, 即第一个移到队列末尾 for(i=1;i+) temp=t_readyi; t_readyi=t_readyi-1; t_readyi-1=temp; if(pcbdatat_ready0.state!=F)第%d个时间片被进程%s使用,l+1,pcbdatat_ready0.name);正在运行n 时间片使用完

14、, 所需时间%d,pcbdatat_ready0.time_left); time+=2; pcbdatat_ready0.time_used+=2; pcbdatat_ready0.time_left-=2;使用时间%d,还需时间%d,2,pcbdatat_ready0.time_left); /判定进程是否结束 if(pcbdatat_ready0.time_left=0) printf(进程%s结束n,pcbdatat_ready0.name); done+; pcbdatat_ready0.state= else进程%s就绪n void MRLA() int i,j,temp,l,te

15、mp_num,temp_num2; /系统时间 /已完成进程 int t_ready10; int queue10; /进程对应队列 int qtime10; /进程对应时间片num3; orderi=pcbdata3i.time_start; queuei=1; qtimei=0;-多级反馈算法调度: 抢占式, 时间片大小为2-nl+) num3&pcbdata3readyi.time_startqueuej&pcbdata3t_readyj.state!) temp=queuej-1; queuej-1=queuej; queuej=temp; temp=t_readyj-1; t_readyj-1=t_readyj; t_readyj=temp; temp=qtimej-1; qtimej-1=qtimej; qtimej=temp;

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

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