2.1-1-进程的定义、组成、组织方式、特征
进程的定义
程序:就是一个指令序列
早期的计算机(只支持单道程序)
天下的一切都是朕的——CPU是朕的、内存是朕的、I/O设备是朕的
在内存里有程序段、数据段——程序的代码放在程序段内。程序运行过程处理的数据放在数据段内(如变量)
引入多道程序技术之后:
内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
PCB、程序段、数据段三部分构成了进程实体(进程映像)。一般情况下,我们把进程实体简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB,而撤销进程,实质上是撤销进程实体中的PCB。
注意:PCB是进程存在的唯一标志!
从不同的角度,进程可以有不同的定义,比较传统典型的定义有:
进程是程序的一次执行过程
进程是一个程序及其数据在处理机上顺序执行时所发生的活动
进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
这些定义都在强调“动态性”
引入进程实体的概念后,可把进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程由程序段、数据段、PCB三部分组成”
进程的组成
进程(进程实体)是由程序段、数据段、PCB三部分组成
程序段:程序代码即存放于此
数据段:程序运行时使用、产生的运算数据。如全局变量、局部变量、宏定义的常量就存放在此
PCB:操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。
PCB内有以下信息:
进程描述信息——进程标识符PID(当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,用于区分不同的进程,类似于身份证号。还有用户标识符。
进程控制和管理信息——进程当前状态、进程优先级
资源分配清单——程序段指针、数据段指针、键盘、鼠标
处理机相关信息——各种寄存器值(当进程切换时需要把进程当前的运行情况记录下来保存在PCB中,如程序计数器的值表示了当前程序执行到哪一句
另一种PCB分类方式:
进程标识符
处理机状态
进程调度信息
进程控制信息
总结:进程的管理者(操作系统)所需的数据都在PCB中,程序本身的运行所需的数据在程序段和数据段中
进程的组织
在一个系统中,通常有数十、数百乃至数千个PCB。为了能对它们加以有效的管理,应该用适当的方式把这些PCB组织起来
注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
进程的组织方式:
链接方式——按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针
索引方式——根据进程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针
进程的组织——链接方式
进程的特征
进程和程序是两个截然不同的概念,相比于程序,进程拥有以下特征:
1.动态性——进程是程序的一次执行过程,是动态地产生、变化、消亡的(动态性是进程最基本的特征)
2.并发性——内存中有多个进程实体,各进程可并发执行
3.独立性——进程是能独立运行、独立获取资源、独立接受调度的基本单位(进程是资源分配、接受调度的基本单位)
4.异步性——各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题(异步性会导致并发程序执行结果的不确定性。具体会在“进程同步”相关小节进行学习)
5.结构性——每个进程都会配置一个PCB,结构上看,进程由程序段、数据段、PCB组成