Bo2SS

Bo2SS

4 高级进程管理

课程内容#

进程调度#

  • 进程调度是一个内核子系统,用户管不了
  • 进程调度的主要任务是决定哪一个就绪状态的进程先运行
  • 就绪进程是非阻塞进程,已具备运行条件,不需要阻塞等待了
  • 阻塞进程就是正在睡眠 [不占用 CPU] 的进程,需要内核唤醒的进程

三态模型#

  • 阻塞、就绪、运行
  • 图片
  • 阻塞,不占用系统资源;就绪,需要等内核调度;运行,在 IO 请求或等待某事件时阻塞

👉 五态模型

  • 图片
  • 加入新建态、终止态

从单任务到多任务#

  • DOS 是单任务操作系统,每次只运行一个进程
    • 进程交错运行,如同多任务运行
  • 多处理器可以做到真正的并行
    • 并发 VS 并行
    • 并发:一个时间段内有很多任务进行
    • 并行:有多少个 CPU,就可以有多少个任务同时运行
  • 调度的核心:运行哪个进程,运行多久

时间片#

强影响着系统的全局行为和性能

  • 过长
    • 👍:提升系统吞吐率和全局性能
    • × :降低了并发运行;用户感到明显的延迟[响应能力下降,应用过多也会导致调度间隔长]
  • 过短
    • 👍:提升交互性能
    • × :大量时间花在调度大;时间局部性带来的性能提升大打折扣
      • 时间局部性:缓存,记忆 [高速缓存是随着时间慢慢建立起来的]
      • 空间局部性:预先多准备部分临近空间的数据
      • 有学习、预判的意味
  • 所以,时间片长短难以确定,解决方案是干脆不用时间片,取而代之的是完全公平调度算法
    • 系统根据就绪队列和优先级调整策略
    • 调度时间和优先级的分配,本质上是为了更好地服务于用户,并没有不公平
    • 详见下文 —— 完全公平调度器

处理器约束型和 IO 约束型进程#

根据进程使用 CPU 的特点划分,取决于处理器还是 IO 用得多

  • 处理器约束型
    • 【一直消耗完可用时间片的进程】
    • 需要获取大量的 CPU 资源,会消耗调度器分配的全部 CPU
    • 如:while (1);,很容易将 CPU 使用率达到 100%
    • 时间片的要求
      • 期待更长的时间片,从而最大化缓存命中,尽快完成任务 [不会浪费资源]
  • IO 约束型
    • 【多数时间处于阻塞状态或者等待资源的进程】
    • 经常阻塞在文件 IO 操作上:文件,网络,键盘,鼠标 [如听音乐、打字];或者除了请求内核执行 I/O 操作之外什么也不做 [如 cp]
    • 时间片的要求
      • 需要更短的时间片,被调度的越快,越有无缝衔接的感觉
      • 进程只会运行极短的时间,然后阻塞在内核资源;会用到中断

调度器分类#

协同式调度器#

[不干预型,实用性不高]

  • 进程会一直运行直到它自己结束
  • 操作系统不做任何干预

抢占式调度器#

[时间片型]

  • 内核给进程分配时间片,时间片用完,挂起该进程 [不占用任何资源],执行其它进程
    • 没有其他就绪的进程时,内核给已经执行过的进程重新划分时间片
  • 调度器安排进程的运行顺序、时长
  • [PS]
    • 新建态进入就绪队列,终止态退出就绪队列 [五态模型]
    • 考虑优先级,所有进程都有机会被运行

完全公平调度器#

[非时间片型]

CFS:Completely Fair Scheduler

  • 给 N 个进程,每个进程分别分配 1 / N 的处理器时间
  • 优先级和权值
    • 优先级越高,值越小,权值越大
    • 默认优先级为 0,权值为 1
  • 目标延迟:调度的固定周期
  • 最小粒度:避免目标延迟过小导致每个进程运行的时间过短

👉公平配额

Tips#


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。