处理机调度与死锁
3.1处理机调度的层次和调度算法的目标
3.11 处理机调度的层次
1.高级调度
高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法决定将外存上处于后备队列中的那几个作业调入内存,为他们创建进程、分配必要的资源,并将他们放入就绪队列。高级调度主要用于多道批处理系统中,而在分时系统中不设置高级调度。
2.低级调度
低级调度又称为进程调度或短程调度,其所调度的对象是进程或内核级线程。其主要功能是根据某种算法决定就绪队列中的那几个进程获得处理机,并由处理机分配给被选中的进程。进程调度是最基本的一种调度,在多道批处理、分时、实时多种类型的OS种都必须配置这级调度。
3.中级调度
中级调度又称为内存调度。引入中级调度的主要目标是提高内存利用率和系统吞吐量。
在上述三种调度中,进程调度的运行频率最高。
3.1.2 处理机调度算法的目标
一般而言在一个操作系统中,应如何选择调度方式和算法,在很大程度上取决于操作系统的类型及其设计目标。
1.处理机调度算法的共同目标
- 资源利用率
- 公平性
- 平衡性
- 策略强制执行
2.批处理系统的目标
- 平均周转时间短
- 系统吞吐量
- 处理机利用率高
3.分时系统的目标
- 响应时间块
- 均衡性
4.实时系统的目标
- 截止时间的保证
- 可预测性
3.2作业与作业调度
作业是用户提交给系统的一项相对独立的工作。
3.2.1 批处理系统中的作业
1.作业和作业步
- 作业。是一个比进程更为广泛的概念,不仅包含通常的程序和数据,且还应配有一份作业说明书,系统根据说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的
- 作业步。在作业运行期间,每隔作业都必须经过若干个相对独立,相互关联的顺序加工步骤才能得到结果。将其中每一个加工步骤称为一个作业步。
2.作业控制块
为了管理和调度作业,在多道批处理系统中,为每个作业设置了一个作业控制块JCB,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。常在JCB中包含的内容有: 作业标识、用户名称、用户账号、作业类型(CPU繁忙型、I/O繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业运行时间)资源需求(预计运行时间、要求内存大小等)、资源使用情况等。
每当一个作业进入系统时,便由“作业注册”程序为改作业建立一个作业控制块JCB。
3.作业运行的三个阶段和三种状态
作业从进入系统到运行结束,通常需要经历收容、运行和完成三个阶段。相应的作业也就有“后备状态”、“运行状态”、和“完成状态”
- 收容阶段:操作员把用户提交的作业通过某种输入方式或SPOOLing系统输入到硬件,再为改作业建立JCB,并把它放入作业后备队列种。相应的,此时作业的状态为“后备状态”。
- 运行阶段:当作也备作业调度选中后,便为它分配必要的资源和建进程,并将其放入就绪队列,一个作业从第一次进入就绪状态开始,直到它运行结束前,在此期间都称为运行状态。
- 完成阶段:当作业完成、或发生异常情况而提前结束时,作业便进入完成阶段,相应的作业状态被称为“完成状态”。
3.2.2作业调度的任务
作业调度的主要内容是,根据JCB中的信息,检查系统中的资源能否满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存并为他们创建进程、分配必要的资源。然后再将新创建的进程排在就绪队列上等待调度。因此也把作业调度称为接纳调度。在每次执行作业调度时,都需要做出两个决定:
- 接纳多少作业
- 接纳哪些作业
3.2.3作业调度算法
1.先来先服务(first-come first-service,FCFS)调度算法
FCFS是最简单的调度算法,该算法既可以用于作业调度,也可以用于进程调度
2.短作业优先(short job first,SJF)的调度算法
SJF是以作业的长短来计算优先级,作业越短,其优先级越高。
缺点:
- 必须预知作业的运行时间
- 对长作业非常不利
- 在采用SJF算法时,人——机无法实现交互
- 该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能及时得到处理
3.优先级调度算法(priority-scheduling algorithm,PSA)
在优先级调度算法中则是基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据优先级进行调度的。这样就可以保证紧迫性作业优先运行。
4.高响应比优先调度算法(Highest Response Ratio Next,HRRN)
高响应比优先调度算法即考虑作业的等待时间,又考虑了作业运行时间的调度算法,因此即兼顾队了短作业,又不致长作业的等待时间过长,从而改善了处理机调度的性能。
3.3 进程调度
3.3.1 进程调度的任务、机制和方式
1.进程的任务
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理器分配给进程。
2.进程调度机制
- 排队器
- 为了提高进程调度的效率,应事先将系统中的所有就绪进程按照一定的策略拍成一个或多个队列,以便调度程序能最快的找到它。以后每当有一个进程转变未就绪状态时,排队器便将它插入到相应的就绪队列
- 分派器
- 分派器依据进程调度程序所选定的进程,将其从就绪队列中取出,然后进行从分派器到新选出进程间的上下文切换,将处理机分配给新选出的进程。
- 上下文切换器
3.进程调度方式
- 非抢占方式
- 抢占方式
- 优先权原则
- 短进程优先原则
- 时间片原则
3.3.2轮转调度算法
1.轮转法的基本原理
在轮转(RR)法中,系统根据FCFS策略,将所有的就绪进程排成一个就绪队列,设置每个一定时间间隔(如30毫秒)即产生一次中断,激活系统中的进程调度程序,完成一次调度,将CPU分配个新的的队首进程(或新到达的紧迫进程)。由此,可保证就绪队列中的进程在一个确定的时间段内都能获得一次CPU执行。
2.进程切换时机
- 若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中的队首进程运行,并启动一个新的时间片。
- 在一个时间片用完后,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把他送进就绪队列的末尾。