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

流程:

测试结果:

相关推荐
晓蛋2 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
牵猫散步的鱼儿2 天前
重载、重写(覆盖)、重定义区别
c语言
猎头南楼2 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
phltxy2 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
phltxy2 天前
C 语言中的数据存储:从类型到二进制位
c语言
旖旎夜光2 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控