♻️ 资源
大小:386KB
➡️资源下载:https://download.csdn.net/download/s1t16/87450278
基于C语言处理机调度算法的实现
实验目的
了解操作系统处理机调度的基本概念,处理机调度程序的功能,常用的处理机调度算法。C 或 C++ 编程方法与语句格式
实验内容(应包括实验题目、实验要求、实验任务等)
实验题目:
处理机调度算法的实现
实验要求:
1.设定系统中有五个进程,每一个进程用一个进程控制块表示。
\2. 输入每个进程的“优先数”和“要求运行时间”,
3.为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。
\4. 处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1”,同时将运行时间减“1”。
5.若要求运行时间为零,则将其状态置为“结束”,且退出队列。
6.运行所设计程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。
实验任务:
实现动态优先数调度算法
步骤:
(1) 假定系统有 5 个进程,每个进程用一个 PCB 表示,格式为:
进程 id:可以为字符串
时间 time:进程需要运行的单位时间数
优先数 pty:赋予进程的优先数,调度时总是选取优先数大的进程先执行
状态 is_end:未结束(N),结束(Y)。未结束的进程为就绪态
就绪队列用 PCB 数组 proc 表示。proc[0]为队列的头部,proc[QLen-1]为队列的尾部。
(2)输入 PCB 信息后,将进程在数组中按优先数排序,将首进程运行一个时间片后,再调整进程的顺序,模拟队列的变化情况
(3)设计测试数据,分析程序运行情况,并进行调试
算法描述:
(1)输入每个进程的 PCB 信息,同时确定就绪队列的长度 Qlen
(2)按优先数大小,用冒泡排序将未结束的进程进行排序
(3)显示 PCB 数组
(4)若 proc[0].time!=1,选中首进程,执行一个时间片,即运行时间减 1,优先数减 1。
然后将 PCB 数组按优先数大小调整顺序
(5)若 proc[0].time==1,选中首进程,执行一个时间片,即运行时间减 1,优先数减 1。
然后再将 PCB 数组按优先数大小调整顺序,同时将 QLen 减 1
(6)若 Qlen==0,则就绪队列为空,结束。否则重复(3)
流程:
测试结果: