第2章 进程与线程

  • 格式:ppt
  • 大小:1.21 MB
  • 文档页数:37

下载文档原格式

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

Bernstein条件 条件
读集:R(Pi)={a1,a2,……,am} 程序Pi执行期间参考的变量集合 读集: 程序 执行期间参考的变量集合 写集: 程序Pi执行期间改变的变量集合 写集:W(Pi)={b1,b2,……,bm} 程序 执行期间改变的变量集合 两个进程P1, 若满足 若满足: 两个进程 , P2若满足: R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={} ∪ ∪ 并发执行, 则P1, P2并发执行,且具有可再现性。 , 并发执行 且具有可再现性。
阻塞原语要做的工作
●停止进程的执行 ●将进程插入阻塞队列,改变
进程在PCB中的状态 ●重新调度 唤醒原语要做的工作
●将进程从阻塞队列解下 ●将进程插入就绪队列 ●改变进程在PCB中的状态
跳转到第一页
进程的挂起与激活
挂起原语要做的工作
●检查被挂起进程的状态 ●如进程处于就绪状态,将进程从就绪状态变为就绪挂起状态 ●如进程处于阻塞状态,将进程从阻塞状态变为阻塞挂起状态 ●如进程正在运行,将进程变为就绪挂起状态,并重新调度
跳转到第一页
线程的实现
用户级线程
●线程的创建、撤消和切换,都不利用系统调用来
实现。线程与内核无关,内核也不知道线程的存在 内核级线程
●依赖于内核,线程的创建、撤消和切换都由内核
实现。在内核中有线程控制块(TCB),内核根 据TCB感知线程的存在,并对线程进行控制 组合的方法
●由内核支持的用户线程。一个进程可以有一个或
跳转到第一页
进程控制块PCB的内容 的内容 进程控制块
●进程描述信息 ●进程名 ●进程标识符 ●用户名 ●处理机状态信息 ●通用寄存器 ●指令计数器 ●程序状态字寄存器 ●栈指针 ●进程调度信息 ●进程状态 ●进程优先级 ●运行统计信息。 ●进程阻塞原因。 ●进程控制和资源占有量信息 ●程序入口地址 ●程序的外存地址 ●进程同步及通信机制 ●资源占有信息 ●链接指针
跳转到第一页
Bernstein条件 条件——例1 条件 例
P1: : P2: a=5 b=6
R(P1)={} W(P1)={a} R(P2)={} W(P2)={b} R(P1) ∩W(P2)={} R(P2) ∩W(P1)={} W(P1) ∩W(P2)={} R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={} ∪ ∪ P1、P2可以并发执行 可以并发执行 、 可以
第2 章
进程管理
●进程的引入
本章要点
●进程的状态及其组成控制
●进程控制
●线程
跳转到第一页

2.1进程的引入 2.1进程的引入
程序的顺序执行
P2 P3
P1
P1:a=x+y : P2: b=a-5 P3: c=b+1
特点
● ● ●
顺序性:处理机的操作严格按规定顺序执行
程序执行时, 封闭性:程序执行时,独占系统资源
●中断处理 ●时钟管理
●内核在执行某些基本操作时,往往是利用原
语操作实现的。
原语
●原语由若干条指令构成、用于完成一定功
能的过程。 ●原语是“原子操作”。即一个操作中的所 有动作,要么全做,要么全不做。换言 之,原子操作是一个不可分割的操作。
跳转到第一页
进程的创建与撤消
进程家族树
P
P1
P2
P11
P12
本地过程调用 进程 管理器 对象 管理器
Windows2000的进程关系
● Windows 2000中的进程是资源分配的基本单位, Windows 2000中 的进程作为对象来管理,可以通过句柄引用进程对象。 ●为了支持Win32、OS/2、POSIX等多种运行子环境, Windows 2000 核心的进程之间没有任何关系(包括父子关系)各运行环境子系统分别 跳转到第一页 建立、维护和表达各自的进程关系。
线程 线程
对象 对象
线程 访问令牌
跳转到第一页 Windows2000中的Win32进程结构
Windows2000进程控制 进程控制
● Windows2000的进程控制由各环境子系统相应的
系统调用来实现 ● Win32子系统用于进程控制的系统调用有: CreateProcess创建新进程及其主线程 ExitProcess终止进程及其所有线程,并关闭所 有的对象句柄。 TerminateProcess终止进程及其所有线程,不关 闭所有的对象句柄,用于异常情况下的进程终止。
线程 线程
进程 控制块
线程 控制块 用户 堆栈
线程 控制块 用户 堆栈
用户 地址空间
内核 堆栈
用户 地址空间
内核 堆栈
内核 堆栈
进程和线程的比较
●进程是资源的拥有者 ●线程不拥有资源,只有 线程不拥有资源,只有TCB及堆栈 及堆栈
跳转到第一页
进程和线程比较
●调度
线程调度快,需要空间小。 进程因拥有资源,调度时因负担过重而缓慢。 ●并发性 在引入线程的操作系统中,不仅进程之间可以并发 执行,一个进程中的多个线程之间亦可并发执行。 ●拥有资源 进程是资源的拥有者 ●系统开销 进程切换的开销远远大于线程切换的开销,线程的 切换省去了资源的回收。
多个轻量级线程,每个轻量级线程由一个单独的 跳转到第一页 内核线程来支持
用户级线程与内核级线程
用户级线程 线程库 用户 空间 内核 空间 进程 内核级线程
通过API使用线程 用户 空间 内核 空间
进程 (a)用户级线程 (b)内核级线程
跳转到第一页

用户级线程状态与进程状态的关系
线程1 运行 线程2 运行 线程1 运行 线程2 运行
系统调用
用户级线程在调用系统调用时,系统将看成是其所在进程 的行为。而内核级线程的系统调用是以线程为单位。因此 比较轻装。 用户级线程不如内核级线程
线程执行时间
用户级线程不如内核级线程合理
跳转到第一页
组合的方法
进程1 进程2 进程3
用户级线程 LWP 用户 空间 内核 空间
内核级线程
Solaris中的线程
跳转到第一页
请求I/O或 等待某事件
五种状态的进程状态转换图
完成 创建 时间片用完 接纳 就绪 阻塞 I/O完成或 事件完成
跳转到第一页
运行
退出 请求I/O或 等待某事件
进程调度
双挂起状态的进程状态转换图
挂起 创建 接纳 就绪 激活 就绪 挂起 挂起 激活 阻塞 挂起 挂起 I/O完成或 事件完成 阻塞 时间片用完 进程调度 请求I/O或 等待某事件 完成 运行 退出
跳转到第一页
进程的定义
●可并发执行的程序
在一个数据集合上的执行过程
进程与程序的关系
实质
进程 程序 ●动态的 静态的 ●并发的 顺序 ●暂时的 永久的 ●数据结构=程序+数据+PCB ●程序与进程不是一一对应关系 跳转到第一页
● 2.2
进程的状态及其组成
进程状态转换图
运行 时间片用完 进程调度 就绪 阻塞 I/O完成或 事件完成
跳转到第一页
进程控制块PCB的组织 的组织 进程控制块
●链接方式
跳转到第一页

2.3 进程控制
操作系统内核
●具有较高的特权,能执行一切命令,
核心态
访问所有寄存器和存储区。
用户态
●具有较低特权,只能执行规定的命令,
访问指定的寄存器和存储区。
跳转到第一页
内核与原语
●硬件的第一次延伸。
内核
●系统将一些与硬件紧密相关的模块放在内核
激活原语要做的工作
●检查被激活进程的状态 ●如进程处于就绪挂起状态,将进程从就绪挂起状态变为就绪状态 ●如进程处于阻塞挂起状态,将进程从阻塞挂起状态变为阻塞状态 ●若系统为抢占式系统,则进行进程调度
跳转到第一页

2.4 线程
线程的引入 进程有两个基本属性 ●进程是拥有资源的独立单位 ●进程是独立调度和分派的基本单位 由于进程是资源拥有者,因而在进程的 创建、撤消和切换中系统必须为之付出 较大的时间、空间开销。因此,系统中 所设置的进程的数目不宜过多,进程切 换的频率不宜过高。这就限制了进程并 发程度的提高。 跳转到第一页
●在用户级线程和内核级线程之间,定义了一种轻型进程(LWP) ●由LWP实现了内核与用户级线程的隔离,从而使用户级线程与内核无关
跳转到第一页
Windows 2000的进程管理 的进程管理
POSIX应用 fork() POSIX子系统
CreateProcess()
Win32子系统
Windows2000内核
失去封闭性 ●失去封闭性:系统中的资源供多个程序共 享,致使程序的运行失去了封闭性 失去可再现性 ●失去可再现性:
跳转到第一页
程序并发执行的条件Bernstein 程序并发执行的条件
P1: P2: P3: P4: a=5 b=6 c=a+b d=c+1
P1
P3
P4
问题? 问题?
P2
P1、P2可以并发执行吗? 、 可以并发执行吗 可以并发执行吗? P3、P4可以并发执行呢? 可以并发执行呢? 、 可以并发执行呢
进程与线程的关系
单进程 单线程
单进程 多线程
多进程 每个进程只有一个线程
多进程 每个进程有多个线程
跳转到第一页
操作系统中的进程和线程可以设计为以上四种
线程的定义
Hale Waihona Puke Baidu
线程的定义
线程是进程中的一个实体, 线程是进程中的一个实体,是系统 独立调度和分派的基本单位
进程的属性之一
跳转到第一页
进程和线程比较
单线程进程模型 进程 控制块 用户 堆栈 多线程进程模型
跳转到第一页
Bernstein条件 条件——例2 条件 例
P3: : P4: c=a+b d=c+1
R(P3)={a,b} W(P3)={c} R(P4)={c} W(P4)={d} R(P3) ∩W(P4)={} R(P4) ∩W(P3)={c} R(P3) ∩W(P4) ∪R(P4) ∩W(P3)∪W(P3)∩W(P4) ∪ ={c} P3、P4不能并发执行 不能并发执行 、 不能

就绪 进程A 阻塞 就绪 阻塞 就绪 阻塞 进程A 就绪 阻塞
运行
运行
就绪
阻塞
(a)
线程1
就绪
阻塞
(b)
运行
线程1
运行
线程2
运行
运行
线程2
就绪 进程A
阻塞
就绪
阻塞
就绪
阻塞
就绪
阻塞
运行
进程A
运行

就绪
阻塞
(c)
就绪
阻塞
(d)
跳转到第一页
用户级线程与内核级线程的比较
调度与切换速度
用户级线程的切换,因发生在一个应用进程之间,因此不仅 无须通过中断进入OS内核,而且切换的规则也比较简单。 用户级线程比内核级线程切换速度快
Windows2000的执行体进程块 的执行体进程块EPROCESS—PCB 的执行体进程块
Windows2000进程的特点:
●进程作为对象实现 ●一个进程可含有多个线程 ●进程对象与线程对象都具有同步能力
访问令牌 进程对象
VAD
VAD
VAD
虚拟地址空间描述 对象句柄列表
●虚拟地址空间描述表 ●对象句柄列表 ●线程块列表
●进程正常结束
引起进程撤消的事件
●进程异常结束 ●外界干预
●查找撤消进程的PCB
撤消原语要做的工作
●若进程处于执行状态,终
止之,并进行进程调度 ●若有子孙,予以终止 ●归还资源 ●从所在队列移出
跳转到第一页
进程的阻塞与唤醒
引起进程阻塞的事件
●请求系统服务 ●启动某种操作 ●数据尚未到达 ●无新工作可做
P13
P21
P22
P121
P122
跳转到第一页
进程创建
引起进程创建的事件
●用户登录 ●新作业进入系统 ●提供服务 ●应用请求 ●申请空白PCB
创建原语要做的工作
●为进程分配资源 ●初始化PCB ●初始化进程描述信息 ●初始化处理机状态信息 ●初始化进程控制信息 ●将新进程插入就绪队列
跳转到第一页
进程的撤消
I/O完成或 事件完成
跳转到第一页
进程控制块PCB 进程控制块
PCB是进程实体的一部分,是OS中最重要的数据结构 是进程实体的一部分, 是进程实体的一部分 中最重要的数据结构
●进程控制块PCB ●程序段 ●数据段 ●堆栈
进程的组成
PCB的作用 PCB的作用
●引入PCB的作用:就是使程序能
成为独立运行的单位,并可和其他 进程并发执行。
跳转到第一页
Windows2000的线程 的线程
Windows2000的线程是内核支持线程。系 统调度以线程为单位。线程上、下文(TCB) 主要包括:
●线程控制块 ●核心栈 ●用户栈
跳转到第一页
Windows2000的线程状态转换图 的线程状态转换图
可再现性:当初始条件相同时,程序多次 当初始条件相同时,
跳转到第一页
执行的结果相同
程序的并发执行
P1
P3
P4
P2
P1: P2: P3: P4:
a=5 b=6 c=a+b d=c+1
特点
●间断性:程序在并发执行时,形成了相互制 程序在并发执行时, 约关系。相互制约将导致并发程序具有“执行— 约关系。相互制约将导致并发程序具有“执行 暂停—执行 执行” 暂停 执行”这种间断性的活动规律