




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品资料学年第 学期操作系统课程学 专 班 姓 学实验报告级:名:号:任课教师:实验题目处理机调度实验地点实验目的1. 通过编写程序实现进程或作业先来先服务、高优先权、按时间片轮转调度算 法,进一步掌握进程调度的概念和算法,加深对处理机分配的理解。2. 了解Linux中进程(线程)的调度机制。3. 学习使用Linux中进程(线程)调度算法,掌握相应的与调度有关的函数。实 验 内 容1、程序说明:(1) 先来先服务算法:如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务(FCFS first comefirst service )总是把当前处于就 绪队列之首的那个
2、进程调度到运行状态。(2) 轮转法就是按一疋时间片(记为q)轮番运行各个进程。如果q是一个疋值,则轮转 法是一种对各进程机会均等的调度方法。(3) 优先级调度的基本思想是,把当前处于就绪队列中优先级最高的进程投入运行,而 不管各进程的下一个CPL周期的长短和其他因素。2、具体步骤:(1) 分析问题,提出解决问题的算法(2) 编制程序(3) 程序调试(4) 记录实验结果,以及思考是否能够改善算法(1)编辑程序jcdd.c,编译并执行。#i nclude #i nclude #defi ne P_NUM 5#defi ne P_TIME 50enum stateready,execute,bloc
3、k,fin ish;struct pcbbchar n ame4;in t priority; /数越大优先级越咼int cputime; /已占用CPU勺时间int needtime; /执行时间int count;enum state process;struct pcbb *n ext;typedef struct pcbb pcb;void display me nu ()printf(CHOOSE THE ALGORITHM);prin tf(1 PRIORITY n);prin tf(2 ROUNDROBINn ”);prin tf(3 EXIT n);pcb* get_proce
4、ss()pcb *q;pcb *p; II头指针pcb *t; II尾指针int i = 0;prin tf(i nput n ame and time n);while (i n ame);scan f(%d, &q- needtime);q-cputime = 0;q-priority = P_TIME - q-n eedtime;q-process = ready;q- next = NULL;if(i=0)p = q; t = q;elset_n ext = q;t = q;i+;return p;void free_process(pcb *p)pcb *q;while(p!= NU
5、LL)q = p;p = p_n ext;free(q);void display(pcb *p)printf(n ame cputime n eedtimeprioritystate n);while(p)prin tf(%s,p-n ame);printf();prin tf(%d,p-cputime);printf(”);prin tf(%d,p- needtime); printf();prin tf(%d,p-priority);printf();switch(p-process)case ready:pri ntf(readyn );break;case execute:pri n
6、tf(executen); break;case block:pri ntf(block n); break; case fini sh:pri ntf(fi nishn); break;p = p_n ext;int process_fi ni sh(pcb *q)int b1 = 1;while(b1 &q)b1 = b1&q- needtime=O;q = q_n ext;return b1;void cpuexe(pcb *q)pcb *t = q;int tp = 0;while(q) /让t指向优先级最高的进程if (q-process!=fi ni sh) q-process =
7、 ready; if(q-n eedtime=0) q-process = fini sh;if(tppriorit y&q-process!=fi ni sh)tp = q-priority;t = q;q = q_n ext;if(t- needtime!=0)t-priority -=3; /每执行一次优先级降低二个单位t-n eedtime -;t-process = execute; t-cputime+;void priority_cal()pcb *p;p = get_process();int cpu = 0;while(!process_fi ni sh(p) /就绪队列中还
8、有进程cpu+;prin tf(cputime:%dn,cpu);cpuexe(p); /选择优先级取咼的进程执行一个时间单位display(p); /每调度一次就显示次sleep(2); free_process(p); /释放所有进程prin tf(All processes have fini shedn);pcb *get_process_r oun d()pcb *q;pcb *p; II头指针pcb *t; II尾指针int i = 0;prin tf(i nput n ame and timen);while (in ame); scan f(%d, &q- needtime);
9、q-cputime = 0; q-co unt = 0;q-process = ready;q- next = NULL; if(i=0)p = q; t = q; else t_n ext = q; t = q;i+;return p;void cpu_r oun d(pcb *q)if(q-n eedtime=1) q-cputime+;elseq-cputime +=2;q-n eedtime -=2;if(q-n eedtimen eedtime = 0;q-co un t+;q-process = execute;pcb *get_ next(pcb *k,pcb *head)pcb
10、 *t;t = k;dot =t- n ext;while ( t & t-process = fini sh);if(t = NULL)t = head;/k是刚刚被执行的节点,如果t-next=k,所明就绪队列除了 k和t以外都已结束,按照时间 片轮转算法,该t执行while(t- n ext!=k & t-process = fin ish)t = t-n ext;return t;void set_state(pcb *p)while(p)if(p-n eedtime = 0) p-process = fini sh;if(p-process = execute) p-process
11、= ready;p = p_n ext; void display_r oun d(pcb *p)printf(n ame cputime n eedtimecountstaten);while(p)prin tf(%s,p-n ame);printf();prin tf(%d,p-cputime);printf();prin tf(%d,p- needtime);printf();prin tf(%d,p-cou nt);printf();switch(p-process)case ready:pri ntf(readyn );break;case execute:pri ntf(execu
12、ten); break;case block:pri ntf(block n); break;case fini sh:pri ntf(fi nishn); break;p = p_n ext;void roun d_cal()pcb *p;pcb *r;p = get_process_r oun d();int cpu = 0;r=p;while(!process_fi ni sh(p) /就绪队列中还有进程if(r-n eedtime=1)cpu+=1;elsecpu+=2; /时间片长度是2cpu_r oun d(r);r = get_ next(r,p); /获得下一个需要执行的进程p
13、rin tf(cputime:%dn,cpu);display_rou nd(p); /每调度一次就显示次set_state(p);sleep(2); free_process(p); /释放所有进程mai n()display_me nu();int k;sca nf(%d,&k);switch(k)case 1:priority_cal();break;case 2:r oun d_cal();break;case 3: break;default:pri ntf(YOU HAVE NOT CHOOSE ANY ALGORITHM!”); (2)编辑程序先来先服务调度算法fcfs.c,编译
14、并执行。#i nclude #i nclude int SUM=0,K=0;typedef struct linkint time;int averageTime;int priority;struct link *n ext;li nkno de;linknode *creat()int n,m;linknode *head,*r,*s;head=r=(li nknode *)malloc(sizeof(li nkno de);printf(输入各进程的处理时间和优先级并以两个0为结束标志:n);while(sca nf(%d %d,&n,&m)&n&m)s=(l inknode *)mal
15、loc(sizeof(li nkno de);K+;s-time=n;s_priority=m;s-averageTime=0;r-n ext=s;r=s;r-n ext=NULL;retur n head;linknode *seekAverageTime(li nknode *head)int sum=0;linknode *p;p=head-n ext;while(p)sum=sum+p-time;p-averageTime=sum;p=p-n ext;SUM+=sum;void prin t(l inknode *head)linknode *p;p=head-n ext;prin t
16、f(各进程处理时间为:);while(p)prin tf(%-4d,p-averageTime); p=p-n ext;prin tf(n);mai n()linknode *head;head=creat();seekAverageTime(head);prin t(head);printf(”平均处理时间为:%dn,(SUM/K);(1)优先级调度unspgunsp-virtual-machinej-s gee jcdd.c -o jedd un5paun5p-virtualmachine;S CHOOSE THE ALGORITHM:1 PRIORITY2 ROUNDflOBIN3 EX
17、IT1input name and1221,/jcddtime1234cputime:1 namecputime1GQeeneedtime622priority4648484947state executeready ready reddy ready|cputime:2namecputimeneedtimeprioritystate61e46finish1G248ready2G2斗8ready31e46execute4e347ready_L Jr.l!:3namecputimeneedtimeprioritystate01646finish11145xecut电26248ready31046
18、finish40347readyIcputtne:4namecputimeneedtimeprioritystate01e46iinish11145ready21145execute31e46finish4e347readylcputime!5namecputimeneedtimeprioritystate1046finish11斗5ready21145ready31e46finish412斗4execute1 cputime;enamecputimeneedtimeprioritystatee1046finish12042execute21145ready31Q46finish4124斗re
19、ady1 cputime:?namecputimeneedtimeprioritystate61$4&finish12042finish22Mexecute31046finish41244ready|cputime:8namecputimeneedtimeprioritystateG1646finish12&42finish22642finish31046finish斗21executecputime:9namecputimeneedtimeprioritystate0146finish12百42finish22642finish31046finish43038executeAllproces
20、ses have finishedunsp(aunsp-virtual-machine :-$(2)时间片轮转调度unsp(aunsp-virtual-macnine:-s ,/jcdd CHOOSE THE ALGORITHM:1 PRIORITY2 ROUNDROBIN3 EXIT2input name and time6 11 22 23 14 3cputime:1namecputimeneedtimecountstatee161execute1Q2Qready2G2Qready3e10ready4Q3flreddycputime:3 name 0cpu tinif12eQi6necdtimeG62count1state finish execute ready ready readykputime: 5name6234cputime:6 name612b匚putime12200needtime6e01
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主管在行业整合中的挑战与应对计划
- 急诊医疗文书标准化探讨计划
- 数据分析与决策支持总结计划
- 提升员工归属感的实施策略计划
- 美术班级文化建设活动计划
- 《贵州广铝水落潭矿业有限公司贵州省清镇市猫场铝土矿区水落潭矿段(新建)矿产资源绿色开发利用方案(三合一)》评审意见
- 《伊吾县九方建筑材料有限公司新疆伊吾县尤乐滚碎石矿矿产资源开发利用与生态保护修复方案》专家意见认定
- 血液净化专科护理核心
- 2025年克拉玛依货运从业资格证考试模拟
- 2025年曲靖货车上岗证理论模拟考试题库
- 小学生视力调查报告分析总结
- 2024年社区工作者考试必背1000题题库必背(必刷)
- 《短视频拍摄与制作》课件-4.短视频后期制作- 剪辑技巧
- 中考英语不规则动词变化表
- (2024年)中华人民共和国环境保护法全
- 事业单位工作人员调动申报表
- 小学科学教师培训讲座
- 电子陶瓷材料与器件制备
- 老年患者出院准备服务专家共识
- 岩脚煤矿智能化综采工作面汇报材料2020.11.10.11.10
- 四川省广安市2021年中考地理真题(含答案)
评论
0/150
提交评论