DJ3-3 进程调度

目录

3.3.1  进程调度的任务、机制和方式

1. 进程调度的任务

2. 进程调度机制

3. 进程调度的方式

3.3.2  轮转调度算法

1. 时间片轮转法(Round Robin,RR)

2. 时间片的设置

3. 举例

4. 小结

3.3.3  优先级调度算法

1. 优先级调度算法的类型

2. 优先级的类型

3.3.4  多队列调度算法

3.3.5  多级反馈队列调度算法

1. 调度机制

2. 调度算法的性能


3.3.1  进程调度的任务、机制和方式

1. 进程调度的任务

  • 保存处理机的现场信息
  • 按某种算法选取进程
  • 把处理机分配给进程

2. 进程调度机制

  • 排队器
  • 分派器
  • 上下文切换器

3. 进程调度的方式

1)非抢占方式(Nonpreemptive Mode)

2)抢占方式(Preemptive Mode)

抢占的原则:

  • 优先权原则
  • 短进程优先原则
  • 时间片原则

3.3.2  轮转调度算法

1. 时间片轮转法(Round Robin,RR)

按照 FCFS 算法,将所有的就绪进程排成一个就绪队列,并设置每隔一定时间间隔产生一次中断。当时间片耗尽时,由计时器发出时钟中断请求,进程调度程序据此信号来停止当前进程的执行,并将其送往就绪队列的末尾。

激活系统中的进程调度程序:

  1. 将 CPU 分配给队首进程
  2. 当该进程的时间片耗尽或运行完毕时,系统将 CPU 分配给新的队首进程

这样就能保证就绪队列中的所有进程,在一给定的时间内,均能获得一个时间片的处理机执行时间。从而使系统在给定的时间内,响应所有用户的请求。

2. 时间片的设置

进程切换将会增加系统的额外开销。

  • 时间片设定得太短,进程切换会非常频繁,从而降低处理机的效率;
  • 时间片设定得太长,将无法满足交互式用户对响应时间的要求。

因此,时间片大小的确定应综合考虑系统的最大用户数、响应时间、系统效率等多种因素。

3. 举例

进程名 A B C D E 平均
到达时间 0 1 2 3 4
服务时间 4 3 4 2 4

RR

q=1

完成时间 12 10 16 11 17
周转时间 12 9 14 8 13 11.2
带权周转时间 3 3 2.8 4 3.25 3.2

RR

q=4

完成时间 4 7 11 13 17
周转时间 4 6 9 10 13 8.4
带权周转时间 1 2 2.25 5 3.25 2.7

采用基于 RR 调度法,进程的平均周转时间和平均带权周转时间并不比采用 FCFS 和 SPF 算法小。除此之外,上图忽略了进程切换时的系统开销,而在实际操作系统中,这类额外开销是客观存在的。加上进程切换所需的系统开销时间,RR 算法的平均带权周转时间还会增加。

甘特图

在任一时间片初,

  1. 先让新到达的进程排到队尾
  2. 再让耗尽上一个时间片的进程排到队尾

DJ3-3 进程调度_第1张图片

蓝色指示队首

q=1

DJ3-3 进程调度_第2张图片

q=4

时间片选择得太长,每个进程都能在一个时间片内完成,此时 RR 算法便退化为 FCFS 算法。

DJ3-3 进程调度_第3张图片

4. 小结

RR 算法常用于分时系统及事务处理系统,合理的时间片大小将带来满意的响应时间。

通常,合理的时间片指,能让 80% 左右的进程在一个时间片内完成。

对于短的、计算型的进程较有利。

不适合于批处理系统的进程调度。

不利于 I/O 型的进程。

改进的方法之一,可以将 I/O 阻塞事件完成的进程单独组织一个就绪队列,该队列进程的时间片可以设置的小一些,且优先调度。

3.3.3  优先级调度算法

1. 优先级调度算法的类型

1)非抢占式优先级调度算法

2)抢占式优先级调度算法

 

Q:如何设定进程的优先级?

  • 进程完成功能的重要性  
  • 进程完成功能的急迫性 
  • 进程对资源的占用程度。如:可以为短进程或短作业赋予较高的优先级。

2. 优先级的类型

1)静态优先级

静态优先级是在创建进程时确定的,在进程的整个运行期间保持不变。优先级是利用某一范围内的一个整数来表示的,例如 0~255 中的某一整数,又把该整数称为优先数。

确定进程优先级大小的依据有三个方面:

  • 进程类型。通常系统进程的优先权高于一般用户进程的优先级。
  • 进程对资源的需求。对资源要求少的进程应赋予较高的优先级。
  • 用户要求。根据进程的紧迫程度及用户所付费用的多少确定优先级。

2)动态优先级

动态优先级是指在创建进程之初,先赋予其一个优先级,然后其值随进程的推进或随其等待时间的增加而改变,以便获得更好的调度性能。

3.3.4  多队列调度算法

  • 该算法将系统中的进程就绪队列拆分为多个
  • 将不同类型或性质的进程固定分配在对应的就绪队列
  • 不同的就绪队列采用不同的调度算法
  • 进程可以有不同的优先级,队列也可以有不同的优先级

3.3.5  多级反馈队列调度算法

1. 调度机制

DJ3-3 进程调度_第4张图片

1)设置多个就绪队列。

  • 为各个队列赋予不同的优先级。
  • 为各个队列设置不同长度的时间片。

第一个队列的优先级最高,第二个次之,其余队列的优先级逐个降低。在优先级愈高的队列中,其时间片就愈小。

2)每个队列都采用 FCFS 算法。当新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。

  • 当轮到该进程执行时,如它能在该时间片内完成,便可撤离系统;
  • 如果它在一个时间片结束时尚未完成,调度程序便将其转入第二队列的末尾等待调度。

3)如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,依次类推。

4)仅当第一队列空闲时,调度程序才调度第二队列中的进程运行。

2. 调度算法的性能

该算法具有较好的性能,能较好地满足各种类型用户的需要。

1)终端型作业用户

交互型作业通常较小,能在第一队列规定的时间片内完成,可使终端型作业用户感到满意。

2)短批处理作业用户有利

一般可在第一队列中执行完成,最多也不会超过第三队列。

3)长批处理作业用户

对于长作业,它将依次在第 1,2, … ,n 个队列中运行,然后再按轮转方式运行,用户不必担心其作业长期得不到处理。

 

你可能感兴趣的:(计算机操作系统,学习,计算机操作系统)