批处理系统
在OS中调度算法主要是为了保证吞吐量和周转时间
作业和作业步
1作业
作业是一个比程序更为广泛的的概念,不仅包含了通常的程序和数据,而且还应配有一份作业说明书,在批处理系统中,是以作业为基本单位从外存调入内存的
2作业步
在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,我们把其中的每一个加工步骤称为一个作业步。
作业控制块
在多批道处理系统中,为每个作业设置了一个作业控制块JCB,保存了系统对作业进行管理和调度所需的全部信息。通常包含:作业标识,用户名称,用户账号,作业类型,作业状态,调度信息,资源需求,资源使用情况等。
先来先服务
非抢占式调度算法,按照请求的顺序进行调度。对于长作业比较有利,但是不利于短作业,因为短作业必须一直等待前面的长作业执行完毕后才能执行,而长作业执行时间有过长,因此造成短作业等待时间过长。
短作业优先
非抢占式调度算法,按照执行的时间长短进行调度。长作业可能会被饿死,处于一直等待短作业执行完毕状态,如果一直有短作业来,那么长作业一直等不到背调度。
最先剩余时间优先
最短作业的抢占式调度算法,按剩余运行时间的顺序进行调度,当一个新作业到达时,其整个运行时间与当前进程所剩的时间进行比较,如果新进程所需的时间更短,则挂起该进程,运行新的进程,否则新的进程等待。
进程调度的任务,机制和方式
1进程调度的任务
1.保存处理机的现场信息
2.按某种算法选取进程
3.把处理器分配给进程
进程调度方式
1.非抢占方式
一旦把处理机分配给某进程后,就一直让它运行下去,决不会因为时钟中断或者任何其他原因去抢占当前正在运行进程的处理机,直至该进程完成,或者某事件而被阻塞时,才把处理机分配给其他进程
2.抢占式
允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一个进程。抢占不是一种任意性的原则,必须遵循一定的原则。
交互系统
时间片轮转
将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。
时间片轮转算法的效率和时间片的大小有很大关系:
因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。
而如果时间片过长,那么实时性就不能得到保证。
2.2 优先级调度
为每个进程分配一个优先级,按优先级进行调度。
为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
2.3 多级反馈队列
一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。
多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,…。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。
每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。
可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。
实时系统
实时系统要求一个请求在一个确定时间内得到响应。
分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时