操作系统 进程调度管理 最基本的五种算法

背景

CPU调度

当CPU空闲时(When CPU is idle), 它必须在短期调度队列里面选择下一个需要执行的进程。但是,这个短期调度队列不一定是一个FIFO(first in first out)的队列(queue), 它有可能优先级队列(heap, priority queue), 也可能是一个树(tree), 也可能是一个无序的链表(unordered linked list)。

抢占式调度

CPU调度策略在以下四个情况可能会发生:

  1. 一个进程从running state被切换到 waiting state(例如等待某些I/O请求时)
  2. 一个进程从running state被切换到ready state就绪状态(例如发生了中断)
  3. 一个进程从waiting state被切换到 ready state就绪状态(例如完成了I/O操作)
  4. 一个进程终止(terminate)

非抢占式即是一个进程从创建到终止,都在占用CPU资源。而抢占式则是一种允许某些进程替换当前正在占用CPU资源的进程的机制。

一些特定的时间

等待时间: 从某个进程进入调度队列后,到该进程运行完毕这段时间中,该进程未被处理的时间。
轮转时间: 某个进程从进入调度队列到运行完毕被移出调度队列的这段时间。
带权周转时间: 轮转时间/进程需要运行的时间

FCFS先来先服务

将调度队列看成一个FIFO的queue, 按顺序一个一个无抢占执行。
假设P1 P2 P3同时到达, 后面的数字表示要运行的时间。
FCFS例题

SJF短作业优先

抢占式,先处理当前时间里最短的进程。
假设P1 P2 P3 P4同时到达,后面的数字依然是运行时间。
SJF例题

shortest remaining first最短剩余优先

这个其实是引入了进程到达队列时间的SJF,同为抢占式。
SRF

最高优先级调度 Priority Scheduling

抢占式, 永远处理队列中最高优先级的进程。
图中的优先级与代表优先级的数之间的关系看清楚题目中的定义。 可能数字越大优先级越大,也可能数字越小优先级越大。
优先级调度
上图的平均带权轮转时间

RR 时间片轮转

设置一个时间片,对当前队列中的每个进程:
if(剩余处理时间<时间片大小)进程结束
else当前时间片结束后,该进程移至队尾

RR

以上便是进程管理中最基本的五种算法,希望各位同学可以结合例题,从简单题目开始慢慢分析,将每个算法搞清楚。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值