进程的基本概念
- 程序在并发环境中的执行过程。
- 进程是进程实体的运行过程,是系统进行
资源分配
和调度
的基本单位。
程序顺序执行的特征
- 顺序性:
处理机
的操作严格按照程序所规定的顺序执行,即每一个操作必须在下一个操作之前结束。 - 封闭性: 程序在封闭环境下执行,结果不受外界因素影响。
- 可在现性: 只要环境和初始条件相同,程序重复执行时总得到相同的结果。
程序并发执行的特征
- 间断性: 共享、合作、制约导致:执行-暂停-执行
- 失去封闭性: 资源状态由多程序该变
- 不可再现性: 相同环境和初始条件。
进程的特征
-
结构特征
-
进程控制块
- PCB是OS中最重要的记录型结构。
- OS用PCB对并发进程进行管理和控制。
- PCB是进程存在的唯一标志。
- PCB常驻内存。
- OS专门开辟PCB区将所有的PCK组织成若干个链表或队列。
-
PCB中的信息
- 1.进程标识符
- a.内部标识符:进程唯一的数字编号,给 OS 使用
- b.外部标识符:由字母、数字组成,给用户使用。
- 2.处理机状态
- 处理机中的主要的寄存器
- 1.通过寄存器
8-32个
,暂存信息用。 - 2.指令计数器 要访问的下一条指令地址。
- 3.程序状态字
PSW
条件码、执行方式、中断屏蔽标志。 - 4.用户栈指针,用户进程拥有的系统栈,存放过程和系统调用参数及调用地址。
- 1.通过寄存器
- 处理机中的主要的寄存器
- 3.进程调度信息
- 进程状态
- 进程优先级
- 与调度算法有关信息
- 事件 如阻塞原因
- 4.进程控制信息
- 程序和数据地址
- 进程同步和通信机制
- 资源清单: 除CPU之外的所需资源与已经分配资源清单。
- 连接指针:本进程PCB所在队列的下一个地址。
- 1.进程标识符
-
PCB的组织方式
-
a.链接方式: 把统一状态的PCB,用其中的连接字链接成一个队列。如:就绪队列、阻塞队列(根据不同阻塞原因)、空白队列。
指针就是地址,每个地址后面的数字代表PCB的标号。
-
b.索引方式: 建立就绪索引表、阻塞索引表等。把索引表在内存的首地址放在内存的专用单元中。
c.线性方式
-
-
-
动态性
- 进程最基本的特征是
动态性
- 进程的生命周期:进程由创建而产生,由调度而执行,由撤销而消亡的过程。
- 进程最基本的特征是
并发性: 多个进程同在内存中,且能在一段时间内同时运行。
独立性: 进程是一个能独立运行、独立分配资源、独立接受调度的基本单位。
异步性: 进程按各自独立的、不可预知的速度向前推进。
进程和程序的关系(非常重要)
1.进程是一个动态概念,程序是一个静态概念。
2.进程具有并发特征,程序没有(程序全部是顺序的)。
3.进程是竞争资源的基本单位。
4.一个程序对应多个进程,一个进程为多个程序服务。
进程的三种基本状态
-
1.就绪状态
- 进程已经分配了除了
处理机
以外的所有必要资源,只要再获得处理机就能够执行的状态。 - 这样的进程可能有多个,通常排成一个队列,称
就绪队列
。 - 新产生的进程都是就绪状态。
- 进程已经分配了除了
-
2.执行状态
- 已经获得CPU,正在运行。
- 在
单处理机系统
只有一个进程
处于执行状态。多处理机系统
则有多个
处于执行状态。 - 例如: 在一个拥有5个处理机的计算机系统中,最多有几个进程处于执行状态。 答案是5个。
-
3.堵塞状态
- 正在执行的进程由于发生某事件而暂时无法继续执行时,放弃处理机而进入的状态,又称等待状态(堵塞状态)
- 引起堵塞的事件:请求I/O,申请缓存。
- 所有进入堵塞状态的进程都是自愿的。
进程的基本状态转换
三种状态四种转换
挂起状态
挂起状态是三种基本状态细分出来。
-
引入原因:
- 1.终端用户请求
- 2.父进程请求
- 3.负荷调节需求
- 4.操作系统的需
-
挂起状态的转换
- 挂起状态 === 静止状态
- 非挂起状态 === 活动状态
- 有挂起状态的进程状态图
进程的创建
-
原语CREAT() 按下述步骤创建一个新进程:
- 1.申请空白PCB
- 2.为新进程分配资源
- 3.初始化进程控制块
- 4.将新进程插入就绪队列
什么是原语
原语 是一段机器指令(程序)构成。执行原子性操作(要么执行完毕,要么不执行)。
进程管理中最基本功能是
进程控制
进程控制任务: 进程的创建、终止、进程状态的转变等。
进程控制一般由
OS内核
来实现。-
引起创建进程的事件
-
引起进程终止的事件
-
进程的终止过程
- 从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
- 若处于执行状态,终止该进程的执行,并置调度标志为真,重新调度。
- 若有子孙进程,将所有子孙进程终止。
- 将进程全部资源归还其父进程或系统。
- 将其PCB从所在队列(或链表)中移出
-
引起阻塞和唤醒的事件
- 1.请求系统服务
- 2.启动某种操作
- 3.新数据尚到
- 4.无新工作可做
-
由阻塞原语BLOCK完成
-
由唤醒原语WAKEUP完成
-
注意
- BLOCK和WAKEUP是一队作用相反的原语。
- 如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中,安排唤醒原语,以能唤醒阻塞进程;否则,被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无机会继续运行。
PCB的初始化
- 1.初始化标识信息
- 2.初始化处理机状态信息
- 3.初始化处理机控制信息
进程的挂起
挂起原语:SUSPEND()
挂起原语的执行过程:
检查被挂起进程的状态,若处于活动`就绪状态`,改为`静止就绪`;若处于`活动阻塞状态`,则改为`静止阻塞`;若`正在执行`,则转向`调度程序`重新调度
有挂起状态的进程状态图
进程的激活状态图
进程的两种制约关系