第二章 进程的描述和控制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.4 进程同步
• 设有一台标准输入设备(键盘),和一台标准输出设备(显示 器或打印机),输入进程负责从标准设备中读取一个字符, 送缓冲区中。输出进程从缓冲区中取数据,送标准设备输 出。
这两个进程并发执行时可能出现的情况?
1、输出重复;
2、数据丢失;
问题的提出
进程之间如何传递消 息?线程呢? 确保各个进程(线程)的关 键活动不会出现交错
潜在的控制问题
互斥 死锁 饥饿 互斥 死锁 饥饿 数据相关性 互斥 死锁
进程间接知道对方 的存在
通过共享合 作
进程直接知道对方 的存在
通过通信合 作
• 临界资源和临界区
– 临界资源:指一次仅允许一个进程使用的资源。
(Critical Resource ) – 临界区:最多只允许一个进程访问的程序段。
• 进程终止的过程
– 1)根据被终止进程的标识符,从PCB集合中检 索出该进程的PCB,从中读出该进程的状态。 – 2)若被终止进程正处于执行状态,应立即终止 该进程的执行,并置调度标志为真,用于指示 该进程被终止后应重新进行调度。 – 3)若该进程还有子孙进程,还应将其所有子孙 进程予以终止,以防他们成为不可控的进程。 – 4)将被终止进程所拥有的全部资源,或者归还 给其父进程, 或者归还给系统。 – 5)将被终止进程(它的PCB)从所在队列(或链表) 中移出, 等待其他程序来搜集信息。
• 引起创建进程的事件
– 1)用户登录。 – 2)作业调度。 – 3)提供服务。 – 4)应用请求。
2.3.2 进程的创建
• 进程图
– 用于描述进程家族关系的有向树。
• 图中的节点代表进程。进程pi创 建了进程pj后就成pi是pj的父进 程(Parent Process),pj是pi的子 进程(Progeny Process)。用pi指 向pj的有向边描述它们之间的父 子关系。创建父进程的进程称为 祖父进程,从而一个进程家族就 形成了一棵进程树,其中根节点 成为进程家族的祖先(Ancestor)。
(Critical Section)
void pi() { while(true){ /*处理代码*/; entercritical(Ra); /*临界区*/ exitcritical(Ra); /*其他代码*/; } }
• 同步机制执行准则:
– 空闲让进 – 忙则等待 – 有限等待 – 让权等待
内核的功能
– 1)中断处理 中断是OS内核最基本的功能。系统中的所有 中断 都由内核响应。中断是进程并发执行的基 础, OS是由中断驱动的。 – 2) 时钟管理 OS的许多重要操作,都依赖于时钟管理。 – 3)原语操作 原语操作包括涉及CPU管理,存储管理,设备 管理,文件管理的各种基本操作。
中断源
• 进程唤醒过程
– 当被阻塞进程所期待的事件出现时,如I/O完成 或其所期待的数据已经到达,则由有关进程(比 如,用完并释放了该I/O设备的进程)调用唤醒 原语wakeup( ),将等待该事件的进程唤醒。唤 醒原语执行的过程是:首先把被阻塞的进程从 等待该事件的阻塞队列中移出,将其PCB中的 现行状态由阻塞改为就绪,然后再将该PCB插 入到就绪队列中。
• 特权指令与非特权指令
– 从资源管理和控制程序执行的角度出发,必须 把指令系统中的指令分作两部分:特权指令和 非特权指令。 – 特权指令是指只能提供给操作系统的核心程序 使用的指令,如启动I/O设备、设置时钟、控制 中断屏蔽位、清主存、建立存储键,加载PSW 等。
• 程序状态字寄存器
– 计算机如何知道当前处于何种工作状态?这时 能否执行特权指令?通常操作系统都引入程序 状态字PSW(Program Status Word)来区别 不同的处理器工作状态 – PSW用来控制指令执行顺序并保留和指示与程 序有关的系统状态,主要作用是实现程序状态 的保护和恢复 – 每个程序都有一个与其执行相关的PSW,每个 处理器都设置一个PSW寄存器。程序占有处理 器执行,它的PSW将占有PSW寄存器
2.3.4 进程的阻塞与唤醒 • 引起进程阻塞和唤醒的事件
– 向系统请求共享资源失败 – 等待某种操作的完成 – 新数据尚未到达 – 等待新任务的到达
• 进程阻塞过程
– 正在执行的进程,当发现上述某事件时,由于无法继 续执行,于是进程便通过调用阻塞原语block把自己阻 塞。可见,进程的阻塞是进程自身的一种主动行为。 进入block过程后,由于此时该进程还处于执行状态, 所以应先立即停止执行,把进程控制块中的现行状态 由“执行”改为阻塞,并将PCB插入阻塞队列。如果 系统中设置了因不同事件而阻塞的多个阻塞队列,则 应将本进程插入到具有相同事件的阻塞(等待)队列。 最 后,转调度程序进行重新调度,将处理机分配给另一 就绪进程,并进行切换,亦即,保留被阻塞进程的处 理机状态(在PCB中),再按新进程的PCB中的处理机状 态设置CPU的环境。
中断请求
中断响应
保护CPU现场 识别中断源
转中断 处理程序
退出中断
恢复CPU现场
向CPU
内核对中断的有限处理方式 中 断 源 — 引起中断的异步事件(如:系统调用,I/ O 请求,进程调度, 设备驱动,文件处理等)。 中断请求 — 向CPU发出中断信号。 中断响应 — CPU停止执行当前进程,分辨中断请求的类型。 中断处理 — CPU将请求交相关的中断处理程序处理。 中断返回 — 众多处理结束,返回断点。
第二章 进程的描述和控制 • 2.3 进程控制
• 2.4 进程同步
2.3 进程控制 2.3.1 操作系统内核
操作系统中,为了防止用户进程对OS及PCB等 关键信息的破坏。 一个进程在其生命期中有 两种机器运行状态: – 系统态 (核心态,管态) 具有较高的访问权, 可访问核心模块。 – 用户态 (目态 ) 限制访问权。
2.3.5进程的挂起与激活 • 进程的挂起
– 当出现了引起进程挂起的事件时,比如,用户 进程请求将自己挂起,或父进程请求将自己的 某个子进程挂起, 系统将利用挂起原语 suspend( )将指定进程或处于阻塞状态的进程 挂起。挂起原语的执行过程是:首先检查被挂 起进程的状态,若处于活动就绪状态,便将其 改为静止就绪;对于活动阻塞状态的进程,则 将之改为静止阻塞。 为了方便用户或父进程考 查该进程的运行情况而把该进程的PCB复制到 某指定的内存区域。最后,若被挂起的进程正 在执行,则转向调度程序重新调度。
2.4.2 硬件同步机制 • 硬件方案
– 屏蔽中断、TSL(XCHG)指令
硬件解法1—中断屏蔽方法 • “开关中断”指令
执行“关中断”指令 临界区操作 执行“开中断”指令
while (true) { /* disable interrupts */; /* critical section */; /* enable interrupts */; /* remainder */; }
2.3.1 进程源自文库步的基本概念
进程在执行时,各进程具有独立性和异步性等并发特点。系统中进程相 互影响构成制约关系:
感知程度
进程之间不知道对 方的存在
关 系
竞争
进程对其他进程的影响
•一个进程的结果和另一 个进程的执行无关 •进程的执行时间可能会 受到影响 •一个进程的结果可能依 赖于从另一个进程获得 的信息 •进程的执行时间可能会 受到影响 •一个进程的结果可能依 赖于从另一个进程获得 的信息 •进程的执行时间可能会 受到影响

简单,高效 代价高,限制CPU并发能力(临界区大小) 不适用于多处理器
• •
硬件解法2 —―测试并设置”(TSL)指令
• 进程的激活过程
– 当发生激活进程的事件时,例如,父进程或用户进程 请求激活指定进程,若该进程驻留在外存而内存中已 有足够的空间时,则可将在外存上处于静止就绪状态 的进程换入内存。这时,系统将利用激活原语active( ) 将指定进程激活。 激活原语先将进程从外存调入内存, 检查该进程的现行状态,若是静止就绪,便将之改为 活动就绪;若为静止阻塞便将之改为活动阻塞。假如 采用的是抢占调度策略,则每当有新进程进入就绪队 列时,应检查是否要进行重新调度,即由调度程序将 被激活进程与当前进程进行优先级的比较,如果被激 活进程的优先级更低,就不必重新调度;否则,立即 剥夺当前进程的运行,把处理机分配给刚被激活的进 程。
A B C
D
E
F
G
H
– 进程间的这种关系是非常有用处 的:
• 子进程继承父进程的资源。 • 子进程被撤消时,要归还从父进 程获得的资源。 • 撤消一个进程时,必须同时/事 先撤消其多有子孙进程。
I
J
K
L
M
进程树
• 进程创建过程
– 1)申请空白PCB。 – 2)为新进程分配资源。 – 3)初始化进程控制块。

2)异常结束:
– 在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有: • ①越界错误。这是指程序所访问的存储区,已越出该进程的区域; • ②保护错。进程试图去访问一个不允许访问的资源或文件,或者以不适当的方式进行访 问,例如,进程试图去写一个只读文件; • ③非法指令。程序试图去执行一条不存在的指令。出现该错误的原因,可能是程序错误 地转移到数据区,把数据当成了指令; • ④特权指令错。用户进程试图去执行一条只允许OS执行的指令; • ⑤运行超时。进程的执行时间超过了指定的最大值; • ⑥等待超时。进程等待某事件的时间, 超过了规定的最大值; • ⑦算术运算错。进程试图去执行一个被禁止的运算,例如,被0除; • ⑧I/O故障。这是指在I/O过程中发生了错误等。
compete and/or cooperate
相互协作的进程(线程) 如何正确执行?
进程间通信
与时间有关的错误——例子1 • 飞机订票系统,两个终端,运行T1、T2进 程
T1: ... read(x); if x>=1 then x:=x-1; write(x); ...
T2: ... read(x); if x>=1 then x:=x-1; write(x); ...

3)外界干预:
– 外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。这些 干预有: • ①操作员或操作系统干预。 由于某种原因,例如,发生了死锁, 由操作员或操作系统 终止该进程; • ②父进程请求。 由于父进程具有终止自己的任何子孙进程的权利, 因而当父进程提出 请求时,系统将终止该进程; • ③父进程终止。 当父进程终止时,OS也将他的所有子孙进程终止。
• PSW寄存器包括以下内容:
– 程序基本状态: (1) 程序计数器; (2) 条件码; (3)处理器状态位。 – 中断码。保存程序执行时当前发生的中断事件。 – 中断屏蔽位。指明程序执行中发生中断事件时, 是否响应出现的中断事件。
• 内核是OS中最重要最核心的部分。OS的内 核紧靠硬件,由那些使用频率高,与硬件 紧密相关的模块构成;如中断处理程序, 设备驱动程序等。 • 内核是OS的控制和协调中心,由它组织, 启动和协调系统中各种活动。通常由各种 原语构成。
• 处理器怎么知道当前是操作系统还是一般 用户程序在运行呢?
• 处理器状态
– 处理器状态标志: 管理状态(特权状态、系统 模式、特态或管态)和用户状态(目标状态、 用户模式、常态或目态)。处理器状态的转换。 – 处理器处于管理状态时,程序可以执行全部指 令,使用所有资源,具有改变处理器状态的能 力;处理器处于用户状态时,程序只能执行非 特权指令
• 初始化标志符信息 • 初始化处理机状态信息 • 初始化处理机控制信息
– 4)将新进程插入就绪队列
• 如果进程就绪队列能够接纳新进程, 便将新进程插 入就绪队列。
2.3.3 进程的终止
• 引起进程终止的事件
• 1)正常结束:
– 在任何计算机系统中,都应有一个用于表示进程已经运行完成的指示。例如,在批处理系统中, 通常在程序的最后安排一条Holt指令或终止的系统调用。当程序运行到Holt指令时,将产生一 个中断,去通知OS本进程已经完成。 在分时系统中,用户可利用Logs off去表示进程运行完 毕, 此时同样可产生一个中断,去通知OS进程已运行完毕。
相关文档
最新文档