版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳购买商铺合同范本
- 农用设备分期购买合同
- 厨房电线购买合同范本
- 购买阳台防晒棚合同书
- 蒸汽管道购买合同模板
- 一次性购买房屋合同模板
- 农村房屋跨村购买合同
- 家具店样品购买合同范本
- 购买折旧机器设备合同
- 2026年浙江省温岭市高考物理5月学情自测测试卷及参考答案详解【轻巧夺冠】
- 2026年四川爱众乐享医养产业有限公司公开招聘劳务派遣工作人员15人的备考题库及完整答案详解1套
- 重大事故隐患自查自改常态化机制
- 国际对外汉语课件
- DB12-T 1449-2025 电子公文数据智能化管理规范
- 防疫物资购销合同范本
- 2025年中国粮仓数据监测研究报告
- 粮食烘干生产安全培训课件
- 四川省甘孜州2024-2025学年八年级下学期期末历史试题(含答案)
- 电驱测试基础知识培训课件
- 《抽水蓄能工程建设项目保险管理导则》编制说明
- 2025年山东档案职称考试(档案高级管理理论与工作实务)历年参考题库含答案详解(5套)
评论
0/150
提交评论