基于C语言处理机调度算法的实现

♻️ 资源

大小: 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 表示。proc0为队列的头部,procQLen-1为队列的尾部。

(2)输入 PCB 信息后,将进程在数组中按优先数排序,将首进程运行一个时间片后,再调整进程的顺序,模拟队列的变化情况

(3)设计测试数据,分析程序运行情况,并进行调试

算法描述:

(1)输入每个进程的 PCB 信息,同时确定就绪队列的长度 Qlen

(2)按优先数大小,用冒泡排序将未结束的进程进行排序

(3)显示 PCB 数组

(4)若 proc0.time!=1,选中首进程,执行一个时间片,即运行时间减 1,优先数减 1。

然后将 PCB 数组按优先数大小调整顺序

(5)若 proc0.time==1,选中首进程,执行一个时间片,即运行时间减 1,优先数减 1。

然后再将 PCB 数组按优先数大小调整顺序,同时将 QLen 减 1

(6)若 Qlen==0,则就绪队列为空,结束。否则重复(3)

流程:

测试结果:

相关推荐
Brilliantwxx1 小时前
【算法从零到千】【16-23】 二分算法
数据结构·算法
草莓熊Lotso1 小时前
【Linux网络】深入理解 TCP 协议(二):序号机制、流量控制与连接管理
linux·运维·服务器·网络·c++·tcp/ip
云飞云共享云桌面2 小时前
SolidWorks服务器+云飞云共享云桌面 = 10人共享方案
linux·运维·服务器·网络·制造
8Qi87 小时前
回文子串(Palindromic Substrings)—— 题解
算法·leetcode·职场和发展·动态规划
xskukuku8 小时前
使用VSCode配置C语言运行环境
c语言·ide·vscode
HackTwoHub10 小时前
最新Nessus2026.6.8版本主机漏洞扫描/探测工具Windows/Linux
linux·运维·服务器·安全·web安全·网络安全·安全架构
QWEDDRFTG11 小时前
C13/C19怎么选?服务器电源线电流与接口选型技巧
服务器
小宋加油啊12 小时前
机械臂抓取物体 PVN3D算法调研学习
学习·算法·3d