版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、northeast petroleum university操作系统分析及实践课程实验报告实验项目:进程调度专业班级:学生姓名:学 号:课程教师:指导教师:实验时间:2017 年 3 月 16 日计算机科学系实验题b:进程调度 实验目的:1. 理解有关进程控制块、进程队列的概念。2. 掌握进程优先权调度算法和时间片轮转调度算法的处理逻辑。实验要求:1. 认真阅读实验指导书,设计出进程调度中的优先权算法或时间片轮转算法;2. 根据设计的算法写出程序;3. 在运行环境中测试程序,并保证顺利执行,得出正确结果。实验内容:实验分析调度算法是指根据系统的资源分配策略所规定的资源分配算法,不同的系统和系
2、统目标,通常采用不同的调度算法。优先权调度是为了照顾紧迫型作业,而时间片轮 转调度是为了响应分时系统中用户的请求。本次实验涉及了非抢占式优先权算法和时 间片轮转算法,前者就是把处理机分配给就绪队列中优先级最高的进程直至执行完成, 后者是将就绪进程按先后顺序排成队列,每次调度把cpu分配给队首进程并令其执行 一个时间片。其中,用结构体表示pcb,函数initialization()用于创建就绪队列,函数 cpuo用于按优先权给各个进程分配处理机,函数rro用于实现时间片轮转。程序代码#include<stdio.h>#include<stdlib.h>#include&l
3、t;string.h> struct process /进程控制块int busttime;/周转时间 int remainingtime;/剩余时间 int priority;/优先级 int state;/状态(1就绪2执行3终止) int startnumber;/进程最开始的编号 pcb6,copypcb6; int num,timeslice; void initialization_fpf()/pcb优先级调>初始化printf(”请输入进程数时间片:"); scanf(n%d %d,&num,×lice); printf("
4、;请输入各个进程:n"); for(int i=l;i<=num;i+)printf("周转时间优先级scanf(n%d%dn,&pcbi.busttimc,&pcbi.priority);pcbi.remainingtime=pcbi.busttime;pcbi.state=l;pcbi. startn umber=i;memcpy(copypcb,pcb,sizeof(pcb);void initialization_rr()/pcb吋间片轮為初始化printf(”请输入进程数时间片门; scanf("%d %d",&n
5、um,×lice); printf("请输入各个进程的周转时间:n"); for(int i=l;i<=num;i+)printf("周转时间; scanf("%d",&pcbi.busttime);pcb i .remainingtime=pcb i .busttime; pcbi.state=l;pcbi.startnumber=i;memcpy(copypcb,pcb,sizeof(pcb);void sort一priorityf)/按优克级对进程排序 for(int i=l;i<=num;i+) f
6、or(int j=i;j<=num;j+)if(pcb i.priority>pcbj .priority)int m=pcbi.startnumbcr;pcb i=copy pcb pcb |j . startnumber; pcbj=copypcbm;void show()/优先调度显示各进程状态printff进程周转时间剩余时间优先级状态nn); for(int i=l;i<=num;i-h-)char zhuangtai10;if(pcbi.state=l) strcpy(zhuangtai,"就绪"); if(pcbi.state=2) strc
7、py(zhuangtai,"执行"); if(pcbi.state=3) strcpy(zhuangtai,"终止);printf(" p%d %d%d%d %snh,pcbi.startnumber,pcbi.busttime,pcbi.remainingtime,pcbi.priority,zhuangtai);void show_rr()/时间片绝转显示各进程状态printff进程周转时间剩余时间状态n"); for(int i=l;i<=num;i+)char zhuangtai10;if(pcbi.state=l) strcpy
8、(zhuangtai,"就绪"); if(pcbi.state=2) strcpy(zhuangtai,"执行); if(pcbi.state=3)strcpy(zhuangtai,"终止"); printff p%d%d%d %snn,pcbi.startnumber,pcbi.busttime,pcbi.remainingtime,zhuangtai);void cpu(int i,int count,int t)/静态优先权if(count=num) return; else if(pcbi.state!=3)if(pcbi.rcmain
9、ingtimc>t)pcbi.remainingtime=pcbi.remainingtime-t;pcbi.state=2;show();t=timeslice;systemfpause");cpu(i,count,t);t=-l;if(pcbi.remainingtime=t)pcbi.remainingtime=o;pcbi.state=3;show(); count+; t=timeslice; systemfpause"); if(i+lnum) return;cpu(i+l,count,t); t=-l;if(pcbi.remainingtime<t
10、)t=t-pcb i .remainingtime; pcbi.remainingtime=o;pcbi.state=3;show();count+;if(i+l>num) return; system(pause);cpu(i+l,count,t); t=-l;void fpf()/优先级调度lnitialization_fpf(); sort_priority(); int count=0; int i=l;int t=timcslicc; cpu(i,count,t);void rr()/时间片轮转initialization_rr(); int count=0; int i=0;
11、while(count<num)if(pcbi+l.state=l)int block=0;if(pcbi+l.remainingtime>timeslice)pcbi+lj.remainingtime=pcbi+l.remainingtime-timeslice;pcbi+l.statc=l;block=l;if(block=0&&pcb i+1 .remainingtime<=timeslice)pcbi+l.remainingtime=o;pcbi+l.state=3;count+;i=(i+l)%num;if(i%num=o)show_rr();sys
12、tem(pausen);show_rr(); void main()/主函数printf("请选择调度类型:n"); printffl.优先权调度n"); printf(n2.吋间片轮转调度n"); int choose;$canf(,%d'*,&choose);switch(choose)case l:fpf();break; case 2:rr0;break; default:break;实验结果与记录:如图3-1,选择优先权调度,输入各个进程,得到如图3-2所示的运行结果。同样 地,图3-3显示了时间片轮转调度的输入与输出。&quo
13、t;e:c20170315debug20170315.exe"图3-1进程周转时间剰余时间优先级 p3311p2442p1223请按任意键继续.进程周转时间剰余时间优先级 p3301p2442p1223请按任意键继续.进程周转时间剰余时间优先级 p3301p2432p1223请按任意键绽续.进程周转时间剩余时间优先级 p3301p2412p1223済按任意键继续.进程周转时间剰余时间优先级f按任意键继续.:程周转时间剰余时间优先级清按任意键继续.进程周转时问剰余时间优先级 p3301p2402p1203?ress any key to continue e:c20170315debu
14、g20170315.exe"1. 优先权调度2. 时间片轮转调度i育输入进程数时间片:4 20 请输入各个进程的周转时间:周转时间:53周转时间:17 周转时间:68 周转时间:24进程周转时间剰余时间状态p15333就绪p2170终止p36848就绪p4244就绪请按任意键继续.进程周转时间剩余时间状态p15313就绪p2170终止p36828就绪p4240终止p1530终止p2170终止p3688就绪p4240终止请按任意键继续i 进程周转时间剰余时间状态p1530终止p2170终止p3680终止1 p4240终止pressany keyto continue请按任意键继续.进程周转时间剰余时间状态图3-3图3-2收获与体会:在进行实验的过程中,根据实验指导书及教师的指导,很成功的完成了实验。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《分馏系统》课件
- 《妈妈的账单课堂》课件
- 小学一年级20以内100道口算题
- 电工安全培训资料(5篇)
- 石榴籽一家亲民族团结心连心心得体会5篇
- 小学数学一二年级100以内连加连减口算题
- 《用户画像业务讨论》课件
- 小学数学三年级下册《小数点加减法》口算练习题
- 《刑事诉讼法学教学》课件
- 小学三年级数学三位数加减法练习题-可直接打印
- 金工钒钛科技有限公司-年处理600万吨低品位钒钛磁铁矿选矿项目可行性研究报告
- ncv65系列安装金盘5发版说明
- 国能神皖安庆发电有限责任公司厂内108MW-108MWh储能项目环境影响报告表
- 华中师大《线性代数》练习测试题库及答案4096
- 铁路试验检测技术
- 2023-2024人教版小学2二年级数学下册(全册)教案【新教材】
- 小学奥数基础教程(附练习题和答案)
- 九年级语文上学期教学工作总结
- TWSJD 002-2019 医用清洗剂卫生要求
- GB/T 7324-2010通用锂基润滑脂
- 杭州地铁一号线工程某盾构区间实施施工组织设计
评论
0/150
提交评论