• 操作系统备考学习 day5(2.2.5 - 2.3.1)


    第二章 进程与线程

    2.2 处理机调度

    2.2.5 调度算法

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    先来先服务(FCFS)

    周转时间 = 完成时间
    带权周转时间 = 周转时间 / 运行时间
    等待时间 = 周转时间 - 运行时间
    按照到达的先后顺序调度,等待时间越久的越优先得到服务

    等待时间 = 周转时间 - 运行时间 - I/o操作
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    短作业优先(SJF)

    每次调度时悬着当前已到达且运行时间最短的作业/进程
    严格来说,用于进程调度的应该称为短进程优先调度算法(SPF)
    在这里插入图片描述
    在这里插入图片描述

    对比FCFS算法的结果,显然SPF算法的平均等待/周转/带权 周转时间都要更低

    抢占式的短作业优先算法。又称“最短剩余时间优先算法(SRTN)”
    每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外,当一个进程完成时也需要调度。
    在这里插入图片描述
    在这里插入图片描述
    对比非抢占式的短作业优先算法,显然抢占式的这几个指标又要更低

    注意:

    1. 如果题目中未特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的
    2. 在所有进程同时可运行时,采用SJF调度算法的平均等待时间、平均周转时间最少;或者说,在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少
    3. 2中没有第一句的条件时,抢占式的效率更高

    在这里插入图片描述

    高响应比优先(HRRN)

    高响应比优先算法:非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这三种算法一般使用与早期的批处理系统

    时间片轮转(RR)

    在这里插入图片描述
    常用于分时操作系统,更注重“响应时间”,因而此处不计算周转时间
    时间片轮转调度算法:轮流让就绪队列中的进程一次执行一个时间片(每次选择的都是排在就绪队列队头的进程)
    时间片为2的情况:
    在这里插入图片描述
    时间片为5的情况:
    在这里插入图片描述
    如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。
    另一方面,进程调度、切换都有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。
    一般来说,设计时间片时要让切换进程的开销占比不超过1%
    在这里插入图片描述

    优先级调度算法

    在这里插入图片描述
    注:优先数越大,优先级越高。部分题目可能相反,注意判别
    非抢占式的优先级调度算法:每次调度时选择当前已到达优先级最高的进程。当前进程主动放弃处理机时发生调度。
    在这里插入图片描述
    抢占式的优先级调度算法:每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。另外,当就绪队列发生改变时也需要检查是否会发生抢占。
    在这里插入图片描述
    补充
    就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级高的进程排在更靠近队头的位置。
    根据优先级是否可以动态改变,可将优先级分为静态优先级和动态优先级两种。
    静态优先级:创建进程时确定,之后一直不变
    动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级

    如何合理地设置各类进程的优先级:
    通常
    系统进程优先级高于用户进程
    前台进程优先级高于后台进程
    操作系统更偏好I/O型进程(或称I/O繁忙型进程)
    注:与I/O型进程相对的是计算型进程(或称CPU繁忙型进程)
    I/O设备和CPU可以并行工作。如果优先让I/O繁忙型进程优先运行的话,则越有可能让I/O设备尽早地投入工作,则资源利用率、系统吞吐量都会得到提升

    如果采用的是动态优先级,什么时候应该调整?
    可以从追求公平、提升资源利用率等角度考虑
    如果某进程在就绪队列中等待了很长时间,则可以适当提升其优先级
    如果某进程占用处理机运行了很长时间,则可适当降低其优先级
    如果发现一个进程频繁地进行I/O操作,则可适当提升其优先级
    在这里插入图片描述

    多级反馈队列调度算法

    在这里插入图片描述
    设置多级就绪队列,各级队列优先级高到低时间片小到大
    新进程到达时先进入第一级队列,按照FCFS原则排队等待分配时间片。若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经在最下级的队列,则重新放回最下级队列队尾。
    只有第k级队列为空时,才会为k+1级队头的进程分配时间片
    被抢占处理机的进程重新放回原队列队尾
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    多级队列调度算法

    系统中按照进程类型设置多个队列,进程创建成功后插入某个队列
    队列之间可采取固定优先级或时间片划分
    固定优先级:高优先级空时低优先级进程才能被调度
    时间片划分:如三个队列分配时间50%、40%、10%
    在这里插入图片描述

    各队列可采用不同的调度策略,如:
    系统进程队列采用优先级调度
    交互式队列采用RR
    批处理队列采用FCFS

    2.3 同步与互斥

    2.3.1 同步与互斥的基本概念

    进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。
    同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作

    在这里插入图片描述
    我们把一个时间段内只允许一个进程使用的资源成为临界资源。许多物理设备都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源
    对临界资源的访问,必须互斥地进行。互斥,亦称间接制约关系进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。

    对临界资源的互斥访问,可以在逻辑上分为如下四个部分:

    在这里插入图片描述
    注:
    临界区是进程中访问临界资源的代码段
    进入区和退出区是负责实现互斥的代码段
    临界区也可称为“临界段”

    为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循一下原则:

    1. 空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区
    2. 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待
    3. 有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿)
    4. 让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待
  • 相关阅读:
    【ajax跨域问题解决之jsonp】
    求质数的方法
    Linux中的调度策略及其工作
    Clever Internet Suite for Delphi, C++Builder
    Android Studio 插件 — 开发工具类搜集
    unity urp 实现泰森多边形Voronoi扰动
    FPGA系统性学习笔记连载_Day1数字电路基础篇
    【并发编程】锁机制
    Tomcat10的坑
    JNI动态注册以及JNI签名
  • 原文地址:https://blog.csdn.net/mcyuuji/article/details/133047971