实验一二三四五六七八九十总评成绩武汉大学计算机学院课程实验(设计)报告专业(班):计算机学院信息安全 X 班 学号:姓名:XX课程名称:操作系统实验2024 年 5 月 30 日实习一 处理器调度一、实习内容选择一个调度算法,实现处理器调度.二、实习目的本实习模拟在单处理器环境下的处理器调度,加深了解处理器调度的工作。三、实习题目设计一个按优先数调度算法实现处理器调度的程序.四、实习内容1.设计思想(1)假定系统有 5 个进程,每个进程用一个 PCB 来代表.PCB 的结构为: ·进程名——如 P1~P5。·指针——按优先数的大小把 5 个进程连成队列,用指针指出下一个进程 PCB 的首地址。 ·要求运行时间--假设进程需要运行的单位时间数。·优先数-—给予进程的优先数,调度时总是选取优先数大的进程先执行.·状态—-假设两种状态:就绪和结束,用 R 表示就绪,用 E 表示结束。初始状态都为就绪状态。(2) 开始运行之前,为每个进程确定它的“优先数”和“要求运行时间”.通过键盘输入这些参数。(3) 处理器总是选择队首进程运行.采纳动态改变优先数的办法,进程每运行 1 次,优先数减 1,要求运行时间减 1.(4) 进程运行一次后,若要求运行时间不等于 0,则将它加入就绪队列,否则,将状态改为“结束",退出就绪队列。(5) 若就绪队列为空,结束,否则转到(3)重复.要求能接受键盘输入的进程优先数及要求运行时间,能显示每次进程调度的情况,如哪个进程在运行,哪些进程就绪,就绪进程的排列情况。2.上机代码#include #include 〈string。h〉#define num 5//5 个进程struct PCB//进程控制块{ char ID;//进程名 int runtime;//进程运行时间 int pri;//进程优先级 char state; //进程状态};struct PCB pcblist[num];//进程控制块数组int fnum=0;//已运行完成的进程struct PCB temp;//在冒泡排序时用于替换的 PCBvoid chushihua()//初始化程序{ int i; for(i=0;i