操作系统笔记------处理机调度
调度层次
这里的处理对象是作业,这时一个比较宽泛的概念,不仅仅包括程序和数据,还应包括对程序运行的控制信息。在批处理系统上,作业是最基本的调度单位,由后备队列中调入内存,在为其创建相应的进程,分配内存与相关的资源,之后根据相关的算法来分配cpu资源(以时间片作为单位),但是可能会有相关的事件发生,有些进程会被阻塞或者挂起,之后又重新就绪获得时间片进行运行,往复直至运行结束。根据各个阶段的资源调度特点,将其分为三个层次。
高级调度
就是最先的那一段,决定将后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
运行时调度的频率低(相关进程创建后的运行需要时间,内存有限),调度的算法可以很复杂(要确定相关调度的作业)
中级调度
之后就是中级调度了,之前创建的进程可能会由于相关事件或者没有请求到相关的资源,导致其无法立即运行,这时如果其还占用着内存资源的话会比较浪费,我们可以根据其状态将其移到外存中的相关队列中,等待其具备了运行条件,且内存又稍有空闲时,再由中级调度加载入内存中等待(就绪)继续运行。
其细分为内存就绪(表示进程在内存中就绪)和外存就绪(进程在外存中就绪),内存阻塞(运行后由于事件或者资源条件被撤到到内存)和外存阻塞(在内存中长期处于阻塞状态,将其换至外存中存储)。
中级调度的目的是为了提高内存利用率和系统吞吐量,调度频率介于高级调度和低级调度之间。
图中的阻塞,挂起队列与就绪挂起队列都是在外存中,就绪队列与阻塞队列位于内存中。
低级调度
这里就是具体决定是哪一个就绪进程获得处理机(cpu)的使用权(时间片)。主要分配的对象是cpu处理机。
调度方式有两种:一种是非抢占式,一种是抢占式。
非抢占式:故名思意,一旦获取到了cpu的使用权,就不会被抢占,即使是比它更为重要的进程对处理机提出请求,也不会剥夺当前cpu的使用权,直至当前进程运行完成或者由于事件进入阻塞状态时,才会把处理机分配给下一进程。
抢占式:抢占式就是当前进程运行时,如果有一个更重要的进程提出对处理机的请求时,就立即暂停对当前进程的执行,并将处理器分配给更紧迫的进程。
比较:非抢占式的系统开销小,实时性差,很多的耗时操作会占据太多的时间导致进程的等待时间增长。抢占式可以避免耗时进程对cpu资源的霸占。可以设置相关的优先级进行调度。
调度算法的性能衡量
周转时间
从作业提交给系统开始,到作业完成为止的时间间隔;
周转时间=后备队列等待时间(作业)+就绪队列等待时间(进程)+CPU上执行时间(进程)+等待I/O操作时间(进程)
平均周转时间=总的周转时间 / 进程数量
带权周转时间=总的周转时间 / 实际需要运行(服务)的时间
平均带权周转时间=总的带权周转时间 / 进程数量
面向用户
响应时间:用户从提交键盘命令开始,到系统首次给出响应为止的时间。
截止时间:作业(或进程)开始(或结束)的最晚时间
面向用户的准则要求响应时间快,截止时间保证。
面向系统
吞吐量:系统单位时间内完成的作业或进程的数量。
面向系统的准则要求系统吞吐量高,处理机利用率好,资源利用均衡。
调度算法
用于资源分配,根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法,有的算法适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可用于作业调度,也可用于进程调度。
先来先服务(FCFS)
既可用于