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

流程:

测试结果:

相关推荐
736c4 分钟前
C语言-结构体 08
c语言
736c22 分钟前
C语言-数组 07
c语言·开发语言
shehuiyuelaiyuehao28 分钟前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
kakakahahahaha1 小时前
【Windows】C盘低空间反复复发的排查与扩容边界
c语言·windows·电脑·笔记本电脑·内容运营·软件需求
203号居民2 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾2 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP3 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
Brilliantwxx3 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
ai小陈3 小时前
FramePack图生视频云端部署实战:从单图输入到视频输出的完整流程
服务器·人工智能·安全·ai·音视频·gpu算力
ZhouDevin4 小时前
算法论文/数据集3——CLD(TMLR2025)压缩训练集,仅保留对验证集有益的样本
人工智能·深度学习·算法·计算机视觉