进程调度与死锁

第三章 进程调度与死锁

进程调度的功能与时机

进程调度的功能

进程调度的功能由操作系统的 进程调度程序 来完成。

按照某种策略和算法 从就绪进程中为当前空闲的CPU选择在其上运行的新进程

进程调度的时机

  1. 进程正常结束;
  2. 进程异常结束;
  3. 进程阻塞;
  4. 有更高优先级进程到来;
  5. 时间片用完;

进程调度算法

进程调度算法和输入/输出设备的速度都会影响系统的 响应时间

选择调度方式和算法的若干准则

  1. 周转时间短;
  2. 响应时间快;
  3. 截止时间的保证;
  4. 系统吞吐量高;
  5. 处理机利用率好;

周转时间的相关计算

周转时间 = 外存等待时间 + 就绪队列等待时间 + 服务(执行)时间 + 等待I/O操作完成

平均周转时间 = \frac{1}{n} * [\sum_{i=0}^{n}{T_{i}}]

平均周转时间 = \frac{1}{n} * (T_{1} + T_{2} + ... + T_{n})

带权平均周转时间 = \frac{1}{n} * [\sum_{i=0}^{n}{\frac{T_{i}}{TS_{i}}}]

带权平均周转时间 = \frac{1}{n} * (\frac{T_{1}}{TS_{1}} + \frac{T_{2}}{TS_{2}} + ... + \frac{T_{i}}{TS_{i}})

TS:服务时间:CPU执行的时间

响应时间,用户提交一个请求直至系统首次产生响应的时间。包括:

  1. 输入设备输入的请求信息传送到处理机的时间;
  2. 处理机对请求信息进行处理的时间;
  3. 将所形成的响应信息回送到终端显示器的时间;

调度算法

先来先服务算法

英文:First-Come,First-Served,FCFS

含义:从就绪队列的队首 选择最先到达就绪队列的进程,为该进程分配CPU。

适合:长进程、CPU繁忙进程

调度算法-先来先服务调度算法FCFS.png

短进程优先调度算法

英文:Shortest-Porcess-First,SPF

含义:从就绪队列中 选择估计运行时间最短的进程,为该进程分配CPU。

优点:与FCFS算法相比,短进程优先算法能有效 降低进程的平均等待时间,提高系统吞吐量

缺点:

  1. 对长进程不利;
  2. 不能保证紧迫进程的处理;
  3. 进程长短由用户估计,不一定准确;
调度算法-短进程优先调度算法SPF.png

优先权调度算法

英文:Priority-Scheduling Lgorithm

含义:该算法中,系统将CPU分配给就绪队列中 优先级最高的进程

存在的问题:无穷阻塞(饥饿问题)

解决的方案:增加等待时间很长的进程的优先级 —— 老化技术

类型:

  1. 非抢占式:运行期间,有更高优先级的进程到来,也 不能 剥夺CPU;
  2. 抢占式:运行期间,有更高优先级的进程到来,就 可以 剥夺CPU;

优先权类型:

  1. 静态优先权:创建时确定,运行期间 保持不变
    • 根据 进程的类型、进程需要的资源数量和用户的要求 来决定;
  2. 动态优先权:创建时确定,随着进程推进或等待时间增加而 改变

时间片轮转调度算法

英文:Round-Robin,RR

含义:每次把CPU分给队首进程,令其执行一个时间片。

时间片大小:10-100ms

时间片很大 = 先来先服务调度程序

时间片很小:增大CPU对进程切换和调度的开销

时间片大小的 确定条件

  1. 系统对 响应时间 的要求:响应时间要求越短,时间片越小;
  2. 就绪队列 中进程的数目:进程数量越多,时间片越小;
  3. 系统的 处理能力:处理能力越好,时间片越小;

linux 2.4 的时间片为:50ms

多级队列调度算法

含义:将就绪队列分成多个独立队列,每个队列都有自己的调度算法。

不足:不够灵活,对低优先级进程会存在无穷阻塞(饥饿)问题。

Minix 把对任务进程和服务进程采用 基于优先权的非抢占式调度

多级反馈队列调度算法

含义:建立多个优先级不同的就绪队列,每个队列有大小不同的时间片。

优点:相对灵活,不会出现无穷阻塞(饥饿)问题。

实时系统中的调度

实时系统计算的 正确性 取决于 计算的逻辑结果的正确性计算的时间

实时调度的基本条件

  1. 提供必要的调度信息:
    • 就绪时间;
    • 开始截止时间;
    • 完成截止时间;
    • 处理时间;
    • 资源要求;
    • 优先级;
  2. 系统处理能力强;
  3. 采用抢占式调度机制;
  4. 具有快速切换机制:
    • 对外部中断的快速响应能力:快速的硬件中断机构、中断的时间间隔尽可能短;
    • 快速的进程切换能力:减少进程切换的开销;

常用的实时调度算法

  1. 最早截止时间优先算法 EDF开始截止时间 越早,进程优先级越高,越优先获得CPU;
  2. 最低松弛度优先算法 LLF:进程的 紧迫程度 越小,进程优先级越高;

松弛度:表示一个实时进程的紧迫程度。

紧迫程度 = T - T_{C} - T_{S}

T:完成截止时间

T_{C}:当前时间

T_{S}:处理完该任务需要的时间

进程切换

进程切换的含义

当前正在执行的进程成为被替换进程,让出其所使用的CPU,以运行被进程调度程序选择的新进程,这个过程称为 进程切换

进程切换的步骤

  1. 保存CPU上下文环境;
  2. 更新进程1的进程控制块;
  3. 修改进程1的进程状态;(执行态 -> 就绪态或阻塞态)
  4. 移动进程1的进程控制块到就绪队列或阻塞队列;
  5. 调度新程序,更新进程2的进程控制块;
  6. 更新内存管理的数据结构;
  7. 恢复进程的硬件上下文;

多处理器调度

多处理器系统的类型

根据处理器的 耦合程度 分类:

  1. 紧密耦合 多处理器系统:共享主存储器(内存)和I/O设备;
  2. 松弛耦合 多处理器系统:有各自的存储器和I/O设备;

根据处理器的 结构功能是否相同 分类:

  1. 对称 多处理器系统:处理单元(CPU)功能和结构相同;
  2. 非对称 多处理器系统:有多种类型的处理单元,一个主处理器,多个从处理器;

多处理器系统的进程分配方式

对称系统分配方式

  1. 静态分配:
    • 就绪队列的进程只能在与就绪队列对应的处理器上运行;
    • 优点:进程调度的开销小;
  2. 动态分配:
    • 进程随机地被分配到当时处于空闲状态的某一处理器上执行;
    • 所有就绪进程都放在一个 公共的就绪队列 中;
    • 优点:考虑服务器的 负载平衡问题,分配给空闲进程;
对称系统分配方式.png

非对称系统分配方式

  1. 主-从式操作系统;
非对称系统分配方式.png

进程(线程)的调度方式

  1. 自调度;
  2. 成组调度;
  3. 专用处理器分配;

自调度

最常用最简单 的方式。

自调度的 优点

  1. 易移植:很容易将单处理器环境下所用的调度机制移植到多处理器环境中;
  2. 有利于 提高CPU的利用率:不会出现处理器空闲或忙闲的情况;

自调度的 缺点

  1. 瓶颈问题:处理器数量很多时;
  2. 低效性:多次更换处理器;
  3. 线程切换频繁:某些线程因其合作的线程未获得处理器而阻塞导致进程切换;

成组调度

系统将一组相互合作的进程或线程同时分配到同一组处理器上运行,进程或线程与处理器一一对应。

成组调度的 优点

  1. 减少线程切换;
  2. 减少调度开销;

成组调度采用两种方式为应用程序分配处理器时间:

  1. 面向所有的 应用程序 平均分配处理器时间;
  2. 面向所有的 线程 平均分配处理器时间;

专用处理器分配

在程序执行期间,专门为该程序分配一组处理器,每个线程一个。

专用处理器分配的 优点

  1. 加成程序运行速度;
  2. 避免进程切换;

专用处理器分配的 缺点

  1. 处理器资源严重浪费;

死锁

死锁的定义

由于 多个进程竞争共享资源 而引起的 进程不能向前推进 的僵死状态称为 死锁

产生死锁的原因

竞争 共享资源且分配资源的 顺序不当

产生的必要条件

  1. 互斥条件;
  2. 请求和保持条件;
  3. 不剥夺条件;
  4. 环路等待条件;

只有当 四个条件同时满足 时才会产生死锁。

处理死锁的基本方法

  1. 死锁的 预防:通过 破环死锁的产生条件 来保证不发生死锁;
  2. 死锁的 避免:通过 算法合理分配资源 来保证不发生死锁;
  3. 死锁的 检测:检索当前系统是否出现死锁;
  4. 死锁的 解除:检索到系统有死锁后进行解除;
  5. 死锁的 忽略

死锁的预防

保证产生死锁的必要条件中,至少其中一个条件不成立。

  1. 摒弃 请求和保持条件:要求进程一次性 申请 需要的 全部资源,申请其他资源前 释放 已经占用的资源;
  2. 摒弃 不剥夺条件:系统 抢占 被占用的资源分配给需要的进程;
    • 缺点:实现复杂,代价高;
  3. 摒弃 环路等待条件:进程必须 按规定的顺序 申请 资源(打印机、磁盘);
    • 缺点:限制了新设备的增加,资源浪费,用户编程麻烦;

死锁的避免

通过资源合理分配使系统处于 安全状态

安全状态 ?:能够找到一个进程 执行序列,按照这个序列会每个进程分配资源,就可以保证进程资源分配和执行顺利完成,不会发生死锁

设系统有一类数量为 M 的独占性资源,系统中有 N 个进程竞争该类资源,每个进程对资源的最大需求为 W。当满足 N * (W-1) + 1 <= M 时,系统处于安全状态。

死锁的避免.png

银行家算法:一个进程提出资源请求后,系统先进行资源的试分配,分配后检测系统是否安全。

任何时刻都能至少保证一个进程获得所需要的全部资源。

银行家算法.png

死锁的检测

何时调用 检测算法 ?:

  1. 死锁可能发生的 频率
  2. 死锁发生时受影响的 进程数量

资源分配图

资源分配图.png

死锁定理S为死锁状态 的充分条件是当前仅当S状态的 资源分配图是不可完全简化的(上图的资源分配图是可以被简化的)。

死锁定理用于检测系统所处的资源分配状态是否为死锁状态。

死锁的解除

  1. 进程终止
    • 终止所有死锁进程;
    • 一次只终止一个处于死锁状态的进程,直到死锁接触;
  2. 资源抢占
    • 逐步从进程中抢占资源给其他进程使用直到死锁被打破为止;

抢占的代价最小,死锁进程拥有的资源数量、死锁进程到目前为止已经消耗的执行时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容