处理器调度的目标是以满足系统目标(如响应时间、吞吐率、处理器效率)的方式,把进程分配到一个或多个处理器中执行。在许多系统中,这个调度活动分成3个独立的功能:长程、中程和短程调度,它们的名称表明在执行这些功能时的相对时间比例。
图3-6将调度功能结合到了进程状态转换图中。新建新进程时,执行长程调度,它决定是否把进程添加到当前活跃的进程集合中。中程调度是交换功能的一部分,它决定是否把进程添加到那些至少部分在内存中并且可以被执行的进程集合中。短程调度真正决定下一次执行哪一个就绪进程。图3-7重新组织了进程状态转换图,用于表示调度功能的嵌套。
图3-6 调度和进程状态转换
图3-7 调度功能的嵌套
由于调度决定了哪个进程必须等待、哪个进程可以继续运行,因此它影响着系统的性能。这一点可以在图3-8中看出,该图给出了在一个进程状态转换过程中所涉及的队列。为简单起见,图3-8中给出一个新进程直接到达就绪态的情况,而图3-6和图3-7中给出了到达就绪态和就绪/挂起态两种不同情况。从根本上说,调度属于队列管理方面的问题,用于在排队环境中减少延迟和优化性能。
图3-8 调度的队列图
1.长程调度
长程调度程序控制着系统的并发度,一旦允许进入,一个作业或用户程序就成为一个进程,并被添加到供短程调度程序使用的队列中等待调度。在某些系统中,一个新创建的进程开始处于被换出状态。在这种情况下,它被添加到供中程调度程序使用的队列中等待调度。在批处理系统或者操作系统的批处理部分中,新提交的作业被发送到磁盘,并保存在一个批处理队列中。在长程调度程序运行的时候,从队列中创建相应的进程。这里涉及两个决策,调度程序必须决定什么时候操作系统能够接纳一个进程或者多个进程;同时,调度程序必须决定接受哪个作业或哪些作业,并将其转变成进程。(www.xing528.com)
关于何时创建一个新进程的决策,通常由要求的系统并发度来驱动。创建的进程越多,每个进程可以执行的时间所占百分比就越小(即更多进程竞争同样数量的处理器时间)。因此,为了给当前的进程集提供满意的服务,长程调度程序可能限制系统并发度。每当一个作业终止时,调度程序可决定增加一个或多个新作业。此外,如果处理器的空闲时间片超过了一定的阈值,也可能启动长程调度程序。
关于下一次允许哪一个作业进入的决策可以基于简单的先来先服务(FCFS)原则,或者基于管理系统性能的工具,其使用的原则可以基于包括优先级、期待执行时间和I/O需求。例如,如果信息是可以得到的,则调度程序可以试图混合处理器密集型和I/O密集型的进程。如果一个进程主要担负计算工作偶尔才会用到I/O设备,则该进程被视为处理器密集型;如果一个进程执行所使用的时间主要取决于等待I/O操作的时间,则把它视为I/O密集型。同样,可以根据请求的I/O资源来做出决策,以达到I/O使用的平衡。
对于分时系统中的交互程序,用户试图链接到系统的动作可能产生一个进程创建的请求。分时用户并不是仅仅排队等待,直到系统接受它们。相反,操作系统将接受所有的授权用户,直到系统饱和为止。这时,链接请求将会得到指示系统已经饱和,并要求用户重新尝试的消息。
2.中程调度
中程调度是交换功能的一部分。在典型情况下换入(Swapping-In)决定取决于管理系统并发度的需求。在不使用虚存存储的系统中,存储管理也是一个问题。因此,换入决策将考虑换出(Swapped-Out)进程的存储需求。
3.短程调度
考虑执行的频繁程度,长程调度程序执行的频率相对较低,并且仅仅是粗略地决定是否接受新进程及接受哪一个。为进行交换决定,中程调度程序执行得略微频繁一些。短程调度程序,也称为分派程序,执行得最频繁,并且精确地决定下一次执行哪一个进程。
当可能导致当前进程阻塞或可能抢占当前运行进程的事件发生时,调用短程调度程序。这类事件包括时钟中断、操作系统调用、I/O中断和信号(如信号量)。
CPU是计算机最重要的资源之一。由于在多道程序系统中会出现多个进程同时共享CPU资源,这必然导致多个进程对CPU的竞争。那么,如何把CPU分配给众多处于就绪状态进程中的某一个,使得这种分配下CPU的利用率最高,且又保证各进程都能顺利运行,这就是CPU调度所要解决的问题。CPU调度性能的优劣,将直接影响CPU的利用率和整个计算机系统的性能,因此CPU调度就成为操作系统的核心功能之一。CPU调度主要涉及作业调度和进程调度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。