• 《操作系统》课程笔记(Ch05-进程调度)


    进程执行不断在两个状态:CPU执行、I/O等待之间进行交替,进程调度的目的是最大化CPU使用率。

    基本概念

    CPU执行时间分布

    程序执行通常具有大量短CPU执行和少量长CPU执行。I/O密集型程序通常具有大量短CPU执行,CPU密集型程序可能只有少量长CPU执行。

    调度的抢占

    考虑四种发生CPU调度的情况:

    • 一个进程从running切换到waiting(如I/O请求)
    • 一个进程从running切换到ready(如中断)
    • 一个进程从waiting切换到ready(如I/O完成)
    • 一个进程终止

    抢占的调度:调度可以发生在任一种情况下。可能导致数据竞争。

    非抢占的调度:调度只发生在1和4情况下。一个进程一旦被分配了CPU,就会一直使用直到终止或者waiting。

    调度准则

    评判调度算法的好坏依据以下准则:

    • CPU使用率
    • 吞吐量:单位时间内完成的进程数量
    • 周转时间:进程提交到进程完成的时间。(TT=finish-arrival)
    • 等待时间:在就绪队列中所等时间。(WT=start-arrival=TT-burstTime)
    • 响应时间:提交请求到产生第一响应的时间,更适合交互系统

    下列是有关公式:

    • 平均周转时间ATT:(sum (finishTime-arrivalTime)/N)
    • 平均等待时间AWT:(sum(startTime-arrivalTime)/N)
    • 平均响应时间ART:通常可以认为响应时间等于周转时间。响应时间多一个不长的提交时间。

    调度算法

    FCFS - 先到先服务

    非抢占。先请求CPU的进程首先分配到CPU。

    缺点:

    • 平均等待时间往往很长
    • 护航效应:可能出现所有其他进程都等待一个大进程释放CPU
    • 不适合分时系统(每个用户需要定时得到一定CPU时间)

    SJF - 最短作业优先

    抢占或非抢占的。调度取决于进程的下次CPU执行的长度(而不是一成不变的初始长度)。

    下图是非抢占的SJF的甘特图:

    缺点:

    • 难以预计下次CPU执行的长度,故只能预测逼近理想的SJF
    • 通常用于长期调度

    抢占的SJF

    最短剩余时间优先,即先到先服务,后到比剩余。考虑不同的到达时间:

    进行抢占式SJF的分析,关键是抓住Arrival Time作为关键时间节点。

    优先级调度

    抢占或非抢占的。为每个进程赋一个优先级,假设以低数字代表高优先级。

    问题:

    • 无穷阻塞(饥饿):某个低优先级进程可能无穷等待CPU

      解决:老化。逐渐增加等待很长时间进程的优先级

    RR - 轮转调度

    抢占的。定义时间片概念。每次,循环整个就绪队列,对每个进程分配不超过一个时间片的CPU。如果进程耗时少于一片,提前释放,提前进行下次分配;如果进程耗时达到一片,就强制中断执行。

    特点:

    • 平均等待时间较长
    • 性能与时间片大小有关,时间片应远大于上下文切换时间
    • 时间片也不能太大,否则可能退化为FCFS

    多级队列调度

    按照进程的类型与特点各自分配到多种不同的队列,每个队列有自己的调度算法,队列之间也有调度(通常采用固定优先级抢占调度)。

    多级反馈队列调度

    多级队列调度中某个进程会被永久地分配到某个队列,不够灵活。多级反馈队列允许进程在队列间转移。

    例如上图,先进行8时间RR调度,未完成的进入16时间RR调度,再未完成的进入FCFS调度。只有上面的队列为空时,下面的队列才能得到执行。

    需要确认下列参数:

    • 队列数量
    • 每个队列的调度算法
    • 确定何时升级任务
    • 确定何时降级任务
    • 进程需要服务时先进入哪个队列

    线程调度

    某些操作系统支持更细粒度的线程调度而不仅是进程调度。

    两种竞争范围

    • 进程竞争范围PCS:线程库将用户线程调度到可用LWP,通常采用优先级调度
    • 系统竞争范围SCS:决定哪个内核级线程调度到一个处理器上

    多处理器调度

    调度方法

    • 非对称多处理:让一个处理器处理所有调度决定、IO以及其他系统活动,其他处理器只执行用户代码
    • 对称多处理SMP:每个处理器自我调度

    处理器的亲和性

    大多数SMP系统试图避免将进程从一个处理器移到另一个处理器(保持进程运行在同一处理器),这种情况称为软亲和性

    有的操作系统提供硬亲和性,允许某个进程运行在某个处理器子集上。

    亲和性与负载均衡通常是矛盾的。

    多处理器多线程

    操作系统决定哪个软件线程到哪个硬件线程(逻辑处理器)上运行,并指定每个核如何决定运行哪个硬件线程

    实时CPU调度

    实时操作系统的CPU调度。当一个实时进程需要CPU时,立即响应。

    最小化延迟

    两种延迟影响性能:

    • 中断延迟:CPU收到中断到中断处理程序开始的时间
    • 调度延迟:停止一个进程到启动另一个进程所需的时间

    被调度进程的性质

    讨论各种调度程序之前,首先说明:

    • 这些进程是周期性的,也就是它们定期需要CPU
    • 这些进程有三个属性:处理时间t、截止期d、周期p,满足0≤t≤d≤p
    • 操作系统需要在截止期前处理完该进程,否则应拒绝服务

    调度方法

    优先级调度

    根据进程的重要性分配优先级,并且可以支持抢占。重要性可以用进程的三个属性来衡量。

    单调速率调度

    抢占式,静态优先级。

    • 每个任务被分配一个优先级,与周期成反比
    • 如果一组进程不能由该算法调度,则也不能由其他静态优先级算法调度

    最早截止期限优先调度(EDF)

    抢占式。截止期限越早,优先级越高。

    进程优先级是变化的,不要求进程周期性,也不要求CPU执行时间固定,但需要进程宣布它的截止期。

    更适合实际应用的实时调度。

    比例分享调度

    在所有程序之间分配T股,一个应用分到N股,则确保有N/T的处理器时间。

    操作系统实例

    • Linux:完全公平调度程序CFS

      每个任务分配的CPU时间根据友好值计算,友好值越高,分配时间越少

    • Windows:基于优先级、抢占式

    • Solaris:基于优先级,线程有6类,每个类型有不同优先级和调度算法

    算法评估

    • 确定性模型:特定的预先确定的载荷下进行分析

    • 排队模型:根据进程到达系统的时间分布计算数学期望

      Little公式:n=λW

      • 如果系统处于稳定状态,那么离开队列的进程数等于到达进程数
      • n:平均队列长度;λ:进程平均到达率;W:进程等待时间
    • 仿真

    • 实现

  • 相关阅读:
    随手记
    jira默认是jira_user用户组的用户有登录jira的权限 上海
    loadrunner11安装 上海
    虚拟机增加内存方法 上海
    centos6中安装VMware Tools 上海
    linux安装过程中遇到的一些问题总结 上海
    C语言指针方法对字符串进行去重 上海
    在linux环境下搭建JDK+JAVA+Mysql,并完成jforum的安装 上海
    关于pl/sql打开后database为空的问题解决办法 上海
    字符串表达式求值(支持多种类型运算符)
  • 原文地址:https://www.cnblogs.com/zxuuu/p/12841082.html
Copyright © 2020-2023  润新知