操作系统——第三章

在这一章中,主要是讲述处理机调度算法、处理机死锁问题。
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、本章最重要的一个,就是银行家算法。银行家算法是为了银行判断是否给企业贷款设计的,核心思想就是假设给了,系统仍旧是安全的,那就给,不安全,就不给。具体的过程大家看课本和习题指导书就可以,上边的例题足够大家掌握该知识点。

posted @ 2021-03-30 21:53  理工—王栋轩  阅读(457)  评论(0编辑  收藏  举报