学习笔记之汤小丹《计算机操作系统第四版》----第三章 处理机调度与死锁

  • 处理机调度的层次:
  1. 高级调度(作业调度、长程调度):调度对象为作业(还不是进程),为它们创建进程,分配必要的资源,并将它们放入就绪队列(从外存 --->内存)
  2. 低级调度(进程调度、短程调度):决定就绪队列中的哪个进程应获得处理机
  3. 中级调度(内存调度):提高内存利用率和系统吞吐量,把暂时不能运行的进程(挂起状态)调至外存等待
  • 处理机调度算法的共同目标:
  1.   
  2. 公平性:使各进程都获得合理的CPU时间(不是相同的,根据紧急程度或重要性来提供不同的CPU时间)
  3. 平衡性:由于系统中可能具有多种类型的进程,应保持系统资源使用的平衡性
  4. 策略强制执行
  • 批处理系统的目标:
  1. 平均周转时间短。周转时间:指从作业被提交给系统开始,到作业完成为止的这段时间间隔。包括:作业在外存后备队列上等待作业调度的时间、进程在就绪队列上等待进程调度的时间、进程在CPU上执行的时间以及进程等待I/O操作完成的时间                                       平均周转时间:T = \frac{1}{n} * \sum _{i=1}^{i=n}T_{i}                                                                                                                                                   平均带权周转时间:W = \frac{1}{n}\sum _{i=1}^{i=n}\frac{T_{i}}{T_{s}}     Ti:作业的周转时间,Ts:系统为它提供服务的时间
  2. 系统吞吐量高。吞吐量:单位时间内系统所完成的作业数
  3. 处理机利用率高
  • 分时系统的目标:
  1. 响应速度快。响应时间:从用户通过键盘提交一个请求开始,直到屏幕上显示出处理结果为止的一段时间间隔
  2. 均衡性:系统响应时间的快慢应与用户所请求的服务的复杂性相适应
  • 实时系统的目标:
  1. 截止时间的保证。截止时间:某任务必须开始执行的最迟时间或必须完成的最迟时间
  2. 可预测性
  • 作业:程序 + 数据 + 作业说明书(系统根据它对程序的运行进行控制)
  • 作业步
  • 作业控制块JCB:类似于PCB
  • 作业运行的三个阶段和三个状态:
  1. 收容阶段 ---->  后备状态
  2. 运行阶段 ---->  运行状态
  3. 完成阶段 ---->  完成状态
  • 作业调度的主要任务:
  1. 接纳多少个作业。取决于多道程序度,即允许多少个作业同时在内存中运行
  2. 接纳哪些作业:由FCFS,SJF,PSA,HRRN等算法决定
  • 在分时系统中,为了做到及时响应,用户输入的命令或数据都被直接送入内存,因而无须配置作业调度机制。但需有接纳控制措施(限制进入系统作业的数目)
  • 先来先服务算法(FCFS):现在一般是在系统中按进程的优先级设置多个队列,每个优先级一个队列,每一个队列的调度都基于FCFS算法
  • 短作业优先算法(SJF):根据估计作业运行时间来衡量作业的长短
  • SJF的缺点:
  1. 必须预知作业的运行时间
  2. 对长作业非常不利,完全忽视作业的等待时间,可能出现饥饿现象
  3. 人-机无法交互???
  4. 未考虑作业的紧迫程度
  • 优先级调度算法PSA(priority-scheduling algorithm):基于作业的紧迫程度,由外部赋予作业的相应的优先级
  • 高响应比优先调度算法HRRN(Highest Response Ratio Next):引入动态优先级。                                                                                                                                                以上优先权及相应比,响应时间 = 周转时间 = 等待时间 + 要求服务时间
  • HRRN的缺点:每次进行调度之前,都需要先做响应比的计算,会增加系统开销
  • 进程调度的任务:
  1. 保存处理机的现场信息
  2. 按某种算法选取进程
  3. 把处理器分配给进程
  • 进程调度机制包括:
  1. 排队器:排队器把转变为就绪状态的进程插入到就绪队列(若未满的话)
  2. 分派器
  3. 上下文切换器
  • 进程调度方式:
  1. 非抢占方式:一旦把处理机分配给某个进程后,就一直让它运行下去,直至该进程完成或发生某事件而被阻塞
  2. 抢占方式:允许调度程序根据某种原则,去暂停某个正在执行的进程
  • 抢占的原则:
  1. 优先权原则
  2. 短进程优先原则
  3. 时间片原则
  • 轮转调度算法:最基本和最常用的 基于时间片的轮转(RR),引入计时器,常用于分时系统
  • 轮转算法的基本原理
  • 轮转算法中进程切换时间:进程完成;时间片用完
  • 时间片大小的确定:略大于 一次典型的交互所需的时间
  • 优先级调度算法的类型:
  1. 非抢占式优先级调度算法
  2. 抢占式优先级调度算法
  • 优先级的类型:
  1. 静态优先级
  2. 动态优先级(类似于之前的HRRN引入的优先权)
  • 多级反馈队列调度算法的调度机制:
  1. 设置多个就绪队列 。第一个队列优先级最高 ;优先级越高的队列,其时间片越小
  2. 每个队列都采用FCFS算法。当新进程进入内存后,首先将它放入第一队列的末尾,按FCFS等待调度。当轮到该进程执行时,如 它能在该时间片内完成,则将其撤离系统;否则,将它转入下一队列末尾;循环,直到进入最后一个队列,采用RR算法
  3. 按队列优先级调度。仅当第1~i - 1的所有队列均空时,才会调度第i队列的进程运行。如果处理机正在处理第i队列中为某进程服务时又有新进程进入任一优先级较高的队列,此时须立即把正在运行的进程放回第i队列的末尾,而把处理机分配给新到的高优先级进程
  • 基于公平原则调度算法:
  1. 保证调度算法(立足于实际执行了的处理机时间与应获得的处理机时间)
  2. 公平公享调度算法(立足于对用户公平,而不是对进程公平)
  • 可重用性资源和可消耗性资源(比如用于进程间通信的消息)
  • 可抢占性资源和不可抢占性资源
  • 计算机系统中引起死锁的原因:
  1. 竞争不可抢占性资源引起死锁
  2. 竞争可消耗资源引起死锁
  3. 程序推进顺序不当引起死锁
  • 产生死锁的必要条件:
  1. 互斥条件(资源)
  2. 请求和保持条件(进程 + 资源)
  3. 不可抢占条件(资源)
  4. 循环等待条件(进程 + 资源)
  • 处理死锁的方法:
  1. 预防死锁
  2. 避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态
  3. 检测死锁
  4. 解除死锁:常用的方法是撤销一些进程,回收资源                                                                                                                   以上四点,对死锁的防范程度逐渐减弱,对资源的利用率提高,进程因资源因素而阻塞的频度逐渐下降,并发程度逐渐提高
  • 互斥条件是非共享设备所必须的,不仅不能改变,还应加以保证
  • 通过破坏“请求和保持”条件预防死锁:
  1. 第一种协议:进程一次性申请并被分配其所需的所有资源                                                                                                        缺点:资源被严重浪费;进程会发生饥饿现象
  2. 第二种协议:允许一个进程只获得运行初期所需的资源后便开始运行。进程运行过程中再逐步释放已分配给自己的且已用完的资源,然后再请求新的所需资源
  • 通过破坏“不可抢占”条件预防死锁:通过释放自己(提出新资源请求的进程)所拥有的全部资源 
  • 通过破坏“循环等待条件”:对系统所有资源类型进行线性排序,并赋予不同的序号,每个进程必须按序号递增的顺序请求资源                                                                                                                                                                                                缺点:
  1. 为资源规定的序号必须相对稳定,这限制了新类型设备的增加
  2. 可能造成资源的浪费
  3. 用户编程复杂
  • 在避免死锁的方法中,把系统的状态分为安全状态和不安全状态
  • 安全状态:系统能按某种进程推进顺序(P1,P2,...,Pn)为每个进程Pi分配其所需所有资源(为当前进程分配资源时,前一进程已结束,拥有的资源已被释放),直至满足每个进程对资源的最大需求
  • 如果无法找到这样一个序列,系统则处于不安全状态
  • 利用银行家算法避免死锁(假设该资源请求可以分配---->检验资源分配后是否是安全状态,如果是不安全状态,则不予以分配);Java实现
  • 资源分配图                                                                                                                                                                                      学习笔记之汤小丹《计算机操作系统第四版》----第三章 处理机调度与死锁_第1张图片 P1获得2个单位的R1资源,P1请求1个单位的R2资源
  • 常用解除死锁的方法:
  1. 抢占资源
  2. 终止进程
  • 页面置换算法:
  1. 最近最久未使用算法(LRU):基于时间先后,栈
  2. 最少使用算法(LFU):基于一个时间段的使用次数

你可能感兴趣的:(学习笔记,操作系统,锁)