动态高优先权优先.docx
《动态高优先权优先.docx》由会员分享,可在线阅读,更多相关《动态高优先权优先.docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上操作系统课程实验报告实验名称:动态高优先权优先调度班 级: * 学 号: * 姓 名:* 指导老师: * 成 绩: 一、 实验目的:1.测试数据可以随即输入或从文件中读入。2.必须要考虑到作业的到达时间3.最终能够计算每一个作业的周转时间。二、实验内容:模拟实现动态高优先权优先(若数值越大优先权越高,每运行一个时间单位优先权-n,若数值越小优先权越高,没运行一个时间单位优先权+n),具体如下:设置作业体:作业名,作业的到达时间,服务时间,初始优先权,作业状态(W等待,R运行,F完成),作业间的链接指针作业初始化:由用户输入作业名、服务时间、初始优先权进行初始化,同时,
2、初始化作业的状态为W。显示函数:在作业调度前、调度中和调度后进行显示。排序函数:对就绪状态的作业按照优先权排序。优先权相同时进入等待队列时间早的作业在前。注意考虑到达时间调度函数:每次从等待队列队首调度优先权最高的作业执行,状态变化。并在执行一个时间单位后优先权变化,服务时间变化,状态变化。当服务时间为0时,状态变为F。删除函数:撤销状态为F的作业。三、实验代码#include#include#includetypedefstruct PCB2 char name10;/进程名int runtime;/要求运行时间intfrist;/定义优先数 char zhuangtai; /定义状态,R为
3、就绪,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,&PCBcontroli.name,&PCBcontroli.frist,&PCBcontroli.runtime);PCBcontroli.zhuangtai=R;/进程初始状态均为就绪getchar();/等待
4、回车进入下一次运行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.zhuan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 优先权 优先
限制150内