基于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)

流程:

测试结果:

相关推荐
梓䈑5 小时前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先
Adios7947 小时前
设置交集大小至少为2
数据结构·算法·leetcode
海阔天空任鸟飞~8 小时前
Linux 权限 777
linux·运维·服务器
Kina_C11 小时前
Linux iptables 防火墙原理与实操——从四表五链到 NAT 配置
linux·运维·服务器·iptables
碎光拾影13 小时前
i.MX6ULL时钟系统配置指南
c语言·arm开发·嵌入式硬件
GeekArch13 小时前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
来一碗刘肉面14 小时前
栈的应用(表达式求值)
数据结构·算法
xiaowang1234shs15 小时前
怪兽轻断食技术深度测评:从断食计时引擎到AI识别算法的工程实践解析
数据库·人工智能·算法·macos·机器学习·p2p·visual studio
小果因子实验室15 小时前
量化研究--策略迁移算法1研究
算法