




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统课程实验报告实验名称:动态高优先权优先调度班 级: * 学 号: * 姓 名:* 指导老师: * 成 绩: 一、 实验目的:1.测试数据可以随即输入或从文件中读入。2.必须要考虑到作业的到达时间3.最终能够计算每一个作业的周转时间。二、实验内容:模拟实现动态高优先权优先(若数值越大优先权越高,每运行一个时间单位优先权-n,若数值越小优先权越高,没运行一个时间单位优先权+n),具体如下:设置作业体:作业名,作业的到达时间,服务时间,初始优先权,作业状态(W等待,R运行,F完成),作业间的链接指针作业初始化:由用户输入作业名、服务时间、初始优先权进行初始化,同时,初始化作业的状态为W。显示函数:在作业调度前、调度中和调度后进行显示。排序函数:对就绪状态的作业按照优先权排序。优先权相同时进入等待队列时间早的作业在前。注意考虑到达时间调度函数:每次从等待队列队首调度优先权最高的作业执行,状态变化。并在执行一个时间单位后优先权变化,服务时间变化,状态变化。当服务时间为0时,状态变为F。删除函数:撤销状态为F的作业。三、实验代码#include#include#includetypedefstruct PCB2 char name10;/进程名int runtime;/要求运行时间intfrist;/定义优先数 char zhuangtai; /定义状态,R为就绪,F为完成;struct PCB2 PCBcontrol4;/定义进程控制块数组void youxian()/构造优先函数inti,n;printf(请输入进程的个数:n);scanf(%d,&n);printf(请输入进程的名字、优先权、运行时间n);printf(n);for(i=0;in;i+)printf(请输入第%d个进程的信息:n,i+1);scanf(%s%d%d,&PCB,&PCBcontroli.frist,&PCBcontroli.runtime);PCBcontroli.zhuangtai=R;/进程初始状态均为就绪getchar();/等待回车进入下一次运行intmax_frist_process()/确定最大优先级进程子程序 int max=-10;/max为最大优先数,初始化为-10inti,key;for(i=0;i5;i+) if(PCBcontroli.zhuangtai=r)/r表示正在运行 return -1;/返回-1else if(maxPCBcontroli.frist&PCBcontroli.zhuangtai=R)/从就绪进程中选取优先数最大的进程 max=PCBcontroli.frist;/max存放每次循环中的最大优先数 key=i;/将进程号赋给key if(PCBcontrolkey.zhuangtai=F)/具有最大优先数的进程若已运行完毕 return -1;/则返回-1else return key;/将key作为返回值返回 void show()/显示函数 int i;printf(n进程名优先级运行时间当前状态n);printf(*n); for(i=0;i5;i+)/依次显示每个进程的名、优先数、要求运行时间和状态 printf( %st %dt %dt %stn,&PCB,PCBcontroli.frist,PCBcontroli.runtime,&PCBcontroli.zhuangtai); printf(n请按回车键进行查看); void run()/进程运行子程序 inti,j;int t=0;/t为运行次数for(j=0;j5;j+) t+=PCBcontrolj.runtime;/运行次数即为各个进程运行时间之和printf(n进程没运行前,当前的状态是:n); show(); /调用show()子程序显示运行前PCB的情况getchar();/等待回车进入下一次运行for(j=0;jt;j+) while(max_frist_process()!=-1)/具有最大优先数的进程没有运行完,让其运行 PCBcontrolmax_frist_process().zhuangtai=r;/将其状态置为r,表示其正在运行 for(i=0;i5;i+) if(PCBcontroli.zhuangtai=r) PCBcontroli.frist-=1;/将当前运行进程的优先数减1PCBcontroli.runtime-;/要求运行时间减1 if(PCBcontroli.runtime=0)PCBcontroli.zhuangtai=F;/运行完则将该进程状态置为结束elsePCBcontroli.zhuangtai=R;/未运行完将其状态置为就绪 show();/显示每次运行后各PCB的情况getchar();/等待回车进入下一次运行 void main() int N;int number; char Tishikuang;/提示框doprintf( *n);printf(*嵌入式软件14-01班*51*杨霖*n);printf( * 输入 1高优先权优先服务法 *n);printf( * 输入 0退出该程序 *n);printf( *n);printf(n注:请根据自己的需求选择相应的操作数:n);scanf(%d,&number);/*提示输入字母,用switch语句存入到case中,最后增加提示框是否继续*/switch(number) case 0:break;case 1:printf(n您选择的是“优先服务项目”,本程序可提供5个进程的调度。nn);youxian();/初始化各个进程PCB run();/进程调度模拟break;default:printf(n你的输入有误,请确定是从0到5之间进行输入,O(_)O谢谢n);break; printf(n是否继续操作(y/n) ?);fflush(stdin);Tishikuang=getchar();while(Tishikuang=y|Tishikuan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 综合探究七 区域的变化说课稿-2023-2024学年初中历史与社会(人文地理)七年级下册人教版(新课程标准)
- 本单元复习与测试说课稿-2025-2026学年初中英语新世纪版七年级第一学期-新世纪版试用本
- 2025关于合同解除的赔偿标准
- 2025贵阳市科技创新基金合同书
- 篮球:传切配合及体能练习 教学设计-2023-2024学年高一上学期体育与健康人教版必修第一册
- 呼和浩特事业单位笔试真题2025
- 2025企业食堂管理承包合同
- 2025标准购房合同协议书 房屋买卖合同
- 2025型材供应购销合同
- 2025个人借款轿车抵押合同书
- 基本不等式课件-高三数学一轮复习
- DL∕T 2568-2022 电力行业数字化审计平台功能构件与技术要求
- 足太阳膀胱经(经络腧穴课件)
- 部编人教版《道德与法治》六年级上册第9课《知法守法 依法维权》精美课件(第1课时)
- 消防喷淋系统设计合同范本
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 2024年四川省广安市中考数学试题(含答案逐题解析)
- 山西省太原三十七中2023-2024学年九年级上学期月考物理试卷(10月份)
- (幻灯片)世界各国国旗大全中文
- 物流地产发展前景分析
- 三年个人成长路线图:高中数学名师工作室
评论
0/150
提交评论