【程序的顺序执行与并发执行】
一个应用程序由若干程序段组成,每一程序段完成特定的功能,他们在执行时,都要按照某种先后次序执行,仅当前一程序段执行完后,再运行后一程序段,这种执行过程被称为程序的顺序执行
程序顺序执行时,具有以下三个特征:
- 顺序性:处理机的操作严格按程序规定顺序执行
- 封闭性:程序一旦开始执行,其计算结果不受外界因素影响
- 可再现性:程序执行只要初始条件一样,不论如何停顿,重复执行多少次结果都一样
程序顺序执行时,虽然减少了开发周期,但系统资源的利用率却很低,为此,在系统中引入了多道程序技术,使得程序或程序段间能并发执行
事实上,并非所有的程序都能并非执行,只有不存在前趋关系的程序之间才可能并发执行
程序并发执行时,具有以下三个特征:
- 间断性:在执行过程中,由于要共享资源与相互合作,使得这些并发的程序间形成了相互制约的关系,从而导致了 “ 执行 — 暂停 — 执行 ” 这种间断性的活动规律
- 失去封闭性:由于共享资源,资源状态由多道程序改变,程序运行失去了封闭性,即程序运行受其他程序的影响
- 结果不可再现性:结果的不确定,使得程序执行将没有任何意义
【进程】
进程的概念
在多道程序环境下,程序的执行属于并发执行,此时它们失去其封闭性,并具有间断性,而且其运行结果具有不可再现性,由此,通常的程序是不能参与并发执行的
为了使参与并发执行的每个程序都能独立地运行,在操作系统中引入了进程(Process)的概念,以便更好地描述和控制程序的并发执行
为了使参与并发执行的程序与数据能够的独立运行,必须为之配置一专门的数据结构——进程控制块(Process Control Block,PCB)
系统利用 PCB 来描述进程的基本情况和活动过程,进而控制、管理进程,这样由程序段、相关数据、PCB 三部分就组成了进程实体
在一般情况下,会将进程实体称为进程,但实际上,进程是进程实体的运行过程,是系统进行资源分配和调度的独立单位
所谓创建进程,实质上是创建进程实体中的 PCB,撤销进程,实质上是撤销进程的 PCB
进程的特征
进程和程序是两个不同的结构,简单来说,程序=程序段+数据,进程=程序段+数据+PCB,除了构成不同外,进程还具有以下特征:
- 动态性:进程实质是进程实体的执行过程,其有一定的生命期
- 并发性:多个进程实体同存于内存中,且能在一段时间内同时执行
- 独立性:进程实体是一个能独立运行、独立获得资源、独立接受调度的基本单位
- 异步性:进程是按异步方式运行的,会产生不可再现性(为保证结果可再现,引入了进程同步机制)
- 结构性:每个进程都配备一个 PCB 对其进行描述,从结构上来看,进程实体是由程序段、数据段、进程控制段三部分组成的
【进程控制块】
在 OS 中,每个资源、进程都设置了一个数据结构,用于表征其实体,称为资源信息表,其中包含了资源或进程的标识、描述、状态等信息以及一批指针,通过指针,可以将同类资源或进程的信息表链接成不同的队列,以便系统进行查找
OS 管理的这些数据结构一般分为四类:内存表、设备表、文件表、进程表,其中,进程表即进程控制块(PCB)
PCB 作为进程实体的一部分,记录了 OS 所需的、用于描述进程当前情况的、管理进程运行的全部信息,是进程存在的唯一标志
组成
在 PCB 中,主要包含四类信息:
- 进程描述信息:由标识进程归属用户的用户标识符(UID)和唯一标识进程的进程标识符(PID)组成
- 处理机状态信息:处理机中各寄存器中的内容
- 资源分配信息:说明内存空间、虚址空间使用状况、I/O 设备信息等
- 进程控制与管理信息:进程控制所必须的信息,包含进程当前状态、优先级等
组织方式
在系统运行过程中,有若干 PCB,他们常驻 PCB 区,为有效的进行管理,常采用适当的数据结构将他们组织起来
目前常用的组织方式有三种:
- 线性方式:组织在一张线性表中,实现简单、开销小,适用于进程数不多的系统
- 链式方式:将具相同状态进程的 PCB 分别通过 PCB 中的链接字链接成一个队列,以形成就绪队列、若干阻塞队列、空白队列等
- 索引方式:根据所有进程状态的不同,建立若干张索引表