并发程序和顺序程序的执行有本质上的差异,为了能更好地描述程序的并发执行,实现操作系统的并发性和共享性,引入“进程”的概念。 定义:进程还是具有一定独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。 从操作系统角度开,可将进程分为系统进程和用户进程两类。系统进程执行操作系统程序,完成操作系统的某些功能。用户进程运行用户程序,直接为用户服务。系统进程的优先级通常高于一般用户进程的优先级。
1.进程与程序的联系和区别
进程和程序既有联系又有区别。 (1)进程和程序的联系 程序是构成进程的组成部分之一,一个进程的运行目标是执行它所对应的程序,如果没有程序,进程就失去了其存在的意义。从静态的角度看,进程是由程序、数据和进程控制块(PCB)三部分组成的。 (2)进程和程序的区别 程序是静态的,而进程是动态的。 进程是程序的一个执行过程。程序的存在是永久的(这里不讨论人为删除程序等行为)。而进程是为了程序的一次执行而暂时存在的。进程有生命周期,有诞生,亦有消亡。 一个进程可以包括若干程序的执行,而一个程序亦可以产生多个进程。比如,一个编译进程在运行时就要执行词法分析、语法分析、代码生成和优化等若干个程序。而一个编译程序有时也需要同时生成几个编译进程,为几个用户服务。 进程具有创建其他进程的功能。被创建的进程称为子进程,而创建者称为父进程,从而构成了进程家族。
2.可再入程序
一个程序不是任何条件下都可以产生多个进程的。一个能被多个用户同时调用的程序,在执行中自身不能改变。 如果一个程序在执行中会发生变化,那么,这个程序的功能就是可能改变的。显然该程序就不能以同样的方式为每个用户服务。甚至同一个用户以同样的要求在不同时刻调用它时,也可能得到不同的结果,这样的程序就不能同时为多个用户服务。 一个能够被多个用户同时调用的程序称作是“可再人”的程序。可再人程序必须是“纯”代码的程序,程序在执行中不会修改自身的代码。换句话说,可再人程序必须和有关的数据区分离。可再入程序的操作对象,即数据,是与程序相分离的,要求调用者提供专用工作区,以保证程序以同样方式为各用户服务。现代的操作系统及编译程序都是属于可再入程序,它们能同时被不同用户调用而形成不同的进程。
3.进程的特征
使用进程的概念能很好地描述程序的并发执行,并且能够揭示操作系统的内部特性。事实上,操作系统的并发性和共享性正是通过进程的活动体现出来的。 进程具有两个基本属性。首先,进程是一个可拥有资源的独立单位;其次,进程同时又是一个可以独立调度和分派的基本单位。正是由于进程具有这两个基本属性,才使之成为一个能独立运行的基本单位,从而也构成了进程并发执行的基础。 进程具有以下特性。
- 并发性
一个进程可以同其他进程一道向前推进,即一个进程的第一个动作可以在另一个进程的最后一个动作结束之前就开始。2. 动态性
进程对应着程序的执行过程。进程的动态性体现在两方面。首先,进程有其生命周期,有产生,也有消亡。其次,在进程的生命周期内,进程的状态是不断变化的。3. 独立性
一个进程是一个相对完整的资源分配单位。4. 交往性
一个进程在运行过程中可能会与其他进程发生直接的或间接的相互作用。5. 异步性
每个进程按照各自独立的、不可预知的速度向前推进。6. 结构性
一个进程由程序、数据和进程控制块三部分组成。