作业管理——进程调度

什么是进程调度

进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用权 ,因为操作系统有多个进程,所以进程调度和多道程序设计密切相关。

进程调度有两个步骤

  1. 保存旧进程的运行信息,请出旧进程。即某一个进程不能运行了,就需要让它收拾包袱,离开CPU
  2. 选择新的进程,准备运行环境并分配CPU。即准备好CPU环境,让新的进程可以在CPU环境里运行

三种重要机制

为了实现上述进程调度的两个步骤,需要了解三种重要机制:

1.就绪队列的排队机制
就绪队列里摆放1个或者多个就绪的进程,它把就绪进程按照一定的方式排成队列,方便调度程序最快找到就绪进程

2.选择运行进程的委派机制
要求可以从就绪队列里面选出一个进程,让它在CPU里面执行,即调度程序以一定的策略选择就绪队列,将CPU资源分配给它

3.新老进程的上下文切换机制
如果需要把新的进程调度到CPU里面的话,就需要将老的进程的CPU环境备份出来,将新的CPU的环境切换到CPU里面。即保存当前进程的上下文信息,装入被委派执行的进程的运行上下文。
CPU里面有一个Cache,这一机制就是将老进程的上下文备份放到主存里面,然后把新进程的上下文调度到CPU里面准备好环境让新的进程可以运行起来。

如果进行进程调度的时候,老进程还没有执行完该怎么办?
按照老进程是否执行完成,可以将进程调度的方法分为两大类:
1.非抢占式的调度
指的是一旦CPU分配给了某一个进程,就让这个进程一直使用下去,调度程序不管任何原因都不能抢占正在被使用的处理器。只要进程运行起来,都不能把它请出当前的CPU,只有进程完成了工作退出了或者IO阻塞了才会让出处理器

2.抢占式的调度
允许调度程序以一定的策略暂停当前运行的进程,不管当前进程有没有运行完,都可以进行暂停,然后保存好它的上下文信息,分配处理器给新的进程。

抢占式调度 非抢占式调度
系用开销 频繁切换,开销大 切换次数少,开销小
公平性 相对公平 不公平
应用 通用系统 专用系统

进程调度算法

1.先来先服务调度算法
指的是就绪队列里,优先取出队首进行调度

2.短进程优先调度算法
优先选择就绪队列里面运行时间估计最短的进程,进程时间越短越优先调度,不利于一些长作业进程的执行,长作业必须等待比它时间短的所有进程运行结束才能执行

3.高优先权优先调度算法
以优先级为基础,进程附带优先权,调度程序优先选择权重高的进程进行调度,可以使得紧迫的任务可以优先处理。

4.时间片轮转调度算法
是绝对公平的算法,按照先来先服务的原则排序好就绪进程,每次从队首取出待执行的进程,分配给他一个时间片进行执行,把这个时间片用完后,不管进程有没有执行完,都把这个进程插入到队尾,取出第二个就绪进程进行分配和执行,每一个进程分配的时间片都是一样的,因此时间片轮转是绝对公平的算法,但是它不能保证及时的响应用户的操作。

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/108314171