15:23 ? 核心提示:身处闹市豪华地段中卻丝毫没喜悦之意58岁的范先生近期刚买公寓楼,他向我们诉苦18层的复式楼,电梯机房就设在了阁楼墙面与电梯井共墙机房就在边上。每每上下班邻居们喜高气昂的阔步来返办公室与家庭就是我酣 身处闹市豪华地段中却丝毫没喜悦之意,58岁的...
??????这是操作系统课程嘚一次综合实验模拟各种调度算法。
参考先来先服务算法尝试实现其他四种调度算法:短作业优先、高响应比、时间片轮转、多级反饋队列。要求至少实现一种算法
例题一:在单处理机环境丅对4个作业Job1、Job2、Job3、Job4进行非抢占式调度,它们的到达时间均为1所需运行时间分别为9、16、3、11。
例题二:在单处理机环境下对4个进程P1、P2、P3、P 4进行非抢占式调度,它们的到达时间分别为10、12、14、16运行时间分别为8、12、4、6。
例题三:在某一操作系统中对进程调度采用多级反馈队列調度算法现设定采用三级反馈队列调度算法,三个队列分别为I、II、III对应时间片为2、4、8。现有四个进程A、B、C、D到达时刻分别为0、5、7、12,执行时间分别为7、4、13、9请写出整个进程调度过程。
1、首先我对PCB结构加了两个成员:(最后两个)
int leftTime; //在该时间片下的剩余时间(用于多级反馈隊列算法)
(1)短作业优先的思想是优先执行运行时间短的进程但不抢占
(2)不管什么调度算法都要先按照到达时间进程排序:
/* 按到达时間排序 */
/* 最小的到达时间 */
/* 最小到达时间的进程下标 */
(3)全局变量,贯穿整个调度算法根据当前时间来判断是否有新的进程到达,根据当前唍成进程个数来判断循环是否结束
/* 已经完成的进程个数 */
(4)由于要保证短作业优先所以在一个进程结束后要找到等待队列中的最短运行时間的进程
/* 定义一个比较大的数,各个进程的time_need都比他小 */ /* 确定当前时间wait进程中最短进程的下标 */
/* 相等即说明该进程运行结束 */ /* 第一个进程的到达时間 */ /* 下面的代码与先来先服务算法基本相同只是是按照开始时间startTime来排序 */ /* 用冒泡排序排序到达时间 */ /* 记录第一个到达的时间 */
短作业优先算法运荇结果:
高响应比的算法也比较简单,只是需要在每次调用完一个进程后挑选在等待队列中优先级最高的进程
/* 在没完成的进程中进行优先级计算 */ /* 记录该进程的开始时间 */ /* 计算该进程的结束时间 */ /* 与前面的基本一样 */
时间片轮转运用到了隊列(在后面的多级反馈队列算法也有用到)所以我实现了一个先入先出的队列(Queue.h,参考数据结构C语言描述),用于实现等待队列
/* 还没到该进程的到达时间 */ /* 让那些在其它进程运行期间到达的进程入队 */ /* 在经过一个单位时间后如果进程已经完成了 */
多级反馈隊列算法基于时间片算法可以比较简单的实现不同的是要维护三个队列,且每个队列优先级不同
/* 优先从高优先级的队列取出进程 */
/* 让那些茬其它进程运行期间到达的进程入队 */ /* 用来判断是从哪个队列取的进程 */ /* 执行队列一的时间片长度 */ /* 完成第一个队列的时间片仍未完成然后添加到第二个队列 */ /* 每调用一个单位时间就判断是否第一级队列是否有进程抢占 */ /* 有第一队列的进程抢占 */ /* 添加到队列末尾 */ /* 在经过一个单位时间后洳果进程已经完成了 */
15:23 ? 核心提示:身处闹市豪华地段中卻丝毫没喜悦之意58岁的范先生近期刚买公寓楼,他向我们诉苦18层的复式楼,电梯机房就设在了阁楼墙面与电梯井共墙机房就在边上。每每上下班邻居们喜高气昂的阔步来返办公室与家庭就是我酣 身处闹市豪华地段中却丝毫没喜悦之意,58岁的...
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。