第二章:进程的描述与控制(1)
进程的引入:
为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,引入“进程”
2.1 进程的基本概念
2.1.1. 程序顺序执行及其特征
-
特征
- 顺序性
- 封闭性
- 可再现性
-
前驱图
2.1.2. 程序的并发执行及其特征
-
特征
- 间断性
- 失去封闭性
- 不可再现性
2.1.3. 进程的特征与状态
1. 进程的定义
- 进程是程序的一次执行
- 进程是可以其他计算并发执行的计算
- 进程是一个程序及其数据在处理器上顺序执行时发生的活动
- 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位
- 进程是进程实体的一次活动
2. 确切定义
- 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动
3. 进程的5个特征
-
动态性
-
并发性
- 指不同进程的动作在时间上可以重叠,即系统内的多个进程是可以并发执行的
-
独立性
-
异步性
- 指进程按各自独立、不可预知的速度向前推进
-
结构特性
- 每个进程由程序段、数据段和一个PCB三部分组成
4. 进程与程序的区别
- 进程是程序处理数据的过程,而程序是一组指令的有序集合
- 进程具有动态性、并发性、独立性、异步性
- 进程结构中包含程序
5. 进程的基本状态及其转换
进程的三种基本状态及其他状态
-
就绪状态
- 已经分配到除CPU以外的所有必要资源
-
执行状态
- 进程获得处理器,其程序在处理器上执行
-
阻塞状态
- 正在执行的进程,由于等待某事件发生而无法执行时,便放弃处理器处于暂停状态
-
*新建状态
-
*终止状态
6. 挂起状态
-
暂时缓和内存的紧张状态,调节系统负荷
-
暂时挂起一部分进程,把它们临时换出到辅存,使它们暂时和系统脱离联系
-
就绪状态可以分为
-
活动就绪状态
-
静止就绪状态
- 被挂起的就绪状态
-
活动阻塞状态
-
静止阻塞状态
-
7. 进程控制块PCB
PCB是进程存在的唯一标志
PCB中存放着操作系统所需的用于描述进程当前情况及控制进程运行的全部信息.
(1) PCB中的作用
-
标识进程的存在
- 系统创建进程时,就为创建一个PCB;进程结束时,系统回收其PCB,进程便随之消亡
-
为系统提供可并发执行的独立单位
- PCB使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程,没有为之建立PCB的程序是不能并发执行的。
-
为系统控制和管理进程提供所需的一切信息
(2) PCB中的信息
-
进程标识符
-
处理器状态
- 通用寄存器、指令计数器、PSW,用户栈指针
-
进程调度信息
- 进程现行状态、进程优先级、与进程有关的其他信息、事件即阻塞的原因
-
进程控制信息
- 进程相应的程序和数据地址,进程同步与通信机制,进程资源清单,进程所在PCB的链接字
(3) PCB组织方式
-
把具有相同状态的若干个进程按照某种原则适当组织在一起的一种形式
-
链接方式
- 系统按照进程状态将进程的PCB组成队列,将同一状态的PCB用链接字链接成一个队列,从而形成就绪队列、阻塞队列、运行队列
- 执行进程指针、就绪队列队头指针、阻塞进程队列头指针、空闲PCB队列头指针
-
索引方式
- 系统按照进程的状态分别建立就绪索引表,阻塞索引表等.
- 执行指针、就绪表指针、阻塞表指针、就绪索引表、阻塞索引表
-
线性表方式
- 不论进程状态如何,将所有的PCB连续的放在内存的系统区。这样的方式只用于系统数进程数目不多的情况
2.2 进程控制
进程一般是由OS的内核来实现的
2.2.1 原语操作
1. 原语
- 由若干条指令构成
- 用于完成特定功能的一个过程
- 为了保证操作的正确性,原语在执行期间不允许分割,也就是说,原语的执行不能被中断。
2. 原子操作
-
一个操作的所有动作
-
要么全做,要么全部不做,原子操作是不可分割的,在管态下执行,常驻内存
-
管态(特权态)
- CPU在管态下可以执行指令系统全集。通常操作系统在管态下运行
-
目态(用户态)
- 机器处于目态时,程序只能执行非特权状态
-
3. 原语的作用
- 原语的作用是为了实现进程的通信和控制,系统对进程的控制如果不使用原语,就会造成其状态的不确定性,从而达不到进程控制的目的
4. 进程控制原语
(1)进程创建原语Create()
-
引起创建进程的事件
- 用户登录
- 作业调度
- 提供服务
- 应用请求
-
主要步骤
- 申请空白PCB
- 为新进程分配资源
- 初始化PCB内容
- 将进程插入就绪队列
(2)进程创建原语Terminate()
-
引起撤销进程的事件
- 正常结束
- 异常结束
- 外界干扰
-
进程撤销的过程
- 检索进程当前的状态,结束并调度标志,撤销其所有的子进程,归还资源,移除队列
-
应由父进程调用进程撤销原语来撤销,以便及时释放其所占的资源
(3)进程阻塞原语Block()
-
引起阻塞的事件
- 请求系统服务
- 启动某种操作
- 新数据尚未到达
-
步骤
- 发现阻塞事件,调用阻塞原语把自己阻塞,停止进程的执行,修改PCB状态信息,将其插入阻塞队列、最后转调度程序,将处理器分配给另一个就绪进程
-
进程的阻塞是进程自身的一种主动行为
(4)进程唤醒原语Wakeup()
-
引起唤醒的事件
- 当被阻塞进程所期待的事件出现时,或者所期待的数据已经到达,由该有关进程调用进程唤醒原语,将等待该资源而被阻塞的进程唤醒成……
-
唤醒过程
- 把阻塞进程从等待该事件的阻塞队列中移除,将其PCB的现行状态,由阻塞改为就绪,再将该进程插入到PCB就绪队列中.
(5)挂起原语Suspend()
- 用户进程请求将自己挂起或者当父进程请求将自己的某个子进程挂起时,系统利用挂起原语suspend()将制定的进程或处于阻塞进程挂起
(6)激活原语Active()
- 将进程从外存调入内存,检查该进程状态,改为响应的活动状态
2.3 进程同步
多道程序设计带来的问题:
并发执行的多个进程可能产生互斥或同步的相互制约关系,不采取措施,可能导致结果的不可再现性。影响系统的效率,而且导致系统奔溃
2.3.1 进程同步的基本概念
多道程序系统中存在许多进程,这些进程间存在以下两种关系:
关系一:资源共享关系
- 互斥的访问临界资源(CPU和I/O设备)
关系二:相互合作关系
- 输入进程、计算进程、打印进程三者之间就是相互合作关系
一、同步的定义
-
指的是两个或者多个进程为了合作完成同一个任务,在执行速度或某些个确定的时序点上必须相互协调,即一个进程的执行依赖于另一个进程–其合作伙伴的消息,当一个进程到达了某一确定点而没有得到合作伙伴发来的“已完成某些操作”的消息时必须等待,直到该消息到达被唤醒后,才能继续向前推进。
- 合作制约关系(直接制约关系)
-
补充
-
直接制约关系
- 进程间的相互联系是有意识的安排的,直接作用只发生在相交进程之间
-
间接制约关系
- 进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间
-
二、互斥的定义
指对某个系统资源,一个程序正在使用它,另一个想用的进程就必须等待,而不能同时使用。—间接制约关系(由被共享资源的使用性质所决定)
三、临界资源和临界区
-
临界资源----只能互斥的访问的资源为临界资源(一次仅允许一个进程使用的资源),临界资源是不可剥夺性资源
-
临界区-----进程中访问临界资源的那段程序代码
-
临界区的使用原则
- 空则让进
- 忙则等待
- 等则有限
- 等则让权
进程同步和互斥之间的关系
-
相似处
- 进程的互斥实际上时进程同步的一种特殊情况,进程的互斥和同步统称为进程同步
-
差别
- 进程互斥是进程间共享资源的使用权,这种竞争没有固定的必然联系,哪个进程竞争到使用权就归哪个进程,直到不用时进行归还;
- 进程同步则涉及共享资源的并发进程间有一种必然的联系,当进程必须同步时,即使无进程在使用共享资源时,那么尚未得到同步消息的进程也不能去使用这个资源.
2.3.2 信号量机制
-
两个操作原语
- P操作
- V操作
-
信号量机制的基本原理
-
两个或多个进程可以利用彼此间收发的简单信号来实现“正确的”并发执行,一个进程在收到一个指定信号前,会迫使在一个确定的或者需要的地方停下来,从而保持同步或互斥。
-
一、信号量的概念
-
数据类型(S, Q)
-
S 为整形分量,信号量的值
-
S>0
- 表示某类资源的数目,或者说表示可以执行P操作而不会阻塞的进程的数目
-
S<0
- 其S的绝对值表示信号量S的阻塞队列中的进程数,即系统中因请求该类资源而被阻塞的进程的数目,亦使信号灯挡住的进程的数目,这些进程需要别的进程发出相应的信号灯来唤醒
-
注:S的值只能靠P, V操作来改变
-
-
Q 指向PCB等待队列的指针
-
-
-
二、P ,V操作原语
-
P操作意味着请求一个资源,在一定条件下,P操作代表挂起进程的操作
-
P(S)—等待信号
- S-1
- 若S>=0, 调用P(S) 的进程返回,继续执行
- 若S<0, 调用进程调用阻塞原语Block(Q) , 将进程插入到阻塞队列Q当中
-
-
V操作意味着释放一个资源,在一定条件下,V操作代表唤醒被挂起进程的操作
-
V(S)—发送信号
- S+1
- S > 0调用V(S) 的进程继续执行,返回
- S<=0 调用进程唤醒原语WakeUp(Q), 将把信号量S的阻塞队列Q中的队首进程移除并唤醒,fanhui
-
-
原语操作不允许中断
-
-
三、用P , V原语实现进程互斥
-
四、用P, V操作实现进程的同步
-
2.3.3 常见的进程同步的问题
-
- 生产者消费者问题
-
- 哲学家就餐问题
-
- 读者–写着问题
-
- 睡眠理发师问题