一 : 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
操作系统ppt 操作系统PPT
二 : 操作系统PPT
进程管理(一)
Process Management
1
? 处理机管理是操作系统的基本管理功能之一,它所关 心的是处理机的分配问题。也就是说把CPU(中央处 理机)的使用权分给某个程序。 ? 通常把正准备进入内存的程序称为作业,当这个作 业进入内存后我们把它称为进程。处理机管理分为 作业管理和进程管理两个阶段去实现处理机的分配, 常常又把直接实行处理机时间分配的进程调度工作 作为处理机管理的主要内容。 ? 进程管理的主要功能是把处理机分配给进程以及协调 各个进程之间的相互关系。它是由进程调度程序和进 程控制(控制进程状态转换)程序这两部分内容组成 的。
2
提
一
二 三
纲
进程的概念
进程的控制 进程互斥与同步
四
3
一 进程的概念
1
进程的引入
2
进程的定义和特征
3
进程的状态及转换
4
进程的描述
4
1.进程的引入
1.1前趋图的定义 1前趋图的定义
1.2程序顺序执行
1.3程序并发执行
5
1.1前趋图的定义
前趋图是一个有向无循环图(DAG)。结点表示一条语句、一 个程序段或进程。结点间的有向边则表示在两结点间存在的偏 序或前趋关系。前趋、后继、初始结点、终止结点、重量。 (注:在前趋图中必不能存在循环)
2 5 1 4
Fig2-2 前趋图示例
6
3 6
7
1.2程序的顺序执行
顺序是指程序执行时,仅当前一操作完成后,才 能执行后继操作。
I1
?
C1
P1
I2
C2
P2
特点:
? ?
顺序性 封闭性(运行时独占资源,与外 界封闭)
?
可再现性
7
1.2程序的顺序执行
?三种:
? ?
指令顺序执行
段内跳转:循环
?段间跳转:过程调用
8
1.2程序的顺序执行
图例:两种作用顺序执行过程,如图所示:
可见,多个此类作业是可以并发执行的。
9
1.3程序并发执行
1. 引入:以两个作业并发执行如图
10
1.3程序并发执行
2. 思想:以输入、计算、打印三个操作为例:对于某 一作业的三个操作必存在顺序关系,但多个作业之 间并不一定。其前趋图如下:
I1 I2 I3 I4
C1
C2
C3
C4
P1
P2
P3
P4
可见,多个此类作业是可以并发执行的。
11
1.3程序并发执行
3 特征:
?
间断性:因为共享资源,程序在执行时可能会走 走停停。执行—暂停执行—执行) 失去封闭性:多个程序共享系统中的各种资源因 而这些程序都可改变系统资源的状态);
不可再现性:程序经过多次执行,即使环境初始 条件相同,但结果可能不相同.
?
?
12
1.3程序并发执行
4.例子: 例:有程序
A:N=N+1 ; B: print(N); N=0 ;
设某一时刻N的初值为n,则:
若:N=N+1;PRINT(N); N=0 ; 结果为:n+1 若:PRINT(N);N=N+1;N=0 ; 结果为:n 结果为:n n+1 0 1 0 若:PRINT(N);N=0;N=N+1 ;
1
3
n+1 0
2.进程的定义和特征
2.1 引入进程的目的
2.2进程的定义
2.3进程的特征
2.4与程序的区别
2.5进程的类别及特性
14
2.1引入进程的目的
“任务”和“任务的执行”截然不同。前者是任务 的静态描述,后者体现了任务的动态行为。静态描述和 动态行为之间不存在一一对应关系。 例:同一段正文(2kB),分别加工两批(8kB,4kB) 不同的数据,执行两次。第1次执行用打印机报告某些 出错信息,占用10kB内存;第2次执行中无出错数据, 不用打印机,但至少需要6kB主存。
15
2.2进程的定义
进程:进程是进程实体的运行过程,是系统
进行资源分配和调度的一个基本单位。
?一个任务的一次执行对应一个进程。
16
2.3进程的特征
动态性
1
并发性
2
进程特征
5
结构特征
独立性
3
4
异步性
17
2.3进程的特征
1)动态性:进程最基本的特征。进程由创建产生; 由调
度执行;得不到资源而暂停;由撤消而消亡。进程是有一 定生命周期的。程序是指一组有序指令集合,是一个静态 的实体。 2)并发性:一段时间内,多个进程实体在内存中可同时 运行。引入进程的目的就是为了能并发。程序不能并发。 3)独立性:进程实体是一个能独立运行、独立获得资源、 独立调度的基本单位。程序不能做为一个独立单位。 4)异步性:进程是按各自独立、不可预知的速度前进, 该特性将导致程序执行的不可再现性。因此OS中必须采取 某种措施保证协调运行。
18
2.3进程的特征
5)结构特征:为能正确的执行并发,为每一个进程配置 了一个数据结构,称为进程控制块(PCB)。则一个进程 实体就由数据段、程序段、PCB等构成。
? 进程实体 = 数据段+程序段+PCB+栈
PCB 栈 PC B 程 序 数 据
进程的结构
? 程序和进程不一定具有一一对应的关系。
19
2.4 与程序的区别
如何理解进程概念?进程与程序有何差别?
主妇
程序
阅读菜谱
输入 运行
阅读洗衣机手册
程序
准备原料
准备衣服、洗衣粉
输入 运行
分时切换
烹制菜肴 设定参数,洗衣服
输出
饭菜
干净衣服
输出
做饭进程
洗衣进程
20
2.4与程序的区别
1、程序是指令的集有序集合,是静态的概念。 进程是程
序在处理机上的一次执行的过程,是动态的概念。程序可 以作为软件资料长期保存。进程是有生命周期的。 2、进程是一个独立的运行单位,能与其它进程并行(并 发)活动。而程序则不是。 3、进程是竞争计算机系统有限资源的基本单位,也是进 行处理机调度的基本单位。
4、一个程序可以作为多个进程的运行程序,一个进程也 可以运行多个程序。
21
2.4与程序的区别
22
2.5 进程的
类型与区别
进程的类型
? 在系统中同时有多个进程存在,但归纳起来 有两大类: ? 1、系统进程 执行操作系统核心代码的进程。 系统进程起着资源管理和控制的作用。 ? 2、用户进程 执行用户程序的进程。
23
2.5 进程的类型与区别
系统进程的特征
?
(1)系统进程是操作系统用来管理系统资源并
行活动的并发软件。 ? (2)系统进程之间的关系由操作系统自己负责。 ? (3)系统进程直接管理有关的软、硬设备的活 动。 ? (4)在进程调度中,系统进程的优先级高于用 户进程。
24
2.5 进程的类型与区别
系统进程与用户进程的区别:
? 1、系统进程被分配一个初始的资源集合,这些资源 可以为它独占,也能以最高优先权的资格使用。用 户进程通过系统服务请求的手段竞争使用系统资源; ? 2、用户进程不能直接做I/O操作,而系统进程可以 做显示的、直接的I/O操作。 ? 3、系统进程在管态下活动,而用户进程则在用户态 (目态)下活动。 ? 另一种分类:计算进程,I/O进程等 ? 注意:在UNIX系统中没有这样对进程进行分类。
25
3.进程的状态和转换
3.1 进程的基本状态
3.2进程的基本状态转换
3.3新状态和终止状态
3.4进程的挂起状态
26
3.1进程的基本状态
? 1. 三种基本状态:
?
就绪状态(Ready):
进程已分配到除CPU外的所有资源。只等CPU便 可运行。可有多个组成就绪队列。
?
执行状态(Running):
已获得CPU正在运行。在单处理机系统中只能 有一个。
?
阻塞状态(Blocked): 因发生某事件(如I/O、申请缓冲区等)而暂 停执行。(等待、睡眠)。可有多个此状态进 程组成一个或多个(由阻塞原因划分)阻塞队 列。
27
3.2基本状态转换
进程的基本状态转换
运行态 状态转换: 进程等待外 部事件,阻 塞
进程状态
中断 (时间片到)
OS决定由哪个进 程占用CPU,进 程调度
?
就绪态
阻塞态
进程就绪, 可以运行
中断(时间片到)
28
3.2基本状态转换
进程状态
? 运行态变为就绪态
强制终止某进程的运行(系统原因)
? 运行态变为阻塞态
运行进程等待外部事件发生(自身原因)
? 阻塞态变为就绪态
外部事件已经发生,可准备运行
? 就绪态变为运行态 停止其他进程运行后,运行该进程占用 CPU
29
3.2基本状态转换
进程状态
? 问题1:为什么不能从阻塞态变为运行态呢? ? 问题2:为什么不能从就绪态变为阻塞态呢? ? 三种状态的变换体现了OS的资源管理作用; ? 进程的核心思想在于运行——CPU资源的分 配。
30
3.2基本状态转换
? 注意: ? 进程从执行态到阻塞态是主动的。 ? 进程发现需要等待某一事件,主动
向系 统申请进入阻塞态。 ? 进程从阻塞态到就绪态是被动的。 ? 当系统(或其它进程)发现阻塞进程阻 塞的条件已释放,向系统申请将该进程 置为就绪态 。
31
3.3新状态和终止状态
1)新状态:指进程刚刚建立,还没有送入就绪队列。
2)终止状态:指进程已经结束(正常、异常),OS 已将它从就绪队列中移出,还未撤消。
新进程
进程调度 就绪 中断 (时间片到) 阻塞 增加新和终止状态 进程状态及其转换
32
终止
执行
3.4进程的挂起状态
? 1.什么是挂起状态:
? 将进程置于静止状态
? 正在执行的进程暂停执行
? 就绪的进程暂不接受调度 ? 阻塞的进程即使阻塞事件释放也不能继续执行
? 2.引入挂起状态的原因
? 人为:观察的需要
? 系统:检测的需要,调节系统负荷
33
3.4进程的挂起状态
3.状态的转换:
引入挂起状态后,原 状态称为 “活动”, 挂起后称为“静止”。
? ?
执行
挂
I/O
起
请
求
激活 活动 就绪 激活 挂起 静止 就绪
两种挂起状态: 静止就绪与静止 阻塞
? ?一般情况下,挂起
释 放
活动 阻塞
挂起
静止 阻塞
状态的进程将从内 存移到外存。
图 具有挂起状态的进程状态图
34
释
放
4.进程的描述
4.1 进程控制块的概念
4.2进程控制块的信息
4.3进程控制块的组织
35
4.1进程控制块的概念
1.进程控制块定义—( Process Control Block ,PCB)
?
PCB是纪录进程动态特性,运行控制等信息的数 据结构。 PCB的作用:使一个在多道程序环境下不能独 立运行的程序,成一个能独立运行的基本单位, 一个能与其它进程并发执行的进程。 PCB是进程存在的唯一标识。当系统或父进程创 建一个进程时,实际上就是为其建立一个进程控 制块。
36
?
?
4.1进程控制块的概念
2.进程控制块的内容
进程标识符
动态特性 运行控制
CPU现场(程序状态字、寄存器内容等) 进程状态
优先级 资源清单 通信机制(信箱或消息队列) 同步机制(信号量) 队列指针、家族关系 存储位置
37
4.1进程控制块的概念
3.进程控制块的作用
调度(查PCB的优 先级及现场状态) 执行(查PCB中处理机的 状态信息,恢复现场)
暂停(断点的处 理机环境保存)
执行中查数据、程序的 地址及与其他进程合作
?
PCB应常驻内存。
38
4.1进程控制块的概念
3.进程控制块的作用
? 为了有效的管理进程和资源,操作系统必须掌握每 一个进程和资源的当前状态。操作系统通常是通过 构造一组表来管理和维护进程和每一类资源的信息。 操作系统的控制表分为四类: ? 进程控制表 ? 存储控制表 ? I/O 控制表 ? 文件控制表
39
4.1进程控制块的概念
3.
进程控制块的作用
40
4.1进程控制块的概念
? ? ?
?
3.进程控制块的作用 进程控制表用来管理进程及其相关信息。 存储控制表用来管理一级(主)存储器和二 级(辅)存储器。 I/O 控制表用来管理计算机系统的I/O 设备 和通道。 文件控制表用来管理文件。
41
4.1进程控制块的概念
4.进程映像
? 当一个程序进入计算机的主存储器进行计算就构成 了进程,主存储器中的进程到底是如何组成的? ? 操作系统中把进程物理实体和支持进程运行的环境 合称为进程上下文(process context)。 ? 当系统调度新进程占有处理器时,新老进程随之发 生上下文切换,因此,进程的运行被认为是在进程 的上下文中执行的。
42
4.1进程控制块的概念
5.进程上下文组成
? 用户级上下文:由用户程序块、用户数
据块和用户堆栈组成的进程地址空间。 ?系统级上下文:包括进程的标识信息、 现场信息和控制信息,进程环境块,及 系统堆栈等组成的进程地址空间。 ?寄存器上下文:由PSW寄存器和各类控 制寄存器、地址寄存器、通用寄存器组 成。
43
4.1进程控制块的概念
6.进程有四个要素组成
?进程程序块 ?进程数据块 ?系统堆栈 ?用户堆栈
44
4.1进程控制块的概念
7.用户进程在虚拟内存中的组织
进程标识信息
进程 控制 块 进程现场信息 进程控制信息 用户堆栈 用户私有地址空间 (代码、数据)
共享地址空间
45
4.2进程控制块的信息
1)进程标识信息:用于唯一地标识一个进程。
? 外部标识符:用户,用字母、数字构成, 便于记忆。
? 内部标识符:系统,唯一整数,通常就是 进程的序号。 ?家族联系:还可根据需要设置父进程、子 进程、用户标识符。 2)处理机状态信息:存储处理机中各种寄存器的 内容。被中断时存储,再次运行时用于恢复现场。 也称为进程上下文可有通用寄存器、指令计数器、 程序状态字PSW、用户栈指针。
46
4.2进程控制块的信息
3)进程调度信息:与进程调度和进程对换有关的内 容。进程状态、进程优先级、事件、与调度算法有 关的其他信息。一般常包括进程已等待的时间和已 使用的处理器时间等 。
4)进程控制信息:程序数据的地址、进程同步和 通信机制(消息队列和信号量)、资源清单(除CPU 外进程所需的全部资源及已分配的资源)、链接指 针(本进程所在队列的下一个进程的PCB首址)。
47
4.3进程控制块的组织方式
在一个系统中,常常含有固定数目的PCB。对它们 要进行有效的组织与管理。 1)链接方式:相同状态的PCB链接成一个队列。 2)索引方式
1 2 4 10 15
48
4.3进程控制块的组织方式
49
4.3
进程控制块的组织方式
索引表
PCB表 就绪队列
PCB 1
PCB 2
PCB 3 PCB 4 PCB 5
等待队列 1
PCB 6
PCB 7 … PCB n
等待队列 2
50
二、进程控制
1
进程的控制概念
2
进程创建与撤销
3
进程的阻塞与唤醒
4
进程的挂起与激活
51
1.进程控制概念
1.1 进程控制作用
1.2进程控制机制
1.3进程控制与原语
52
1.1 进程控制的作用
? 进程是有生命周期的,产生、运行、暂停、终止。
对进程的这些操作叫进程控制。
? 进程控制的职责是对系统中全部进程实施有效的管
理,它是处理机管 理的部分(另一部分是进程调
度),当系统允许多进程并发执行时,为了实现共 享、协调并发进程的关系,处理机管理必须提供对 进程实行有效管理。
53
1.2 进程控制的机制
? 进程控制内容包括:
进程创建、进程撤销、进程阻塞、进程唤醒、进 程挂起、进程激活。
? 进程控制实现机制 这些操作都要对应地执行一个特殊的程序段(操 作系统核心程序),同时系统也通过系统调用给用 户提供进程控制的功能。教材上叫原语(一种特殊 的系统调用)。
54
1.2 进程控制的机制
55
1.3 进程控制的原语
定义:所谓原语,是机器指令的延伸,由若干条机 器指令组成,是一种特殊的系统调用命令,它可以完 成一个特定的功能一段系统程序。又称为原语操作。 操作:为保证操作的正确性,在许多机器中规定, 执行原语操作时,要屏蔽中断,以保证其操作的不可 分割性。 特征:它的功能由系统通过一段不可分割的操作指 令来完成。即一个操作中的所有动作要么全做,要么 全不做,原语操作具有原子性,它是不可再分的。 执行:原语在系统态下完成,在操作系统内核中常 驻内存,在操作系统中原语作为一个基本的单位出现
56
1.3 进程控制的原语
? 常用的原语 进程控制原语 进程通信原语 资源管理原语 其他原语 ? 常用的进程控制原语有: 创建原语 撤消原语 阻塞原语 唤醒原语等
57
2.进程的创建与撤销
2.1 进程创建
2.2进程撤销
58
2.1 进程创建
1.进程图
. 是用于描述进程家族关系
(创建关系)的有向树。结点 代表进程,边代表父子关系。 父进程、子进程、祖父进程、 祖先。
?子进程可以继承父进程所拥有的资源,但子进
进程图
程被撤消时,必须归还。
? 撤消父进程时,须先撤消其所有的子进程。 ? PCB中有家族关系表项,以标识自己的父、子
进程。
59
2.1 进程创建
2. 引起创建进程的事件:
? 用户登录(如分时系统中,合法用户进入,则
系统为之创建进程);
? 作业调度(如批处理系统中);
? 提供服务(运行中的用户程序提出某种请求,
则系统创建进程以
完成请求,如:打印文件);
? 应用请求(应用进程根据需要,为自己创建进
程)
60
2.1 进程创建
3.创建过程 ? 申请空白PCB ? 分配资源 ? 初始化PCB ? 插入就绪队列 进程创建实质上 是生成一个PCB 查空PCB表 有空PCB Y 取空表PCB[ i ] 将参数填入PCB[ i ] 将PCB[ i ]插入就绪队列
61
N 创建失败
2.1 进程创建
参数:进程 外部名 procedure Create(n,S。,k。,M。,R。,acc) begin ① i:=GetNewInternalName(n);调用查找进程名过程 ② Id(i):=n; 将n登记到第i个PCB的相应表目中 ② Priority(i):=k。; 向PCB中登记优先数 ④ Cpustate(i):=S。; 登记现场状态初始值S。 ⑤ MainStore(i):=M。;记入主存和资源的初始占有情况 ⑥ Resources(i):=R。; ⑦ Status(i):=’Readys’; 进程初始状态置为“就绪” ⑧ Parent(i):=*;调用本过程的父进程之内部标识号, 将它记入子进程PCB的父进程名这一栏 ⑨ Set Accounting Data; 在PCB中建立记账信息 ⑩ Insert(RL,i); 调用Insert,把i插入到就绪队列
62
3.创建函数
2.1 进程创建
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #include <unistd.h> #include <sys/types.h> #include <stdio.h> int main(int argc,char *argv[]) { int pid; pid = fork(); /* fork another process */ if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp( "/bin/ls", "ls",NULL); } else { /* parent process */ wait(NULL); /* parent will wait for the child to complete */ printf( "Child Complete" ); exit(0); } } 63
2.2 进程撤销
1 引发事件:
? 正常结束(有一条表示进程结束的指令) ? 异常结束(运行中出现错误或故障,如 越界错
误、保护错、特权指令错、算术运算错、I/O故障)
? 外界干预(应外界的请求而终止)
2 终止过程:由进程终止原语Destroy()完成。 功能:撤销指定进程的PCB,收回该进程拥有的全 部资源。
64
2.2 进程撤销
3.进程撤销的过程 ? 查找进程
?
查PCB表和进程家族 N
查找该进程的PCB
? 中止执行 出错处理 ? 终止子进程 该PCB有子进程? Y ? 归还资源 N ? 将PCB从所在队列移出 释放进程所占资源 ? 释放PCB 释放该PCB结构
65
有此PCB? Y
3.进程的阻塞与唤醒
3.1 引发事件
3.2进程阻塞过程
3.3进程唤醒过程
3.4两过程的关系
66
3.1 引发事件
1)请求系统服务未满足,则阻塞;当资源可以满 足时,由释放该资源的进程将阻塞进程唤醒; 2)启动某种操作,等待其完成。 3)新数据未到达。多进程合作时,本进程要用 的其它进程的结果尚未到来。 4)无新工作可做。某些系统进程,等待工作的 到达。
67
3.2进程阻塞过程及函数
由阻
塞原语Block()实现。正在执行的进程本身 调用Block,是一个主动的行为。 1)停止 2)改状态“执行”为“阻塞”,插入相应阻塞队 列 3)重新调度(进行切换,即保留现场,重设现场) BLOCK()
输入参数:无 返回:转进程调度 功能:将现行进程的PCB置成 “阻塞”状态后列入阻塞队列
68
3.3进程唤醒过程及函数
进程唤醒过程:由唤醒原语Wakeup()实现。由和 阻塞原因相关的进程执行唤醒。
1)从阻塞队列中移出
2)改“阻塞”为“就绪” 3)插入就绪队列
WAKEUP() 输入参数:进程号 返回:成功或失败标记 功能:把指定进程的PCB从阻 塞队列摘下,该状态为就绪后, 列入就绪队列
69
3.4进程过程关系
注:Block和Wakeup是一对作用相反的
原语,两者应在不同的进程中成对出现。 即在某进程中用到了阻塞,在与之相关 的另一进程中一定要有唤醒。
70
4.进程的挂起与激活
1 挂起过程:由挂起原语Suspend()实现。
1)检查、修改状态。“执行”、“活动就 绪”→“静止就绪”;“活动阻塞” →“静止阻塞”;
2)若原状态为“执行”,则设调度标志为.T.
3)复制PCB到内存某区域(该进程可能会调至外存) 4)检测调度标志,若为.T.,则重新调度 2 激活过程:由激活原语Active()实现。 1)将进程调入内存,改状态。“静止” →“活动”
2)若新状态为“活动就绪”则根据情况,看是否需 重新调度(抢占调度策略)。
71
本节自学知识-Linux进程管理
1.进程状态
2.进程类型
3.进程结构
4.进程命令
5.进程调用
72
Linux进程状态
■
Linux进程状态的变化
73
Linux进程类型
用户进程的两种运行模式
进程划分为两大类:一类是系统进程,只运行在内核模式, 执行操作系统代码;另一类是用户进程。
74
Linux进程结构
●task_struct结构
Linux系统中的每个进程都有一个名为task_struct的数据结构,它 相当于“进程控制块”。 task_struct结构包含下列信息: 进程状态 调度信息 标识符 内部进程通信 链接信息 时间和计时器 文件系统 虚拟内存 处理器信息 ●进程系统堆栈
75
Linux进程操作命令
1.ps命令 查看进程状态 ps命令的一般格式是: ps [选项] $ ps PID TTY TIME CMD 1788 pts/1 00:00:00 bash 1822 pts/1 00:00:00 ps 2. kill命令 终止一个进程的运行 kill命令的一般格式是: ? kill [-s 信号|-p ] [-a] 进程号? ? kill -l [信号] $ kill 1651
76
Linux进程操作命令
3.sleep命令 使进程暂停执行一段时间。 一般使用格式是:sleep 时间值 $ sleep 100; who | grep 'mengqc'
77
Linux进程系统调用
在UNIX/Linux系统中,系统调用和库函数都是以C函数的形 式提供给用户的,它有类型、名称、参数,并且要标明相
应的文件包含。 open系统调用可以打开一个指定文件,其函数原型说明 如下: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *path, int oflags); 例如 : int fd; … fd=open("/home/mengqc/myfile1",O_RDWR); …
78
■有关系统调用的格式和功能 常用的有关进程管理的系统调用有:fork,exec,wait,exit,getpid,sleep,nice 等 ■应用示例 /*proc1.c演示有关进程操作*/ #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <errno.h> int main(int argc,char **argv) { pid_t pid,old_ppid,new_ppid; pid_t child,parent; parent=getpid(); /*获得本进程的PID*/ if((child=fork())<0){ fprintf(stderr,"%s:fork of child failed:%s\n",argv[0],strerror(errno)); exit(1); } else if(child==0){ /*此时是子进程被调度运行*/ old_ppid=getppid(); sleep(2); new_ppid=getppid(); }
79
else { sleep(1); exit(0); /*父进程退出*/ } /*下面仅子进程运行*/ printf("Original parent:%d\n",parent); printf("Child:%d\n",getpid()); printf("Child's old ppid:%d\n",old_ppid); printf("Child's new ppid:%d\n",new_ppid); exit(0); } 程序运行的结果如下: $ ./proc1 Original parent:2009 Child:2010 Child's old ppid:2009 Child's new ppid:1
80
三 进程同步与互斥
进程同步的主要任务是使并发执行的诸进 程之间能有效地共享资源和相互合作,从而 使程序的执行具有可再现性。
81
三、进程互斥与同步
1
进程的同步与互斥概念
2
进程互斥与同步机制
3
进程互斥与同步实现方法
82
1.进程互斥和同步概念
1.1 进程间三种关系
1.2互斥的概念
1.3同步的概念
1.4 同步与互斥的关系
83
1.1进程间可能存在三种关系
1)资源共享关系(间接相互制约)
因多进程共享某资源而产生。此时进程同步要 保证进程能互斥地访问临界资源。为此资源要 由系统统一分配,彼此不知道对方存在,不具 有时间次序的特征
2)相互合作关系(直接相互制约) 因多进程内容上的联系而产生。此时进程同步 要保证进程在执行次序上的协调。彼此不知道 对方的名字
84
1.1进程间可能存在两种关系
例:输入进程A和计算进程B。 A→ 单缓冲 →B。 应保证A、B交替执行。 3)通信
多进程可通过名字彼此之间直接进行通信,交 换信息,合作完成一项工作
85
1.2进程互斥
?
两个并行的进程A、B,如果当A进行某个操作 时,B不能做这一操作,进程间的这种限制条件 称为进程互斥。
? 关系体现:进程-资源-进程。 ? 竞争到某一物理资源时不允许其它进程工作。
? 相互之间不一定清楚其它进程情况。
? 在逻辑上多个进程之间本来完全独立。
86
1.2进程互斥
▲互斥示例 假定进程Pa负责为用户作业分配打印机,进程Pb负责释放 打印机。系统中设立一个打印机分配表,由
各个进程共用。 ●Pa进程分配打印机的过程是: ① 逐项检查分配标志,找出标志为0的打印机号码; ② 把该打印机的分配标志置1; ③ 把用户名和设备名填入分配表中相应的位置。 ★Pb进程释放打印机的过程是: ① 逐项检查分配表的各项信息,找出标志为1且用户名和设 备名与被释放的名字相同的打印机编号; ② 该打印机的标志清0; ③ 清除该打印机的用户名和设备名。
87
1.2进程互斥
打印机分配表(初始情况)
打印机编 号 分配标 识 用户名
用户定义的设备名
打印机分配表(出错情况)
打印机编 号 分配标 识 用户名
用户定义的设备名
0 1 2
1 0 1
Meng
PRINT
0 1
1 0
Liu
OUTPUT
2
1
Liu
OUTPUT
可见,Pa和Pb对分配表的使用必须互斥执行
88
进程互斥
(1) (2) (3)
临界资源
临界区
互斥准则
89
1.2进程互斥
(1)临界资源 一段时间内只允许一个进程访问的资源。
? 若多进程共享某临界资源,则应对其进行同步控 制,以实现对临界资源的互斥访问。
? 临界资源可有硬、软资源。
? 硬件资源:如打印机等。诸进程要互斥使用这些资 源。
? 软件资源:如共享变量等。对共享变量应作为临界 资源处理。即要对它进行互斥访问。
90
1.2进程互斥
竞争条件(Race Condition) 两个或多个进程同时访问和操纵相同的数据时,最 后的执行结果取决于进程运行的精确时序。
例1:进程A:生产一个数据。用count计数,
count=count+1
进程B:消费一个数据。则count=count-1
为提高资源利用率,设A、B并发执行。且对count 的操作可细化为以下步骤: (R表示寄存器,设count初值为1):
91
1.2进程互斥
A:?R1=count ?R1=R1+1 ?count=R1 B:?R2=count ?R2=R2-1 ?count=R2
? 若执行次序为:A(1) A(2) A(3) B(1) B(2) B(3) 则count=1 ? 若执行次序为:A(1) B(1) A(2) A(3) B(2) B(3) 则count=0 ? 若执行次序为:A(1) B(1) B(2) B(3) A(2) A(3) 则count=2
因此,对共享变量应作为临界资源处理。即要对它进 行互斥访问。
92
1.2进程互斥
(2)临界区
把每个进程访问临界资源的那段代码称 为临界区(CS)。 对临界资源的互斥访问即为多进程 互斥进入各自的临界区操作。为保 证互斥访问,在进入前必需先检测 临界资源的状态。 进入区:进程中在临界区前用于检查临 界资源是否正被访问的代码。 退出区:进程中在临界区后的一段代码, 用于标记该临界资源已被释放。
进入区
临界区 退出区
剩余区
93
1.3进程互斥
(3)互斥准则-同步机制应遵循的原则
OS提供互斥工具才能保证进程互斥的进入临界区,互斥工 具应能保证如下几点: 1)空闲让进:若临界资源空闲,则应允许一个请求的进程 进入自己的临界区。
2)忙则等
待:若临界资源正被使用,则其它申请该资源的 管理,管理的方法有两种:同 进程应该等待。 步和互斥;同步反映了进程间
?对要进入临界区的进程加以
的协作关系,而互斥则反映了 3)有限等待:保证进程可在有限的时间内进入自己的临界 进程之间的竞争。 区,防止“死等”。
4)让权等待:当进程应临界资源不能满足而等待时,应释 放CPU,防止“忙等”
94
1.3进程互斥
■临界区进入特征 ①独占临界区 ②前进速度不确定 ③区内进程不受干扰 ④有期等待
进程A和进程B互斥使用临界区的过程
95
1.3进程同步
? 合作完成同一个任务的多个进程,在执行速度 或顺序上必须相互协调的合作关系。
? 关系体现:进程-进程。
? 相互清楚对方的存在及其作用,交换信息。
如生产者-消费者关系,发送者-接收者关系等。
? 在执行时间次序上有一定制约 ? 通过共享资源来协调活动
96
1.4进程同步与互斥关系
? 进程互斥是进程同步的特例? ? 互斥:共享临界资源 间接制约 无固定的必然
关系——依据临界资源使用否。
? 同步:执行顺序和速度 直接制约 必然的依
赖关系——依据同步信息有否
97
2.进程互斥和同步机制
2.1 进程互斥与同步机制
2.2整型信号量机制
2.3记录型信号量机制
2.4 信号量集机制
98
2.1进程互斥和同步机制概述
? 互斥与同步机制主要有信号量机制和管程机制
? 信号量机制是一种有效的进程同步机制。
? 信号量机制有特殊变量(信号量)和PV原语(P操 作和V操作)组成 ? 信号量类型有
? ?
整型信号量
▲ 记录型信号量
? ?
AND型信号量 信号量集
99
2.2整型信号量机制
整型信号量机制定义
用一个变量描述资源,实现多进程对资源的互斥访问。
1)整型信号量:一个整型数。除初始化外,仅能通过两 个标准的原子操作wait(s)和signal(s)访问。即P和V操 作。
?
信号量s代表临界资源, wait(s): 数量为1。 ? Wait(s):先测试临界资 while s<=0 do no_op; 源是否可用,若s<=0不可用, s:=s-1; 循环测试;否则,进入临界 区。 signal(s): s:=s+1; ? Signal(s):用完临界资 源后释放。s:=s+1,返回。 100
2.2整型信号量机制
?整型信号量的缺点:
未遵循“让权等待”,出现“忙等”。
为此引入另一种信号量机制——记录型信号量。
即:放弃处理机进行等待,“让权等待”。
问题:其他进程可获得处理机,会出现多个进程等待 访问同一临界资源。
101
2.3记录型信号量机制
为解决忙等和多个进程共享资源的情况,引入了一种记 录型的信号量。所含内容: (1)代表资源数目的整型量 (2)进程链表,接纳所有等待进程。 1)信
号量类型定义 : struct semaphore{ int value;//信号量的值 PCB *WQ[r]; //r资源的等待队列指针 }
102
2.3记录型信号量机制
●信号量的值与相应资源的使用情况有关 ●信号量的一般结构及PCB队列
103
2.3记录型信号量机制
2 ) wait()操作
void wait (semaphore s){ --s.value; if ( s.value<0) then block(s.WQ[r]); }
1)s.value的初值表示系统中某类资源的数目。s又 叫资源信号量。s.WQ[r]表示该资源的阻塞队列。 2)wait()表示请求一个单位的资源。 ? s.value-1表示该资源数减1。 ? 若s.value<0,则资源已用完,调用阻塞原语。此 时的s.value值不再是资源数量,而是因该资源而阻 塞的进程数。若s.value>=0,则进程继续运行。
104
2.3记录型信号量机制
3) signal()操作
procedure signal(semaphore s){ ++s.value; if s.value<=0 then wakeup(s.WQ[r]) }
1) signal()表示释放一个单位的资源。 ? ++s.value表示该资源数加1。 ? 若s.value<=0,说明仍有为该资源而阻塞的 进程,调用唤醒原语;若s.value>0 ,则进程 继续运行。 2)若s.value初值为1,则等同于互斥信号量
105
2.3记录型信号量机制
4) 记录型型号量机制说明
(1)s.value>0: 代表一类可用资源的数量。绿灯 (2) s.value<0:表示该类可用资源已经没有资源 可以分配,其绝对值代表被阻塞进程数量。红 灯 (3)s.value=0 ? 黄灯 (4)P(Proberen)操作记为wait或DOWN操作——测 试,V(Verhogen)操作记为signal或UP操作—— 增加
106
2.3记录型信号量机制
4) 记录型型号量机制说明
(5)Wait操作与signal操作必须成对出现。 (6)信号量可以赋初值,且初值为非负数。 (7)在使用过程中,信号量的值可以修改,但只 能由P和V操作来访问,不允许通过其他方式来 查看或操纵信号量。
107
2.4信号量集机制
用一个信号量表示一类资源,在一个进程需要获得两 个或更多类资源时才能运行时,可使用多个信号量分 别对其进行描述,称为信号量集。 1 AND型信号量集机制 1)引入:设两个进程A、B共享两个临界资源D、E, 可设置两个互斥信号量Dmutex和Emutex,初值为1。 process B: process A: wait(Emutex) wait(Dmutex) wait(Dmutex) wait(Emutex) 则Dmutex和Emutex值最后都为-1
A、B两进程都阻塞(是一种死锁状态)。
108
2.4信号量集机制
2)Swait() Swait(S1,S2,…Sn) if S1≥1 and … and Sn ≥1 then for i:=1 to n do Si:=Si-1 endfor else 将进程放到第一个不能满足要求的资源的阻 塞队列,同时将程序指针指向Swait()的开始 endif
109
2.4信号量集机制
3)Ssignal() Ssignal(S1,S2,…,Sn) for i:=1 to n do Si=Si+1 唤醒因这些资源而阻塞的进程,放入就绪队列中 endfor 4)AND型信号量集机制的思想: 将进程在整个运行过程中所需要的所有临界资源, 一次性的全部分配。使用完后再一起释放。只要有
一个资源不能满足,则一个也不分配。
110
2.4信号量集机制
2. 一般“信号量集”机制
当进程一次需要N个多类资源时,用AND型信号量集机 制则效率太低。另外,有些资源低于下限值时,系统 不会分配。为解决这两个问题,对AND进行扩充。 设需求分配的资源数量为d,资源的下限值为t。则一 般信号量集机制的Swait()和Ssignal()可描述为:
111
2.4信号量集机制
Swait(S1,t1,d1,…,Sn,tn,dn) if S1 ≥t1 and … and Sn ≥tn then for i=1 to n do Si:=Si-di endfor else 将进程放到第一个不能满足要求的资源的阻塞 队列中,同时将程序指针指向Swait()的开始 endif
112
2.4信号量集机制
Ssignal(S1,d1,…,Sn,dn) for i=1 to n do Si:=Si+di 唤醒因这些资源而阻塞的进程,放入就绪队列中 endfor
113
2.4信号量集机制
几种特殊情况: 1)Swait(S,d,d) 只有一个信号量即一类资源。允许 同时申请d个,下限为d 2)Swait(S,1,1)只有一个信号量即一类资源。当S>1 时,可看作一般的记录型信号量。当S=1时,即为互 斥信号量。 3)Swait(S,1,0) 下限为1,每次分配0个资源。这是 一种特殊的可作为开关的信号量。当S≥1时,允许多 个进程进入。当S<1(S=0)时,阻止任何进程进入。
114
3.进程互斥和同步实现方法
3.1 利用信号量实现互斥
3.2利用信号量描述前趋关系
3.3利用信号量实现同步
115
3.1互斥实现
⑴利用硬件方法解决进程互斥问题 ▲禁止中断 进入临界区之后立即关闭所有的中断 ▲专用机器指令 TSL(Test and Set Lock,即测试并上锁)的指 令:TSL RX,LOCK 汇编代码示例 enter_region: TSL REGISTER,LOCK CMP REGISTER,#0 JNE enter_region RET leave_region: MOVE LOCK,#0 RET
116
3.1互斥实现
(2)利用软件方法解决进程互斥问题 ▲可为每类临界区设置一把锁,该锁有打开和关闭两种状 态。 ▲进程执行临界区程序的操作按下列步骤进行: 关锁 执行临界区程序 开锁 ▲软件锁实现 ? 关锁原语lock (W): while (W==1); W=1; ? 开锁原语unlock (W): w=0;
117
3.1互斥实现
设系统中有一台打印机,有两个进程A和B都要使用它,以 变量W表示锁,预先把它的值置为0。
进程A 进程B
……
lock(W); 打印信息S; }CS区
……
lock(W); 打印信息S; }CS区
unlock(W);
……
unlock(W);
……
118
3.1利用信号量实现互斥
为临界资源设一信号量mutex,称为互斥信号量。 初值为1。信号量mutex是一公用信号量,其取值 范围与共享临界资源的并发进程的个数n有关,
?
为1~-(n-1)
?
P(mutex)-wait(mutex)作为进入区
?
V(mutex)-signal(mutex)作为退出区
119
3.1信号量利用信号量实现互斥
P1
P2
P3 P(mutex)
P(mutex) P(mutex) V(mutex) V(mutex) V(mutex)
互斥区
120
注:1、信号量初值的 var mutex:semaphore:=1 设定非常重要,它
表明 parbegin 了在初始情况下系统拥 process1: wait(mutex) 有或可提供的此类资源 的数量,一般设为1。 CS signal(mutex) 2、wait(mutex)和 process2: wait(mutex) signal(mutex)必须成 对出现,并应分别紧靠 CS signal(mutex) 临界段的头尾部。
parend
3.1利用信号量实现互斥
考虑:缺少wait,则…
缺少signal则...
121
3.1利用信号量实现互斥
信号量及P、V操作讨论
对于两个并发进程,互斥信号量的值仅取1、0 和-1三个值 ? 若mutex=1表示没有进程进入临界区 ? 若mutex =0表示有一个进程进入临界区 ? 若mutex =-1表示一个进程进入临界区,另一 个进程等待进入。
思考 ? 对于N个并发进程,信号量的取值
范围是什么,有什么含义。?
122
3.2利用信号量描述前趋关系
设P1、P2为两个并发执行的进程。且P1中有语句S1, P2中有语句S2。有S1→S2 可设置信号量S,并设初值为0,使得: P1中:S1;signal(s) P2中:wait(s);S2 则可限制其前趋关系。
123
3.2利用信号量描述前趋关系
例如: var a,b,c,d,e,f,g:semaphore:=0,0, 0,0,0,0,0 begin S6 S2 S4 S5
S1
S3
124
3.2利用信号量描述前趋关系
parbegin begin S1;signal(a);signal(b);end; begin wait(a);S2;signal(c);signal(d);end; begin wait(b);S3;signal(e);end; begin wait(c);S4;signal(f);end; begin wait(d);S5;signal(g);end; begin wait(e);wait(f);wait(g);S6;end; parend end
125
3.3利用信号量实现同步
(1)与进程互斥的区别: 进程互斥时它们的执行顺序是可以任意的,通 过共享资源实现相互制约(间接制约)。 ? 在异步环境下的并发进程,若各自执行结果互 为对方的执行条件,从而限制各进程执行速度, 则为并发进程间的直接制约。 (2)解决方法:直接制约的进程互给对方进程发送 执行条件已经具备的信号,一旦收到制约进程发来的 信号即由等待开始执行,通过PV操作实现。
?
126
3.3利用信号量实现同步
共享缓冲区的合作进程的同步
假设有两个同步进程:计算进程C和打印进程P,且只有一个 缓冲区。其中计算进程的功能是进行计算而后将结果送入此 缓冲区中,而打印进程的动作是从缓冲区中将结果取出,而 后交给打印机进行打印。
问题分析:
两进程应满足如下条件:
? 当C进程把计算结果送入缓冲区时,P进程才能 从缓冲区中取出结果去打印; ? 当P进程把缓冲区中的数据取出打印后,C进程 才能把下一个计算结果送入缓冲区
127
3.3利用信号量实现同步
计算进程C
缓冲区
打印进程P
? 进程同步的实现: 设置两个信号量:SC 和 SP ? SC:供进程C使用,用于判断Buffer是否 为空。若空则为1,否则为0。 ? SP:供进程P使用,用于判断Buffer中是 否有数据,有数据为1,无数据为0。 ? 初始条件: SC=1, SP =0
128
3.3
利用信号量实现同步 两进程的同步关系如下:
计算进程C 打印进程P
计算 P(SC) 送缓冲区 V(SP)
P(SP) 从Buffer中取数
V(SC) 打印
129
3.3利用信号量实现同步
? 用P和V操作实现同步时应注意如下三点: ? ①分析进程间的制约关系,确定信号量种 类。 ? ②信号量的初值与相应资源的数量有关, 也与P, V操作在程序代码中出现的位置有 关 ? ③同一信号量的P, V操作要“成对”出现, 但是,它们分别出现在不同的进程代码中。
130
补充:
通常信号量可分为两类:
?公用信号量:又称资源信号量(互斥信号量),往往 用于互斥的情况,通常初值为1,一组并发进程既 可以在其上执行P操作也可以执行V操作。
?私有信号量:把各进程之间发送的消息作为信号量 看待(只与制约进程及被制约进程有关);该信号的 拥有者可执行P操作,而其它的进程只能对该信号 量实施V操作。
131
Q&A
132
133
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1