粒度、开销和系统调度与线程进程的关系

系统调度

首先来聊聊什么是调度.

在操作系统中, 系统必须为多个进程之间可能有竞争关系的请求分配计算机资源. 对处理器而言, 可分配的资源是处理器上的执行时间, 分配的途径是"调度". 调度功能必须设计成可以满足多个目标, 包括公平、任何进程都不会产生饥饿、有效的使用处理器时间以及较低的开销, 此外, 调度中还需要考量优先级和实时期限方面. 从根本上说, 调度是属于队列管理, 用来在排队环境中减少延迟和优化性能.

一. 调度类型

长程调度 : 决定加入到待执行的进程池中.
中程调度 : 决定加入到部分或全部在内存中的进程集合中.
短程调度 : 决定哪一个可运行的进程将被处理器执行.
I/O 调度 : 决定哪一个进程挂起的 I/O 请求将被可用的 I/O设备处理.

调度类型和进程状态状态转换图:
在这里插入图片描述

从用户角度看, 响应时间通常是系统最重要的一个特性;
从系统角度看, 吞吐量或处理器利用率是最重要的;
在处理器的长程、中程、短程调度中, 长程调度确定何时允许一个新进程进入系统; 中程调度确定何时把一个程序的部分或全部取进内存, 使得该程序能够被执行; 短程调度确定哪一个就绪进程下一次被处理器执行.

二. 调度算法

以上类型的调度中, 短程调度是执行的最频繁的, 也是最重要的, 为所有就绪进程的短程调度决策算法大概有:

  1. 先到先来服务 : 选择等待服务时间最长的进程.
  2. 轮转 : 使用时间片限制任何正在运行的进程只能使用一段处理器时间, 并在所有就绪进程中轮转.
  3. 最短进程优先 : 选择预期处理时间最短的进程, 并且不抢占该进程.
  4. 最短剩余时间 : 选择预期的剩余处理时间最短的进程. 当另一个进程就绪时, 这个进程可能会被抢占.
  5. 最高响应比优先 : 调度决策基于对归一化周期时间的估计.
  6. 反馈 : 建立一组调度队列, 基于每个进程的执行历史和其他一些准则, 把它们分配到各个队列中.
    具体的调度算法的选择取决于预期的性能和实现的复杂度.

三. 多处理器调度

  1. 分类
    (1) 松耦合、分布式多处理器、集群
    (2) 专门功能的处理器
    (3) 紧耦合多处理器

  2. 粒度
    根据粒度的不同, 区分五类并行度:
    细 : 单指令流中固有的并行.
    中等 : 在一个单独应用中的并行
    粗 : 在多道程序环境中并发进程的多处理.(多进程并发)
    非常粗 : 在网络节点上进行分布处理, 以形成一个计算环境.(集群中的并行)
    无约束 : 进程间没有显式的同步, 多个无关进程.

  3. 线程调度(中等粒度)
    在单处理器中, 线程可以用作辅助构成程序. 并在处理过程中重叠执行I/O, 并且进行线程切换时的系统开销远远小于进程切换的系统开销; 而在多处理器中, 线程可以用于开发应用程序中真正的并行性. 如果一个应用程序的各个线程同时在各个独立地处理器中执行, 其性能就会得到显著的提高. 但是, 这也给线程管理和同步带来了一定的麻烦.
    实现的四种方法:
    (1) 负载共享 : 进程不是分配到一个特定的处理器. 系统维护一个就绪进程的全局队列, 每个处理器只要空闲就从队列中选择一个线程, 确保当有工作可做时, 没有处理器空闲. 注意, 这里与"负载均衡"不同, 负载均衡是基于一种比较永久的分配方案分配工作的.
    负载均衡 : Load balancing, 用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的.

    (2) 组调度 : 一组相关的线程基于一对一的原则, 同时调度到一组处理器上运行.

    (3) 专用处理器分配 : 与"负载共享" 的方法相反, 它通过把线程指定到处理器来定义隐式的调度. 在程序执行过程中, 每个程序被分配给一组处理器, 处理器的数目与程序中线程的数目相等. 当程序终止时, 处理器返回到总的处理器池中, 可供分配给另一个程序.

    (4) 动态调度 : 在执行期间, 进程中线程的数目可以改变.

四. 实时调度

  1. 关于实时计算和实时系统:
    实时计算正在成为越来越重要的原则. 调度器可能是实时系统中最重要的组件.
    实时计算定义 : 系统的正确性不仅取决于计算的逻辑结果, 而且还依赖与产生结果的时间. 我们可以通过定义实时进程或实时任务来定义实时系统.
    实时系统特点 : 可确定性、可响应性、用户控制、可靠性、故障弱化操作.
    (1) 快速的进程或线程切换;
    (2) 体积小;
    (3) 迅速响应外部中断的能力;
    (4) 通过诸如信号量、信号、事件之类进程间通信的工具, 实现多任务处理
    (5) 使用特殊的顺序文件, 可以快速存储数据
    (6) 基于优先级的抢占式调度;
    (7) 最小化禁止中断的时间间隔;
    (8) 用于使任务延迟一段固定的时间或暂停/恢复任务的原语;
    (9) 特别的警报和超时设定;

    实时系统的核心是短程任务调度器.

    实时进程的几种调度器:
    (1) 轮转抢占式调度器;
    (2) 优先级驱动非抢占式调度器;
    (3) 优先级驱动、在抢占点抢占的调度器;
    (4) 立即抢占调度器;
    在这里插入图片描述

  2. 实时调度
    关键因素是满足"最后期限", 在很大程度上依靠抢占和堆相对最后期限有反应的算法.
    最大期限的概念 : 当可以指定进程完成的最后期限时, 调度原则将降低其他目标, 使得满足最后期限的作业数目的百分比最大.

    实时调度算法大概有如下几种:
    (1) 静态表法 : 执行关于可行性调度的静态分析;
    (2) 静态优先级抢占法 : 同样执行一个静态分析, 但是没有指定调度, 而且用于给任务指定优先级, 使得可以使用传统的基于优先级的抢占式调度器;
    (3) 基于动态规划调度法 : 在运行时动态的确定可行性, 而不是在开始运行前离线的确定;
    (4) 动态尽力调度法 : 不执行可行性分析, 系统试图满足所有的最后期限, 并终止任何已经开始运行但错误最后期限的进程.

    此外还有Linux调度

系统开销指的是运行操作系统程序对系统进行管理而花费的时间和空间.

粒度越小, 线程的执行效率就越高. 粒度越大, 线程的调度管理就越麻烦.
系统开销越小, 进程和线程的所花费的时间和空间也就越小. 系统开销过大, 所花费的时间和空间也会增大.
系统调度决定了开销的大小, 不同的粒度有各自的调度方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值