进程的定义、组成、组织方式、特征
一、进程的定义
程序
程序:就是一个指令序列
早期的计算机(只支持单道程序):内存中在同一时刻同一时间段内,只会存在一个程序相关数据,包括程序段和数据段;CPU和I/O设备也被一个程序占有。程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)
引入多道程序后,内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?
系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念
PCB、程序段、数据段三部分构成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
注意:PCB是进程存在的唯一标志!
定义
从不同的角度,进程可以有不同的定义,比较传统典型的定义有(强调“动态性”):
1.进程是程序的一次执行过程。
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
3.进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
引入进程实体的概念后,可把进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程由程序段、数据段、PCB三部分组成”
二、进程的组成
进程(进程实体)由程序段、数据段、PCB三部分组成。
PCB:操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。
程序段:程序代码即存放在此
数据段:程序运行时使用、产生的运算数据。如全局变量、局部变量、宏定义的常量就存放在数据段内
三、进程的组织
在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。
注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
四、进程的特征
进程和程序是两个截然不同的概念,相比于程序,进程拥有以下特征:
动态性是进程最基本的特征
进程是资源分配、接受调度的基本单位
异步性会导致并发程序执行结果的不确定性。具体会在“进程同步”相关小节进行学习