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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

处理机调度实验报告1Word格式文档下载.doc

1、b) 短作业优先算法使用例题一数据或程序内置数据,要求运行结果给出调度顺序、完成时间、周转时间、带权周转时间c) 高响应比算法使用例题二的数据,要求运行结果给出调度顺序、完成时间、周转时间、带权周转时间d) 时间片轮转算法可以使用程序内置数据,要求运行结果给出每个时间片是被哪个进程使用,每个进程完成时,要修改状态并输出提示。e) 多级反馈队列算法使用例题三的数据,要求运行结果给出正确的进程调度顺序和过程描述。二、方法、步骤:(说明程序相关的算法原理或知识内容,程序设计的思路和方法,可以用流程图表述,程序主要数据结构的设计、主要函数之间的调用关系等)先来先服务算法:按到达时间先后,选择最先来的作

2、业最先执行实现思想:对作业的到达时间按大小进行排序,然后按顺序执行短作业优先算法: 在后备队列中,选择服务时间最短的作业最先执行 对作业按到达时间排序,接着对到达的作业,即后备队列中的作业按服务时间排序,取服务时间最小的作业最先执行高响应比算法:对作业的优先权(响应时间/要求服务时间)进行计算,对优先权最高的最先执行实现实现: 计算后备队列中作业的优先权,并排序,优先权最高的最先执行时间片轮转算法:将所有就绪进程按先来先服务排成队列,把CPU分配给队首进程,进程只执行一个时间片,时间片用完后,将已使用时间片的进程送往就绪队列的末尾,分配处理机给就绪队列中下一进程 将作业按到达时间排序,在后备队

3、列中选择第一个作业,把CPU分配给它,执行一个时间片,时间片用完后,将作业送往后备队列的末尾,把CPU分配给下一个作业,直到所有作业完成多级反馈队列调度算法:设置多个就绪队列,各个队列优先级逐个降低,各个队列时间片逐个增加,优先级越高的队列执行时间片就越短,一般时间片按倍增规则,每个新进程首先进入第一个队列,遵循FCFS,在当前队列的时间片内,进程若能完成,退出,进程若未完成,降级到第二个队列,同样遵循FCFS依次类推,若在第二个队列的时间片内仍未完成,再降级到第三个队列设置多个就绪队列,各个队列优先级逐个降低,各个队列时间片逐个增加,优先级越高的队列执行时间片就越短,一般时间片按倍增规则,

4、例如,第二队列的时间片要比第一个队列的时间片长一倍,第i+1个队列的时间片要比第i个队列的时间片长一倍,整合了时间片、 FCFS、优先级三种机制。三实验过程及内容:(对程序代码进行说明和分析,越详细越好,代码排版要整齐,可读性要高)#include stdio.h#include/#includetime.hmath.h/#define NULL 0#define getpch(type)(type*)malloc(sizeof(type)typedef struct pcb PCB;struct pcb/定义进程控制块PCBint id; /标示符char name10;/名称int tim

5、e_start; /到达时间 int time_need; /服务时间int time_left; /剩余运行时间int time_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

6、=/例程内置数据1000,A,0,4,4,0,R,1001,B,1,3,3,0,1002,C,2,5,5,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,

7、13,0,12,9,9,0,int ready10; /就绪队列,存放进程在pcbdata中的位置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_

8、need;npcbdatai.time_used=0;pcbdatai.state=;/*调度函数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;-先来先服务算法调度:非抢占,无时间片-ntemp=pcbdataready0.time_start;for(i=0;printf(第%d个进程-%s,

9、i+1,pcbdatareadyi.name);本进程正在运行_sleep(1);运行完毕ntemp+=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;i+) /按到达时间排序-短作业算法调度

10、:int t_ready10;/就绪队列,存放进程在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_rea

11、dyi;t_readyi=t_readyj;t_readyj=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;i+) /按到达时间排序-高响应比算法调度:t_orderi=1;/判断到达进程数pcb

12、data2readyi.time_starti+) /计算已到达进程的优先权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_rea

13、dy0.time_need;void Timeslice()int done=0;orderi=pcbdatai.time_start;i+) /按到达时间排序-时间片轮转算法调度:非抢占,时间片大小为2-ndonel+)/判断到达的进程数pcbdatareadyi.time_startif(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_r

14、eady0.name);正在运行n 时间片使用完,所需时间%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就绪nvoid MRLA()int i,j,temp,l,temp_num,temp_num2; /系统时间 /已完成的进程int t_ready10;int queue10; /进程对应的队列int qtime10; /进程对应的时间片num3;orderi=pcbdata3i.time_start;queuei=1;qtimei=0;i+) /按到达时间排序-多级反馈算法调度:抢占式,时间片大小为2-nl+)/判断到达的进程数num3&pcbdata3readyi.time_startfor(i=0;i+) /按队列优先级排

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2