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

流程:

测试结果:

相关推荐
apocelipes16 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
HjhIron17 小时前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩19 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹20 小时前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
程序员老赵21 小时前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
vivo互联网技术1 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
浮生望1 天前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
黄敬峰1 天前
面试必刷:从JS底层包装类到双指针,彻底搞懂字符串与回文算法
算法