第三章 处理机管理

如题所述

第1个回答  2022-06-18

处理机管理的工作是对CPU资源进行合理的分配使用,以提高处理机利用率,并使各用户公平地得到处理机资源。这里的主要问题是处理机调度算法和调度算法特征分析。

分为:作业调度、内存调度、进程调度。
作业: 又称为""宏观调度"、"高级调度"。从用户工作流程的角度,一次提交的若干个流程,其中每个程序按照进程调度。时间上通常是分钟、小时或天。
内外存交换: 又称为"中级调度"。从存储器资源的角度。将进程的部分或全部换出到外存上,将当前所需部分换入到内存。指令和数据必须在内存里才能被CPU直接访间。
进程或线程: 又称为"微观调度"、"低级调度"。从CPU资源的角度,执行的单位。时间上通常是毫秒。因为执行频繁,要求在实现时达到高效率。

作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列,进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它。中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来。当内存空间宽松时,通过中级调度选择具备运行条件的进程,将其唤醒。

进程调度和切换程序是操作系统内核程序,当请求调度的事件发生后,才可能会运行进程调度程序,当调度了新的就绪进程后,才会去进行进程间的切换。在实际中,操作系统内核程序运行时,如果某时发生了引起进程调度的因素,并不一定能够马上进行进程的调度和切换。
不能进行进程调度和切换的情况有以下几种:
1)在处理中断的过程中: 中断过程复杂,在实现上很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源。
2)进程在操作系统内核程序临界区中: 进入临界区后,需要独占式地访问共享数据,理论上必须加锁,以防止其他并行程序进入,在解锁前不应切换到其他进程运行,以加快共享数据的释放。
3)其他需要完全屏蔽中断的原子操作过程中: 如加锁、解锁、中断现场保护、恢复等原子操作。在原子过程中,连中断都要屏蔽,更不应该进行进程调度与切换。
应当进行进程调度和切换的情况有:
1)当发生引起调度条件,且当前进程无法继续运行下去时,可以马上进行调度和切换。 如果操作系统只在这种情况下进行进程调度,就是非剥夺调度。
2)当中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换。 如果操作系统支持这种情况下的运行调度程序就实现了剥夺方式的调度。

1)非剥夺调度方式(非抢占方式)。 这种方式的优点是实现简单、系统开销小,适用于大多数的批处理系统,但它不能用于分时系统和大多数实时系统。
2)剥夺调度方式(抢占方式)。 可以提高系统吞吐率和响应效率,但剥夺不是一种任意性的行为,必须遵循一定的准则,主要有:优先权、短进程优先和时间片原则等。

1)CPU利用率;
2)系统吞吐量; 表示单位时间内CPU完成作业的数量。
3)周转时间; 是指从作业提交到作业完成所经历的时间。
4)等待时间; 是指进程处于等处理机状态时间之和。
5)响应时间; 是指用户提交请求到系统首次产生响应所用的时间。

作业的周转时间
平均周转时间
带权周转时间=最高响应比
等待时间

FCFS是一种不可剥夺式算法,先到的进程先运行。
特点是:算法简单,但效率低;对长作业比较有利,但对短作业不利;有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
缺点:
1)对长作业不利,容易出现 “饥饿”现象
2)该算法未完全考虑作业的紧迫程序,因而不能保证紧迫性作业会被及时处理;
3)由于作业的长短只是根据用户所提供的预估执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使 该算法不一定能真正做到短作业优先调度
SJF调度算法的平均等待时间、平均周转时间最少。

根据新的最高优先级进程能否抢占正在执行的进程,可以将该调度算法分为:
1)非剥夺式优先级调度算法。
2)剥夺式优先级调度算法。
根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:
1)静态优先级。 创建时确定,在进程整个运行期间保持不变。
2)动态优先级。 进程运行过程中,根据进程情况的变化(进程占有CPU时间的长短、就绪进程等待CPU时间的长短)动态调整优先级。
适用于实时系统,会出现“饥饿”现象

对FCFS和SJF调度算法的一种综合平衡,公式:

1)当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业;
2)当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务;
3)对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也获得处理机。克服了饥饿状态,兼顾了长作业。

进程调度程序选择就绪队列中第一个进程执行,但仅能运行一个时间片,如100ms。在使用完一个时间片之后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。
时间片的大小对系统性能的影响很大, 时间片的长短通常由以下因素确定:系统的响应时间、就绪队列中的进程数目和系统处理能力。
响应时间=等待的进程数*时间片 这个公式用来确定时间片大小

1)应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,2级队列次之,其余队列的优先级逐次降低。
2)赋予各个队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间片就越小。
3)每个作业都采用时间片运行一次,运行完的作业撤离队列,一次时间片后未完成完的作业,就将其放置下一级队列的队尾,再采用FCFS调度算法运行一次时间片轮转,若仍未完成,继续放入下一队列,如此下去。
多级反馈队列的优势:
1)终端型作业用户:短作业优先。
2)短批处理作业用户:周转时间较短。
3)长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。

相似回答