• 操作系统——第三章


    在这一章中,主要是讲述处理机调度算法、处理机死锁问题。
    1、理解“调度”这个词的意思
    2、一个作业从进入系统到被执行完毕,可能要经过三次调度:
    a、高级调度:把作业从外存调入内存,变为进程
    b、低级调度:在内存中通过某种算法,分配处理机资源
    c、中级调度:挂起态和活动态之间的转换
    3、CPU的利用率 = CPU工作时间/(CPU工作时间+CPU等待时间),所以提高CPU的利用率就是较少CPU的等待时间
    4、周转时间是指作业从进入系统(外存)开始,到作业完成的时间间隔,可以写成:周转时间 = 等待时间+服务时间
    由4部分构成:在外存等待被调入内存的时间、在内存的就绪队列上等待分配CPU的时间、CPU的执行时间、等待IO的时间。
    带权周转时间 = 周转时间/服务时间,带权周转时间越大,说明等待时间越长,理想请款是带权周转时间为1
    平均带权周转时间 = 所有进程的周转时间总和/进程个数
    平均周转时间、平均带权周转时间是评价CPU调度算法好坏的一个指标
    5、所有OS的共同目标:提高资源利用率、保证进程公平不发生饥饿现象、CPU和外部设备经常处于忙碌状态、策略强制执行
    此外,批处理系统的目标:平均周转时间、系统吞吐量高、CPU利用率高
    分时系统的目标:响应时间快、响应快慢与请求复杂程度相适应
    实时系统目标:保证截止时间、能预测是否能按时完成
    6、作业调度(高级调度)的主要任务:接纳哪些作业、接纳多少个作业
    7、明白几种算法的内容、优缺点、计算参数(周转时间、平均周转时间、带权周转时间、平均带权周转时间)
    a、先来先服务(FCFS)
    对于作业来说,谁先进入系统单,就调谁到内存;对于进程来说,谁排在就绪队列第一个,就为谁分配处理机。注意:这个中间没有并发,相当于串行执行
    特点:有利于长作业,不利于短作业;有利于CPU繁忙型作业,不利于IO繁忙型作业
    b、短作业优先(SJF)、短进程优先(SPF)
    对于作业来说,预估谁执行时间短,谁先进入内存;对于进程来说,预估谁执行时间短,谁先分配处理机
    不论是先来先服务和短作业优先,暂时认为是“非抢占性的”,也就是不会被插队
    缺点:对长作业不利,有饥饿可能、不具有实时性、作业(进程)长短是预估的,和实际不一定一样
    c、优先级调度算法(PSA)
    在进程的PCB中,写有进程的优先级,按照某种方式规定优先级,按照优先级的顺序执行。如果是短作业优先,就默认短作业的优先级高。
    d、高响应比优先调度算法
    响应比 = (等待时间+要求服务时间)/(要求服务时间),从公式上看和带权周转时间是一样的,但是仅仅是数值一样。
    响应比是动态的,每当有进程或作业结束,都会计算一次所有进程或作业的响应比,选取响应比高的进程或作业,优先执行。所以说,等待时间越长,优先级越高,越可能被先调度。但是由于要计算响应比,增加了系统开销。
    e、时间片轮转法(RR)
    简单来说,就是分时系统中,把时间分为若干个时间片,每一个进程在一个时间片内使用CPU资源,轮流使用。时间片的选用太大,就是先来先服务算法,体现不出轮转,时间片选用太小,进程切换频率过高,开销太大。时间片选用四个因素:系统响应时间、就绪队列进程数目、进程的轮转时间、CPU速度。
    f、多队列调度算法
    简单来说,就是有多个就绪队列,每一个就绪队列中调度算法不一样,适用于多处理机系统
    g、多级反馈队列调度算法(MFQ)
    这个算法比较机智较为复杂,类似于多种算法的结合体。同多队列调度算法一样,也是分为若干个就绪队列,每一队列优先级不同。优先级高的时间片短,优先级低的时间片长(时间片越短,响应时间越快)。
    运行机制:每一个队列遵循时间片轮转、先来先服务。先从第一队列(优先级最高的就绪队列)的第一个进程开始执行,时间片到,进程没有结束,将进程插入到第二队列的末尾,以此类推。所以是第一队列(优先级最高的)全部执行完了,再执行第二队列,第二队列全部执行完了,再执行第三队列,以此类推。如果有新进程到来,插入到第一队列的末尾。如果采用抢占机制,被抢占的进程要插入到进程所在队列的末尾。
    优点:对短作业、短进程友好,可在第一时间完成;对长作业、长进程不用担心发生饥饿现象
    h、最早截止优先(实时调度):基于前边的优先级算法,截止时间越早的(越着急),优先级越高。有抢占和不可抢占。
    i、最低松弛优先算法(实时调度):基于优先级的,松弛度越小的(越着急),优先级越高。松弛度 = 截止时间-本身执行完毕需要的时间-当前时间。任务切换的两种情况:上一个任务执行完或下一个任务松弛度为0。
    8、进程调度(短程调度)的任务:保存现场、从就绪队列中按照算法选择进程、分配处理机。
    9、进程调度依靠一个调度程序,调度程序中有三个重要部分:排队器、分派器、上下文切换器。排队器是将就绪状态的进程插入到就绪队列;分派器是从就绪队列中按照算法选择一个分配处理机;上下文切换器是保存现场和恢复现场。注意在进程切换的中间,CPU要执行调度程序,不是直接切换的。
    10、理解抢占和非抢占。抢占是指当前正在执行的进程不是因为执行完毕、IO阻塞、时间片用完等原因,而是被动放弃处理机,发生进程切换。非抢占是指当前正在执行的进程因为执行完毕、IO阻塞、时间片用完等原因,主动放弃处理机的时候,发生了进程切换。抢占可以理解为中途被“轰下去”。
    11、优先级倒置现象:某种原因造成的优先级低的任务先执行完毕,优先级高的任务后执行完毕。解决方式是优先级继承。
    12、死锁是指多进程竞争资源造成的僵局,例如前边的哲学家就餐问题,5个筷子代表5个资源,5个人同时拿起左边的筷子,又拿不到右边的筷子,5个进程同时阻塞。所以造成进程间死锁的原因是资源,资源不够可能会引起死锁,请求和释放资源顺序不得当也会造成死锁。
    13、CPU、内存这类资源属于可抢占性资源(可剥夺性资源);打印机属于不可剥夺性资源(也就是前边讲的临界资源)。前边说死锁是由资源不够而产生的,是说打印机这种不可剥夺性资源不够会引起死锁,而可剥夺性资源是可剥夺的,不会引起死锁。
    14、产生死锁的4个必要条件:
    a、互斥条件:比如打印机这种资源,访问一定是互斥的,所以打印机这类资源不够会引起死锁。
    b、请求和保持条件:手里拿着资源,还在申请其他资源。
    c、不可抢占资源:比如打印这种资源,是不可抢占的。如果可抢占,例如CPU,是不会发生死锁的。
    d、循环等待条件:进程和请求、保持的资源之间,构成了一个环
    15、处理死锁的方法:
    a、预防死锁:破坏死锁产生的4个必要条件至少其中之一
    互斥条件不能破坏,打印机这类资源一定要互斥访问才可以,不能共享访问;破坏请求和保持,一次性申请全部资源(AND型信号量思路),实现简单,但是浪费资源,延迟进程推进(申请的资源暂时又用不到,要空闲着等待);破坏不可抢占,把打印机这类不可抢占资源变为可抢占性资源,即如果申请的资源得不到,就放弃手中的全部资源,因为资源不停的申请释放增加了系统开销;破坏循环等待,给资源编号,按照顺序是申请,比较死板,限制用户编程和增加新资源。
    b、避免死锁:检测系统是否是安全的,系统不安全,可能会导致死锁
    c、检测死锁
    d、解除死锁:挂起、撤销某些进程,从而释放该进程拥有的资源

     16、不安全状态:找不到一个安全序列,系统就是不安全的。如果系统处于一个不安全状态,就有可能导致死锁,只是有可能,不是一定。安全序列:进程执行的先后顺序,主要是看当前资源数目能不能满足进程需要。

    17、本章最重要的一个,就是银行家算法。银行家算法是为了银行判断是否给企业贷款设计的,核心思想就是假设给了,系统仍旧是安全的,那就给,不安全,就不给。具体的过程大家看课本和习题指导书就可以,上边的例题足够大家掌握该知识点。

  • 相关阅读:
    hutool 糊涂
    java 连接 Redis 工具
    生成6位验证码
    @FeignClient定义冲突解决
    Seate分布式事务解决方案
    算法——最小生成树的关键边和伪关键边
    《Kubernetes权威指南》读书笔记
    Docker——容器卷管理
    算法——课程表 II(有向图拓扑排序)
    Docker——网络
  • 原文地址:https://www.cnblogs.com/lgwdx/p/14599086.html
Copyright © 2020-2023  润新知