【408计算机考研】操作系统——第二章 进程与线程(二)

文章目录

  • 第二章 进程与线程(二)
    • 2.2 处理机调度
      • 2.2.1 调度的概念
      • 2.2.2 调度的目标
      • 2.2.3 调度的实现
      • 2.2.4 典型的调度算法
      • 2.2.5 进程切换
    • 章节导图

第二章 进程与线程(二)

2.2 处理机调度

2.2.1 调度的概念

1. 调度的基本概念
处理机调度对处理机进行分配,即从就绪队列中按照一定的算法(公平、商效的原则)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题

2. 调度的层次
调度的层次分为以下三类:
高级调度(作业调度)作业调度是内存与辅存之间的调度
中级调度(内存调度):引入中级调度的目的是提高内存利用率和系统吞吐量将那些暂时不能运行的进程调至外存等待,此时进程的状态称为挂起态中级调度实际上是存储器简理中的对换功能。
低级调度(进程调度)按照某种算法从就绪队列中选取一个进程,将处理机分配给它进程调度是最基本的一种调度,在各种操作系统中都必须配备这级调度。进程调度的频率很高,一般几十毫秒一次。
【408计算机考研】操作系统——第二章 进程与线程(二)_第1张图片
3. 三级调度的联系

  1. 作业调度为进程活动做准备进程调度使进程正常活动起来
  2. 中级调度将暂时不能运行的进程挂起中级调度处于作业调度和进程调度之间
  3. 作业调度次数少,中级调度次数略多,进程调度频率最高
  4. 进程调度是最基本的,不可或缺

2.2.2 调度的目标

1) CPU 利用率。 CPU 是计算机系统中最重要和昂贵的资源之一,所以应尽可能使 CPU 保持“忙”状态,使这一资源利用率最高。
CPU的利用率=CPU的有效工作时间/(CPU有效工作时间+CPU空闲等待时间)
2) 系统吞吐量。表示单位时间内 CPU 完成作业的数量。
3) 周转时间。指从作业提交到作业完成所经历的时间,是作业等待、在就绪队列中排队、在处理机上运行及输入/输出操作所花费时间的总和。
周转时间=作业完成时间-作业提交时间
平均周转时间=(作业1的周转时间+…+作业n的周转时间)/n
带权周转时间=作业周转时间/作业实际运行时间
平均带权周转时间=(作业1的带权周转时间+…+作业n的带权周转时间)/n
4) 等待时间。指进程处于等处理机的时间之和,等待时间越长,用户满意度越低。
5) 响应时间。指从用户提交请求到系统首次产生响应所用的时间。

2.2.3 调度的实现

1. 调度程序(调度器)
在操作系统中,用于调度和分派 CPU 的组件称为调度程序,它通常由排队器分派器上下文切换器三部分组成。

2. 调度的时机、切换与过程
现代操作系统中,不能进行进程的调度与切换的情况有以下儿种:
1) 在处理中断的过程中。中断处理过程复杂,在实现上很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源。
2) 进程在操作系统内核临界区中。进入临界区后,需要独占式地访问,理论上必须加锁,以防止其他并行进程进入,在解锁前不应切换到其他进程,以加快临界区的释放。
3) 其他需要完全屏蔽中断的原子操作过程中。如加锁解锁中断现场保护恢复等原子操作。在原子过程中,连中断都要屏蔽,更不应该进行进程调度与切换。
应该进行进程调度与切换的情况如下:
1) 发生引起调度条件且当前进程无法继续运行下去时,可以马上进行调度与切换。若操作系统只在这种悄况下进行进程调度,则是非剥夺调度。
2) 中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换。若操作系统支持这种情况下的运行调度程序,则实现了剥夺方式的调度。

3. 进程调度方式
1) 非抢占调度方式,又称非剥夺方式。非抢占调度方式的优点是实现简单系统开销小适用于大多数的批处理系统,但它不能用于分时系统和大多数的实时系统
2) 抢占调度方式,又称剥夺方式。抢占调度方式对提高系统吞吐率和响应效率都有明显的好处。但“抢占”不是一种任意性行为,必须遵循一定的原则,主要有优先权短进程优先时间片原则等。

4. 闲逛进程
在进程切换时,如果系统中没有就绪进程,就会调度闲逛进程 (idle) 运行,如果没有其他进程就绪,该进程就一直运行,并在执行过程中测试中断。
闲逛进程不需要 CPU 之外的资源,它不会被阻塞

5. 两种线程的调度
两种线程的调度: 用户级线程调度内核级线程调度
用户级线程的线程切换在同一进程中进行,仅需少征的机器指令;内核级线程的线程切换需要完整的上下文切换、修改内存映像、使高速缓存失效,这就导致了若干数量级的延迟。

2.2.4 典型的调度算法

1. 先来先服务 (FCFS) 调度算法
FCFS 调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分
配给它

FCFS 调度算法属于不可剥夺算法。
FCFS 调度算法的特点算法简单但效率低对长作业比较有利,但对短作业不利(相对SJF 和高响应比);有利于 CPU 繁忙型作业,而不利于 I/0 繁忙型作业

2. 短作业优先 (SJF) 调度算法
短作业(进程)优先调度算法是指对短作业(进程)优先调度的算法。
SJF 调度算法的平均等待时间、平均周转时间最少。

3. 优先级调度算法
优先级调度算法可分为:非抢占式优先级调度算法抢占式优先级调度算法
进程优先级分为:静态优先级动态优先级
进程优先级的设置可以参照以下原则:
1) 系统进程>用户进程。
2) 交互型进程>非交互型进程(或前台进程>后台进程)。
3) I/0 型进程>计算型进程。

4. 高响应比优先调度算法
响应比Rp=(等待时间+要求服务时间)/要求服务时间
作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业,因而类似千 SJF 。②要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而类似于 FCFS 。③对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,也可获得处理机,克服了"饥饿“现象。

5. 时间片轮转调度算法
时间片轮转调度算法主要适用于分时系统
在时间片轮转调度算法中,时间片的大小对系统性能的影响很大若时间片足够大,,则时间片轮转调度算法就退化为先来先服务调度算法。时间片很小,则处理机将在进程间过千频繁地切换,使处理机的开销增大。
时间片的长短通常由以下因素确定:系统的响应时间就绪队列中的进程数目和系统的处理能力

6. 多级队列调度算法
多级队列调度算法在系统中设置多个就绪队列将不同类型或性质的进程固定分配到不同的就绪队列每个队列可实施不同的调度算法

7. 多级反馈队列调度算法(融合了前几种算法的优点)
通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。
【408计算机考研】操作系统——第二章 进程与线程(二)_第2张图片
多级反馈队列的优势:
1) 终端型作业用户:短作业优先。
2) 短批处理作业用户:周转时间较短。
3) 长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。

先来先服务 短作业优先 商响应比优先 时间片轮转 多级反馈队列
能否是可抢占 队列内算法不一定
能否是不可抢占 队列内算法不一定
优点 公平,实现简单 平 平均等待时间最少,效率最高 兼顾长短作业 兼顾长短作业 兼顾长短作业,有较好的响应时间,可行性强
缺点 不利千短作业 长作业会饥饿,估计时间不易确定 计算响应比的开销大 平均等待时间较长,上下文切换浪费时间
适用于 作业调度,批处理系统 分时系统 通用
默认决策模式 非抢占 非抢占 非抢占 抢占 抢占

2.2.5 进程切换

上下文切换:切换 CPU 到另一个进程需要保存当前进程状态并恢复另一个进程的状态,这个任务称为上下文切换。上下文是指某一时刻 CPU 寄存器和程序计数器的内容
上下文切换实质上是指处理机从一个进程的运行转到另一个进程上运行,在这个过程中,进程的运行环境产生了实质性的变化
模式切换与上下文切换是不同的模式切换时CPU 逻辑上可能还在执行同一进程用户态和内核态之间的切换称为模式切换,而不是上下文切换,因为没有改变当前的进程。上下文切换只能发生在内核态,它是多任务操作系统中的一个必需的特性。

注意:调度和切换的区别。调度是指决定资源分配给哪个进程的行为,是一种决策行为;切换是指实际分配的行为,是执行行为。一般来说,先有资源的调度,然后才有进程的切换。

章节导图

【408计算机考研】操作系统——第二章 进程与线程(二)_第3张图片

你可能感兴趣的:(408学习笔记,学习,经验分享,算法,数据结构)