进程概念
- 进程及其状态
在多道程序工作环境下,各程序是并发执行的,它们共享系统资源,共同决定这些资源的状态。彼此间相互制约、相互依赖,因而呈现出并发、动态及互相制约等新的特征。因此,用程序这个静态概念已不能如实反映程序活动的这些特征。为此,人们引进“进程(Process)"概念来描述程序动态执行过程的性质。
简单地说,进程就是程序的一次执行过程, 有着走走停停的活动规律。进程的动态性质是由其状态变化决定的。在操作系统中,进程至少有三种基本状态:运行态、就绪态和封锁态(或等待态)。
运行态是指当前进程己分配到CPU,是程序正在处理器上执行时的状态。处于运行态的进程的个数不能大于CPU的数目。在一般单CPU机制中,任何时刻处于运行状态的进程至多有一个。
就绪态是指进程已具备运行条件,但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。一旦把 CPU分给它,就能立即运行。在操作系统中,处于就绪状态的进程数目可以有多个。
封锁态是指进程因等待某一事件的发生(如等待某一输入、 输出操作完成,等待其他进程发来的信号等)而暂时不能运行的状态。也就是说,处于封锁状态的进程尚不具备运行条件,即使CPU空闲,它也无法使用。这种状态有时也被称为不可运行态或挂起态。系统中处于这种状态的进程可以有多个。
进程的状态可依据一定的条件和原因而变化。一个运行的进程可因某种条件未满足而放弃CPU,变为封锁态:以后条件得到满足时,又变成就绪态:仅当CPU被释放时,才从就绪态进程中挑选一个合适的进程去运行,被选中的进程从就绪态变为运行态。挑选进程,分配CPU的工作是由进程调度程序完成的。
另外,在Linux系统中,“进程(Process)" 和“任务(Task)”是同一个意思,所以这两个名词常常混用。