先来先服务调度算法(FIFO)
进程和作业的区别
作业是用户需要计算机完成某项任务而要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。而进程是已提交完毕的作业的执行过程,是资源分配的基本单位。两者的主要区别如下:
作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业之后,系统将它放入外存中的作业等待队列中等待执行;而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。
一个作业可由多个进程组成,且必须至少由一个进程组成,但一个进程不能构成多个作业。
作业的概念主要用在批处理系统中。像UNIX这样的分时系统则没有作业的概念;而进程的概念则用在几乎所有的多道程序系统中。
作业调度(高级调度)
外存----->内存
1、决定接纳多少个作业
取决于多道程序度:允许多少个作业同时在内存中运行
2、决定接纳哪些作业
这将取决于所采用的调度算法
主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。 然后再将新创建的 进程插入就绪队列,准备执行。
低级调度(进程调度)
内存—>CPU
调度过程:
保存处理机的现场信息
按某种算法选取进程
把处理机分配给进程
调度方式:
非抢占式调度
抢占式调度
中级调度
内存---->外存
<----
使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。
换入:所有的唤醒
周转时间=完成时间-到达时间
FCFS算法(先来先服务)比较有利于长作业(进程),而不利于短作业(进程)。
带权周转时间=(完成时间-到达时间)/服务时间
短作业(短进程、短线程)优先调度算法
用于作业调度:从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
用于进程调度:从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它执行。
1、该算法对长作业不利
2、该算法不能保证紧迫性作业(进程)会被及时处理
3、估计运行导致该算法不一定能真正做到短作业优先调度
优先级调度算法
调度方式
1、非抢占式优先权算法
2、抢占式优先权调度算法
优先权类型
静态优先权
动态优先权
高响应比优先调度算法
响应比Rp=(等待时间+服务时间)/服务时间
照顾了短作业,又考虑了作业到达的先后次序。
属于动态优先权,不可抢占式。