3.1 处理机调度概述
(1)高级调度
对象:作业。
根据某种算法,决定将外存上处于后备队列中的作用调入内存,并为它们创建进程和分配必要的资源,将新创建的进程排在就绪队列上等待调度。
主要任务:接纳多少个作业,接纳哪些作业。
主要用于多道批处理系统中。
(2)中级调度
将暂不运行的进程,调至外存等待
将处于外存上的急需运行的进程,调入内存运行
即“对换”功能
(3)低级调度
对象:进程
根据某种调度算法,决定就绪队列中的那个进程应获得处理机
应用在于多道批处理,分时和实时OS。
进程调度的任务:
①保存处理机的现场信息
②按某种算法选取进程
③把处理器分配给进程
进程调度机制:
排队器:用于将就绪进程插入相应的就绪队列
分派器:用于将选定的进程一处就绪队列
上下文切换器:进行新旧进程之间的上下文切换
处理机调度算法的目标:
共同目标:①资源利用率 ②公平性 ③平衡性 ④策略强制执行
批处理系统的目标:平均周转时间段,系统吞吐量大,处理机利用率高
分时系统的目标:响应时间快,均衡性
实时系统的目标:截至事件的保证,可预测性
3.2 调度算法
(1)先来先服务算法(FCFS)
(2)短作业优先调度算法(SJF)
(3)优先级调度算法:
确定进程优先级的依据有三个方面:
①进程类型(系统进程,用户进程)。
②进程对资源(CPU,内存)的需求。
③用户要求
(4)高相应比优先调度算法
(5)时间片轮转算法(RR)
3.3 实时调度
(1)实时调度的基本条件
3.4 Linux进程调度
基于调度器,允许不同的可动态添加的调度算法并存,每个类都有一个特定的优先级
总调度器:根据调度器类的优先顺序,依次对调度器类中的进程进行调度
调度器类:使用所选调度器算法进行内部调度
调度器类的默认优先级顺序为:Stop_Task>Real_Time>Fair>ldle_Task
3.5 死锁概述
死锁:指多个进程在运行过程中争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,这些进程都将永远不能再向前推进。
可重用性资源:一次只能分配给一个进程,不允许多个进程共享,遵循:请求资源,使用资源,释放资源。
可消耗资源:又进程动态创建和消耗(进程间通信的消息)
可抢占性资源:某进程再获得该资源后,其他进程或系统也可抢占该资源,CPU和主存区
不可抢占资源:当系统把这类资源分配给该进程后,在不能强行收回,只能再进程用完后自行释放:打印机,磁带机
死锁原因:
①竞争不可抢占资源引起死锁
系统中不可抢占性资源,由于它们的数量不能满足诸进程运行的需求,会使进程在运行过程中,因争夺这些资源而陷入僵局
②竞争可消耗资源引起死锁
③进程推进顺序不当引起死锁
产生死锁的必要条件:
处理死锁的方法:
3.6 预防死锁
破环死锁的四个必要条件中的一个或几个
①互斥:硬件互斥可通过虚拟技术破环,软件互斥则必须保证,不能破坏
②请求保持:必须保证进程申请资源的时候没有占用其他资源
要求进程在执行前一次性申请全部资源,只有没有占有资源时才可以分配资源
资源利用率低,可能出现饥饿
改进:进程只能获得运行初期所需资源后,便开始运行,其后在运行过程中逐步释放已分配的且用毕的全部资源,然后再请求新资源
③不可抢占:
如果一个进程的申请没有实现,它要释放所有占有的资源
先占的资源放入进程等待资源列表
进程再重新得到旧的资源的时候重新开始
④循环等待:对所有的资源类型排序进行线性排序,并赋予不同的序号,要求进程按照递增顺序申请资源
如何规定每种资源的序号是十分重要的。
限制新类型设备的增加
作业使用资源的顺序与系统规定的顺序不同
限制用户简单,自主的编程
3.7 避免死锁
银行家算法