第三章 处理机调度与死锁
======================================================================
(二)处理机调度
1.调度的基本概念
2.调度时机、切换与过程
3.调度的基本准则
4.调度方式
5.典型调度算法
先来先服务调度算法;短作业(短进程、短线程)优先调度算法;时间片轮转调度算法;优先级调度算法;高响应比优先调度算法;多级反馈队列调度算法。
=======================================================================
1. 多进程环境下,要求系统动态的把处理机分配给就绪队列中的进程。这就是处理机调度程序。
2. 对于批量性作业,要经历作业调度(高级调度)和进程调度(低级调度)来获得处理机。
终端型作业,只需经历进程调度即可获得处理机。
3. 作业不仅包含数据和程序,还包括作业说明书,系统通过其来对程序进行控制,在批处理系统中,以作业为单位从外存调入内存。
4. 作业步:作业运行期间,需经过很多作业步。一个典型的作业可分为三个作业步:
[1] “编译”作业步:通过执行编译程序对源程序编译,产生若干个目标程序段。
[2] 连接装配,将编译产生的目标程序段装配成可执行的目标程序。
[3] 运行,将可执行的目标程序读入内存并控制其运行。
5. 作业流:作业进入系统后,系统为其创建一个JCB(JOB Contral block)作业控制块,被依次存放在外存上,这便形成了输入的作业流。
6. 作业调度:根据jcb中的信息,审查系统能否满足作业的资源需求,然后按照一定的算法,从外存的后备队列中选取作业调入内存,并创建进程、分配必要的资源,再插入进程队列,准备执行。
7. 低级调度的功能:
[1] 保存处理机的现场信息。
[2] 按某种算法选区进程
[3] 把处理器分配给进程
8. 进程调度的三个基本机制:排队器,分派器和上下文切换机制(先已通过硬件实现改变)
9. 进程的调度方式:
[1] 非抢占方式
一旦把处理及分配给进程后,就让其一直运行,不会因为始终中断等原因而抢占处理机,知道进程完成自愿释放处理机或发生某事被阻塞才把处理机分配给其他进程。
引起进程调度的因素:
执行完毕,执行中的进程因提出I/O请求,原语操作,P操作(wait操作)、Block原语、Wakeup原语等。
[2] 抢占方式
优先权原则:允许优先权高的新进程抢占当前进程的处理机
短作业(进程)优先原则:短作业抢占
时间片原则:各进程按时间片轮流进行
10. 中级调度:暂时不运行的进程调至外存挂起,当其又具有运行条件且内存有空闲,由中级调度重新调入内存,修改为就绪状态,等待调度。
11. 调度算法:
[1] 先来先服务和短作业优先调度算法 FCFS( first come first served )
FCFS先来先调入进程分配学处理机,直到运行完成。适用于短作业。有利于CPU繁忙型作业,不利于I/O繁忙型作业(进程)
CPU繁忙性作业:需要大量的CPU事件进行计算。科学计算
I/O繁忙型作业:处理时需要频繁请求I/O
短作业(进程)优先调度算法 SJF ( shortest job first )
能有效降低作业的平均等待时间,提高系统吞吐量。
缺点是:多长作业不利,未考虑作业的紧迫程度,依赖用户对进程的估计时间。
[2] 高优先权优先调度算法FPF first priority first
调度算法类型:非抢占式优先权算法(批处理),抢占式优先权算法(实时系统和对性能要求较高的批处理和分时系统)
优先权类型:静态优先权、动态优先权
高响应比优先调度算法
rp越大优先权越高
[3] 基于时间片的轮转调度算法
每个程序执行一个时间片,然后时间片完调到队尾执行下一个时间片,系统就能再指定时间完成所有用户的请求。
12. 完成时间:开始时间+服务时间
周转时间:完成时间-到达时间
带权周转时间:周转时间/服务时间
13. 实时调度:实时系统存在若干实时进程或任务,旺旺带有某种程度的紧迫性,因而需要引入一种新的调度,即实时调度。
14. 实现实时调度的基本条件:
(一) 提供必要的信息:就绪时间、开始截止时间和完成截止时间、处理时间、资源要求和优先级。
(二) 系统处理能力强:全部实时任务的处理时间比上周期时间的和小于处理几个数。
(三) 采用抢占式调度机制
(四) 具有快速切换机制
15. 实时调度算法的分类:
[1] 非抢占式调度算法:非抢占式轮转调度算法,非抢占式优先调度算法
[2] 抢占式调度算法:
基于始终中断的抢占式优先权调度算法
立即抢占的优先权调度算法
16. 常用的集中实时调度算法:
[1] 最早截止时间优先即EDF算法:非抢占用于非周期,抢占式用于周期实时任务
[2] 最低松弛度优先即LLF算法
17. 死锁:多个进程在运行过程中因争夺资源而造成的一种僵局。
18. 产生原因:
1, 进程间竞争资源。
在系统中所配置的非剥夺性资源,如磁带机,打印机等,由于他们的数量不能满足诸进程运行的需要,会使进程在运行过程中因争夺这些资源而陷入僵局。
或者是竞争临时性资源。指一个进程产生,被另一进城使用一段咱时间后边无用的资源。
2, 进程间推进顺序非法。
19. 产生死锁的必要条件:
[1] 互斥条件:某段时间某资源只由一个进程占用
[2] 请求和保持条件:进程保持了至少一个资源,又提出了新的资源请求。
[3] 不剥夺条件:进程一伙的的资源,未使用完之前,不能被剥夺,只能在用完自己释放。
[4] 环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链。
20. 处理死锁的基本方法:
[1] 预防死锁:设置限制条件,破坏四个条件中的一个或几个。
[2] 避免死锁:在资源的动态分配过程中,防止系统进入不安全状态,避免死锁
[3] 检测死锁:允许死锁,检测死锁,消除死锁。
[4] 解除死锁:当检测到死锁时,撤销或挂起一些进程,回收资源,使阻塞状态转为就绪。
21. 预防死锁的方法:
[1] 摒弃请求和保持条件:进程运行之前,一次性地申请其再整个运行过程所需的全部资源。
[2] 摒弃不剥夺条件:进程必须释放已保持资源,才能申请新的资源。
[3] 摒弃“环路等待”条件:线性排序
22. 银行家算法避免死锁:Dijkstra