进程知识概览
进程知识概览
概念
进程是操作系统为了提高系统的并发处理能力,为了解决可以“同时”运行多个程序且为了对并发执行的程序加以描述和控制而提出来的。
进程并发执行时的特征
- 间断性(宏观“同时”,微观间断性执行)
- 失去封闭性(一个资源可能会有多个进程“同时”访问)
- 不可再现性(失去了封闭性,从而导致失去了可再现性)
进程的特征
-
结构特征
通常的程序是不能并发执行的,为使程序(含数据)可以能够独立运行,应为之配置——进程控制块(PCB,Process Control Block),而由程序段、相关的数据段和PCB三部分便构成了进程实体。
许多情况下所说的进程实际上是指进程实体。例如,创建进程实质上是创建进程实体中的PCB,而撤销进程实质上是撤销进程的PCB
-
动态性
进程的实质是进程实体的一次执行过程,动态性是进程的最基本的特征,动态性还表现在:“它由创建而产生,由调度而执行,由撤销而消亡”。
-
并发性
这是指多个进程实体同时存在于内存中,且能在一段时间内同时运行,并发性是进程的重要特征,同时也成为 OS 的重要特征。
引入进程的目的也正是为了使其进程实体能和其它进程实体并发执行,而只有程序(没有PCB)是不能并发执行的。
-
独立性
进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。未建立 PCB 的程序都不能作为一个独立的单位参与运行。
-
异步性
进程按各自独立的、不可预知的速度向前推进或者说进程实体按异步方式运行。
进程的创建和终止
-
进程的创建
- 申请空白 PCB,为新的进程申请唯一标识符,并从PCB集合中索取一个空白PCB
- 为新进程分配资源
- 初始化进程控制块
- 把新进程转入就绪状态并插入就绪队列中
-
终止
- 根据被终止的进程的唯一标识符,从PCB集合中检索该进程的PCB,从中读取进程状态
- 若被终止进程正处于执行状态,应立即终止该进程的执行,并设置调度标志为真,用于指示该进程被终止后应重新进行调度。
- 若该进程还有子孙进程,还应将所有子孙进程予以终止,以防他们成为不可控的进程
- 将被终止进程所拥有的全部资源,或者归还给其父进程或者归还给系统
- 将被终止进程PCB从所在队列(或链表)中移除
进程控制块
-
进程控制块的作用
为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB,Process Control Block)它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。
PCB的作用是使得一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
-
进程控制块中的信息
-
进程标识符
- 内部标识符(OS内部用的进程的一个唯一标识符)
- 外部标识符(由创建者提供,通常是由字母、数字组成,往往是由用户(进程)访问该进程时使用。
-
处理机状态
处理机状态信息主要是由处理机的各种寄存器中的内容组成的。处理机在运行时,许多信息保存在寄存器中,当处理机被中断时,所有这些信息都必须保存在PCB中以便在进程重新执行时,能够从断点继续执行。
这些寄存器包括:
- 通用寄存器(用户程序可以访问、用于暂存信息)
- 指令寄存器(存放要访问的下一条指令的地址)
- 程序状态字PSW(状态信息如条件码、执行方式、中断屏蔽标志等)
- 用户栈指针(每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址)
-
进程调度信息
在 PCB 中还存放一些与进程调度和进程对换的有关信息:
- 进程状态(当前进程的状态,作为进程调度和对换的依据)
- 进程优先级
- 进程调度所需的其它信息(进程已等待CPU时间等)
- 事件(阻塞原因)
-
进程控制信息
进程控制信息包括:
- 程序和数据地址
- 进程同步和通信机制(实现进程同步和进程间通信的必须机制,如消息队列指针、信号量等,他们可能全部或部分放在PCB中)
- 资源清单(除CPU外的进程所需的资源以及已经分配到该进程的资源)
- 链接指针(本进程所在队列的下一个进程的PCB的首地址)
-
-
进程控制块的组织方式
在一个系统中通常可拥有数十个、数百个乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式将这些PCB组织起来。目前常用的组织方式有两种:
- 链接方式(把具有同一状态的PCB,用七张的链接字链接成一个队列)
- 索引方式(根据进程的状态建立几张索引表,如就绪索引表、阻塞索引表等)
进程同步
同步机制应遵循的规则
- 空闲让进(临界资源处于空闲状态时,应允许访问的进程进入临界区以有效利用临界资源)
- 忙则等待(当已有进程进入临界区表明临界资源正在被访问,因而其它试图进入临界区的进程必须等待以保证对临界资源的互斥访问)
- 有限等待(对要求访问临界资源的进程,应保证有限时间内能进入自己的临界区以免陷入“死等”状态)
- 让权等待(不能进入自己的临界区时,应立即释放处理机以免陷入“忙等”状态)
信号量机制
信号量是由荷兰学者 Dijkstra 提出的一种卓有成效的进程同步工具。
基本思想是把资源作为信号,信号量代表了可分配的资源数量,每申请一次资源会分配一个信号量直至分配不出来等待信号的释放。
- 整型信号量
- 记录型信号量
- AND 型信号量
- 信号量集
进程通信
进程通信的类型
- 共享存储器系统
- 消息传递系统
- 管道通信(用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件)
消息传递通信的实现方法
-
直接通信方式
直接发送消息给对应的接收者
Send(Recevier, message); Receive(Sender, message);
-
间接通信方式
发送消息给一个中间实体(信箱),消息在信箱中可以安全地保存,只允许指定的目标用户读取,
Send(mailbox, message); Receive(mailbox, message);