一、进程的概念
在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程(Process)的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。
PCB(Process Control Block)是进程的唯一标志,系统利用PCB来描述进程的基本情况和运行状态(PCB常驻内存,系统可在任一时刻存取),进而控制和管理进程。相应地,由程序段、相关数据段和PCB三部分构成了进程映像(进程实体)。创建和撤销进程,实质上是创建和撤销进程映像中的PCB;进程映像是静态的,进程则是动态的。
在没有引入线程的系统中,进程是系统资源分配和系统调度的独立单位。
二、进程的特征
进程是由多程序的并发执行而引出的,它和程序是两个截然不同的概念。进程相对于程序的的基本特征如下:
-
动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征。
-
并发性:指多个进程实体,同存于内存中,能在一段时间内同时运行,并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。
-
独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。
-
异步性:由于进程的相互制约,使进程具有执行的间断性,即进程按各自独立的、 不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此,在操作系统中必须配置相应的进程同步机制。
-
结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制段三部分组成的。
三、进程的状态转换
进程在执行时的间断性决定了进程具有多中状态。通常进程有五种状态,前三种是进程的基本状态:
-
1)就绪状态
进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。 -
2)运行状态
进程正在处理机上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态 -
3)阻塞状态
又称等待状态。正在执行的进程由于等待某一事件的发生而暂停运行,导致等待的事件有:请求I/O,申请缓冲空间等。 -
4)创建状态
创建一个进程通常有两步骤:申请PCB,填写必要的管理信息;其次,把进程转入就绪状态并插入就绪队列之中。当进程拥有了PCB,但主存等资源尚未分配,进程此时不能调度执行,处于创建状态。创建状态的引入,增加了系统的灵活性:系统可以根据性能和主存容量限制,推迟提交创建的进程。 -
5)终止状态
又称结束状态。进程的终止同样分为两个步骤,首先系统进行资源回收,然后将进程PCB清零。当一个进程自然结束、遇到无法克服的错误、被操作系统终止或被其他有权限的进程所终结时,它将进入终止状态。
在一些系统中,增加了挂起状态,引入挂起的原因如下:
-
1)终端用户请求
终端用户在进程运行期间发现可疑问题时,有暂停进程,观察分析的需求。 -
2)父进程请求
有时父进程希望挂起某个子进程,以便考察和修改子进程。 -
3)负荷调节需要
当实时系统中的工作负荷较重,可能影响到实时任务的交付时,可疑把一些不重要的进程挂起,以保证系统正常运行。 -
4)操作系统需要
操作系统有时希望挂起某些进程,以便检查器运行中的资源使用情况,以做记录。
四、进程的组织
PCB
PCB的结构如下:
下面对PCB的各部分做简要说明:
-
1)进程描述信息
进程标识符:标识各个进程,每个进程都拥有唯一的标识号。
用户标识符:进程归属的用户,用户标识符主要为共享和保护服务。 -
2)进程控制和管理信息(调度信息)
进程当前状态:描述进程的状态信息,作为处理机分配的依据
进程优先级:描述进程抢占处理机的优先级
事件:进程由执行状态变为阻塞状态所等待的事件,阻塞原因。
进程调度需要的其他相关信息:如CPU时间总和、已执行时间总和等 -
3)资源分配清单
用于说明有关内存地址空间或者虚拟地址空间的状况、所打开文件的列表和所使用的I/O设备等信息。 -
4)处理机相关信息
主要指处理机中各寄存器值,当前进程被切换时,处理机状态信息都保存在相应的PCB中,以便在该进程重新执行时,能从断点继续执行。这些寄存器包括:通用寄存器(又称为用户可视寄存器,用户可以访问)、指令寄存器(用于保存当前正在执行的一条指令)、程序状态字PSW(含有状态信息,执行方式、中断屏蔽等标识)以及用户栈指针。
PCB的组织
在一个系统中,通常存在这许多进程,有的处于就绪状态,有的出于阻塞状态,而阻塞的原因各不相同。为方便进程的调度和管理,需要将各进程用适当的方式组织起来。目前常用的组织方式有链接方式和索引方式两种:
-
** 1)链接方式**
链接方式将同一状态的PCB链成一个队列,不同状态对应不同的队列,也可以把阻塞的进程PCB根据不同的阻塞原因,排在不同的队列中。同一队列内部按照优先级进行排序。 -
2)索引方式
索引方式是将同一状态的进程组织在一个索引表中,索引表的表项指向相应的PCB,不同状态对应不同的索引表,如就绪索引表和阻塞索引表。
程序段
程序段即为程序代码段,其可以被多个进程所共享。多个进程可以运行同一个程序。
数据段
一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。
网友评论