系统架构师【操作系统:进程管理】
一.处理机管理
处理机是计算机系统的核心资源。操作系统的功能之一就是处理机管理。随着计算机的迅速发展,处理机管理显得尤为重要。这主要由于计算机的速度越来越快,处理机的充分利用有利于系统效率的整体提升;处理机管理是整个操作系统的重心所在,其管理的好坏直接影响到整个系统的运行效率;而且操作系统中并发活动的管理和控制是在处理机管理下实现的,处理机管理集中了操作系统中最复杂的部分,它设计的好坏关系到整个系统的成败。
二.进程
进程是处理机管理中最基本、最重要的概念。进程是系统并发执行的体现。由于在多程序系统中,众多的计算机用户都以各种各样的任务,随时随地的争夺使用处理机。为了动态地看待操作系统,则以进程作为独立运行的基本单位,以进程作为分配资源的基本单位,从进程的角度来研究操作系统。因此,处理机管理也被称为进程管理。处理机管理的功能就是组织和协调用户对处理机的争夺使用,把处理机分配给进程,对进程进行管理和控制,最大限度的发挥处理机的作用。
-
进程的概念用静态的观点看,操作系统是一组程序和表格的集合。用动态的观点看,操作系统是进程的动态和并发执行的。而进程的概念实际上是程序这一概念发展的产物。因此,可以从分析程序的基本特征入手,引用进程的概念。
顺序程序是指程序中若干操作必须按照某种先后顺序来执行,并且每次操作前和操作后的数据、状态之间都有一定的关系。在早期的程序设计中,程序一般都是按照顺序执行的。
在多道程序系统中,程序的运行环境发生了很大的变化。主要体现在:- 资源共享。为了提高资源的利用率,计算机系统中的资源不在由一道程序专用,而是由多道程序共同使用。
- 程序的并发执行或并行执行。逻辑上允许多道不同用户的程序并行执行;允许一个用户程序内部完成不同操作的程序段之间并行执行;允许操作系统内部不同的程序之间并行执行。物理上讲:内存储器中保存多个程序,I/O设备被多个程序交替地共享使用;在多处理机系统的情形下,表现为多个程序在各自的处理机上运行,执行时间是重叠的。单处理机系统情形下,表现为多道程序交替地在处理机上相互交替执行。
实际上,在多道程序系统中,程序的并行执行和资源共享之间是相辅相成的。一方面,只有允许程序并行执行,才能存在资源共享的问题;另一方面,只有有效地实现资源共享,才可能使得程序并行执行。
这样可增强计算机系统的处理能力和提高机器的利用率。并发操作实际上是这样的:大多数程序段只要求操作在时间上是有序的,也就是有些操作必须在其它操作之前,这是有序的,但其中有些操作却可以同时执行。
三.进程的状态
由进程运行的间断性,决定了进程至少具有以下三种状态:
- 就绪状态。当进程已分配了除CPU以外的所有必要的资源后,只要再获得处理机,便能立即执行,把这时的进程状态称为就绪状态。在一个系统中,可以有多个进程同时处于就绪状态,通常把它们排成一个队列,称为就绪队列。
- 执行状态。执行状态指的是进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程处于执行状态。
- 阻塞状态。阻塞状态指进程因发生某事件而暂停执行时的状态,亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态,有时也称为等待状态或睡眠状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。
四.进程的状态转换
进程的状态随着自身的推进和外界的变化而变化。例如,就绪状态的进程被进程调用程序选中进入执行状态;执行状态的进程因等待某一事件的变化转入等待状态;等待状态的进程所等待事件来到便进入就绪状态。进程的状态可以动态地相互转换,但阻塞状态的进程不能直接进入执行状态,就绪状态的进程不能直接进入阻塞状态。在任何时刻,任何进程都处于且只能处于一种状态。进程状态的变化情况如下:
- 运行态->等待态:一个进程运行中启动了外围设备,它就变成等待外围设备传输信息的状态;进程在运行中申请资源时,变成等待资源状态,进程在运行中出现故障,变成等待干预状态。
- 等待态->就绪态:外围设备工作结束后等待外围设备传输信息的进程结束等待;等待的资源能得到满足时,则等待资源者就结束等待;故障排队后让等待干预的进程结束等待,任何一个结束等待的进程必须先变成就绪状态,待分配到处理器后才能运行。
- 运行态->就绪态:进程用完了一个使用处理器的时间后强迫该进程暂时让出处理器,当有更高优先级的进程要运行时也迫使正在运行的进程让出处理器。由于自身或外界原因成为等待状态的进程让出处理器时,它的状态就变成就绪状态。
- 就绪态->运行态:等待分配处理器的进程,系统一种选定的策略从处于就绪状态的进程中选择一个进程,让它占用处理器,那个被选中的进程就变成了运行态。
三种状态及各种状态之间的转换如下:
五.挂起状态
在不少系统中,进程只有三种状态。但在另一些系统中,又增加了一些新的状态,其中最重要的是挂起状态。引入挂起状态的原因:
- 对换的需要。为了缓和内存紧张的情况,而将内存中处于阻塞状态的进程换至外存上,使进程又处于一种又别于阻塞状态的新状态。因为即使该进程所期待的事件发生,该进程仍不具备执行条件而不能进入就绪队列,称为这种状态为挂起状态。
- 终端用户的请求。当终端用户在自己的程序运行期间,发现有可疑问题时,往往希望使自己的进程暂停下来。也就是说,使正在执行的进程暂停执行,若是就绪进程,则不接受调度以便研究其执行情况或对程序进行修改。把这种静止状态也称为挂起状态。
- 父进程请求。父进程常希望挂起自己的子进程,以便考察和修改子进程,或者协调各子进程间的活动。
- 负荷调节的需要。当实时系统中的工作负荷较重,有可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统正常运行。
- 操作系统的需要。操作系统希望挂起某些进程,以便检查运行中资源的使用情况及进行记账。
终上所述,不难看出挂起状态具有以下三个属性:
- 被挂起的进程,原来可能处于就绪状态,此时进程的状态称为挂起就绪;若被挂起的进程原来处于阻塞状态,此时的状态称为挂起阻塞。不论哪种状态,该进程都是不可能被调度而执行的。
- 处于挂起阻塞状态的进程,其阻塞条件与挂起条件无关;当进程所期望的事件出现后,进程虽不再被阻塞,但仍不能运行,这时,应将该进程从静止阻塞状态转换为挂起就绪状态。
- 进程可以由其自身挂起,也可以由用户或操作系统等将之挂起。虽目的都在于阻止进程继续运行,被挂起的进程只能用显式方式来**,以便从挂起状态中解脱出来。
具有挂起操作的进程状态的演变情况如下: - 进程互斥:一组并发进程中一个或多个程序段,因共享某一共有资源而导致必须以一个不允许交叉执行的单位执行。也就是说互斥是要保证临界资源在某一时刻只被一个进程访问。
- 进程同步:把异步环境下的一组并发进程直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步。也就是说进程之间是异步执行的,同步即是使各进程按一定的制约顺序和速度执行。