文章目录
1、进程的概念
进程(process)一直一来都没有一个较为严格的定义,大多是从其功能的角度解释它。那么进程和程序之间是怎样的一个关系呢?我们先来看看程序,程序就是指令的一个集合,是一个静态的概念,而在多道程序设计系统中,CPU在各个程序之间来回切换,这个程序运行一会儿另一个程序运行一会儿,就是说各个程序是并发执行的。由于多道程序设计系统中各个程序需要共享资源,从而程序之间存在相互制约的关系,这些所有的一切都是在程序执行的动态过程中发生,因此”程序“本身这个静态的概念已经不能反映在并发环境中的状态了。因此有了 “ 进程 ”这个概念。根据上面的描述,我们可以将进程定义为:程序在并发环境中的动态执行过程。 因此我们可以总结出进程的特性:
(1) 动态性: 进程是程序的执行过程,它有生,有死,有活动,有停顿,可以处于不同的状态
(2) 并发性: 多个进程实体都可以在内存中,在一段时间内得到运行,这样,使得一个进程的程序与其他进程的程序并发执行,各个进程向前推进的速度不可预知,也就是以异步的方式进行。
(3) 调度性: 进程是系统中的资源申请单位,也是被调度的单位。
2、进程的状态和组成
既然进程是程序的执行过程,那么它就一定有它的状态,一般来讲可以将进程分为三种状态:运行状态(Running),就绪状态(Ready),阻塞状态(Blocked)。
运行状态是指当前进程已经分配到CPU,它正在处理机上执行的状态,处于这种状态的进程数目不能大于CPU的数目,如果在单CPU的机器上,任何时刻最多只能有一个进程正在运行。
就绪状态是指进程已经具备了可运行的条件,但由于其他进程正在占用CPU,使得它不能运行而处于等待分配CPU的状态,一旦CPU资源分配给它,就可以立即运行。
阻塞状态是指因等待某个事件的发生(如等待某个输入,等待其他进程发来的信号)而暂时不能运行的状态,因此它只能 “待命”等待这个事件的发生,处于这汇总状态的进程,即使CPU有空闲也不能运行。
也有一些系统新增加了新建状态和终止状态两种状态,新建状态指刚刚被创建还未放入就绪队列,终止状态指进程由于正常结束或者出现错误而被迫终止(非正常终止)所处的状态。处于终止状态的进程是不能被再次调度的,它的结局只能是被系统撤销。下面给出了五种状态的关系以及转换关系: