第3讲、操作系统-线程和进程间通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线程的实现 在操作系统中,线程的实现方法
进程间通信 不同进程间是如何协调工作的
操作系统-进程与线程
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
一、线程的基本概念
2.2 线程
问题:
➢ 用word写一部小说。假设要你编写一个word,要具备以 下功能:
➢ 执行:进程拥有一个执行的线程。 在线程中有一个程序计数器,用 来记录接着要执行的指令。线程 拥有寄存器,用来保存线程当前 的工作变量,线程还拥有一个堆 栈,用来记录执行历史。
Page 10
操作系统-进程与线程
一、线程的基本概念 2.2 线程
线程与进程 ➢ 进程用于把资源集中到一起,是对计算机的抽象 ➢ 线程则是在CPU上被调度执行的实体,是对CPU的抽象
Page 31
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
忙等待的互斥: ➢ 目的:
当一个进程在临界区中更新共享内存时,其他进程将不 会进入其临界区,也不会带来任何麻烦。 ➢ 方法一: 屏蔽中断------ 当一个进程在刚刚进入临界区后立即屏蔽 所有中断。
Page 32
操作系统-进程与线程
Page 14
字符输入 键盘
文件定时存贮 硬盘
操作系统-进程与线程
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
POSIX线程
➢ 为了实现可移植的线程程序,IEEE标准1003.1c中定义了线程的标准, 称为Pthread线程包。所有Pthread线程都有某些特性。每一个都含 有一个标识符、一组寄存器(包括程序计数器)和一组存储在结构 中的属性。这些属性包括堆栈大小,调度参数以及使用线程需要的 其他项目。
问题分析: ➢ 一个进程如何把信息传递给另一个进程 ➢ 两个进程间在关键活动中不会出现交叉 ➢ 保证正确的顺序
Page 26
操作系统-进程与线程
三、进程间通信
竞争条件:
指环王
下载进程
2.3 进程间通信
播放进程
本地数据缓冲区
➢ 两个或更多个进程读写某些共享数据,最后的结果取决 于进程运行的精确时序,称为竞争条件
百 合 说 : “我 要开花 ,是因 为我知 道自己 有美丽 的花; 我要开 花,是 为了完 成 作 为 一 株 花的庄 严使命 ;我要 开花, 是由于 自己喜 欢
解放军理工大学通信工程学院
《操 作 系 统》
第二章 进程与线程 --线程与进程间通信
教员:王 孝 国
内容简介 主要研究内容
线程的基本概念 为什么要引入线程?线程与进程的区别
Page 16
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
POSIX线程
线程调用 Pthread_create Pthread_exit Pthread_join Pthread_yield Pthread_attr_init Pthread_attr_destory
描述 创建一个新线程 结束调用的线程 等待一个特定的线程退出 释放CPU来运行另外一个线程 创建并初始化一个线程的属性结构 删除一个线程的属性结构
在 一 个 偏 僻遥 远的山 谷里, 有一个 高达数 千尺的 断崖。 不知道 什么时 候,断 崖 边 上 长 出 了一株 小小的 百合。
百 合 刚 刚 诞生 的时候 ,长得 和杂草 一模一 样。但 是,它 心里知 道自己 并不是 一株野草。
在 它 的 内 心深 处,有 一个纯 洁的念 头:“ 我是一 株百合 ,不是 一株野 草。唯 一 能 证 明 我 是百合 的办法 ,就是 开出美 丽的花 朵。”
Page 21
操作系统-进程与线程
二、线程的使用及实现方式
在内核空间实现:
进程
线程
2.2 线程
用户空间
内核空间
内核
进程表 线程表
Page 22
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
问题的进一步讨论: ➢ 用户线程与内核线程之间关联方式 ➢ 线程的激活机制 ➢ 操作统系基于“线程”的程序调度机制 ➢ 本书讲的很简略,请感兴趣的同学参考“操作系统概念”
Page 12
操作系统-进程与线程
一、线程的基本概念
2.2 线程
线程与进程
➢ 在同一个进程中运行多个线程,即把一个复杂的任务分 解成多个逻辑上独立、可并行执行的指令流,是对在同 一台计算机上并发运行多个进程的模拟。多个线程共享 同一个地址空间和此进程的其他资源。
➢ 多个进程则共享物理内存、磁盘、打印机和其它资源。
2.3 进程间通信
进程A 进程B
A切换至B
A切换至B
==0
=1
ERROR
==0
=1
B切换至A
Page 34
操作系统-进程与线程
三、进程间通信
忙等待的互斥: ➢ 方法三:
严格轮转法
while( TRUE ) {
while (turn != 0) {}; critical_region(); turn = 1; noncritical_region(); }
的 不 是 花 苞 ,而是 头脑长 瘤了。 ”
公 开 的 场 合, 它们则 讥讽百 合:“ 你不要 做梦了 ,即使 你真的 会开花 ,在这 荒 郊 野 外 , 你的价 值还不 是跟我 们一样 。”
偶 尔 有 蜂 蝶鸟 雀飞过 ,它们 也会劝 百合不 用那么 努力开 花:“ 在这断 崖边上 , 纵 然 开 出 世界上 最美的 花,也 不会有 人来欣 赏呀! ”
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
互斥: ➢ 以某种手段确保当一个进程在使用一个共享变量或文件
时,其它进程不能做同样的操作。 临界区 ➢ 从共享资源的角度看,一个进程可分为访问共享资源与
不访问共享资源两部分。 ➢ 对共享资源进行访问的程序片段称作临界区。 ➢ 使两个进程不同时处于临界区中,可避免竞争条件。
Page 7
操作系统-进程与线程
一、线程的基本概念
2.2 线程 再看进程 ➢ 进程模型基于两个独立的概念:资源分配处理与执行 ➢ 资源分配:用某种方法把相关的资源集中在一起。进程
有存放程序正文和数据以及其它资源的地址空间。可能 包括打开的文件、子进程、即将发生的报警、信号处理 程序等。 ➢ 执行:创建、切换、撤销。 ➢ 调度分派与资源分配的基本单元
➢ 由于线程具有进程的某些性质,有时被称为“轻量级进 程”。
Page 13
操作系统-进程与线程
一、线程的基本概念
2.2 线程
问题回顾:
➢ 任务分解:输入、排版、定时存贮
➢ 注意:需要操作系统的支持,只有当系统调用只阻塞调 用线程而不是阻塞整个进程时,才能正常工作。
第第第
第
一二三
N
页页页
页
自动排版显示
一、线程的基本概念
2.2 线程
分析: ➢ 复杂应用中同时发生着多个活动,其中某些活动随着时
间的推移会被阻塞。通过将复杂应用分解成可准并行运 行的多个顺序执行流,可以使程序变的简单。 ➢ 并行的实体具有共享同一个地址空间和所有可用数据的 能力。 ➢ 各个实体间具有快速切换的能力。 ➢ 在存在大量计算和大量I/O处理的情况下,这些实体彼此 可以重叠进行,以提高整体运行速度。
(第七版及以后版本)中Threads相关的内容。
Page 23
操作系统-进程与线程
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
操作系统-进程与线程
三、进程间通信
问题:
指环王
下载进程
2.3 进程间通信
播放进程
本地数据缓冲区
来自百度文库Page 25
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
Page 27
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
分析: ➢ 凡涉及共享内存、共享文件以及共享任何资源的情况,
都会出现竞争条件的情况。 ➢ 出现竞争,由于各进程运行精确时序的不确定性,则有
可能产生错误 ➢ 如何避免竞争条件?关键是找出某种途径来阻止多个进
程同时读写共享的数据。
Page 28
Page 17
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
主要有两种方法实现线程包: ➢ 在用户空间实现 ➢ 在内核空间实现 问题:什么是用户空间,什么是内核空间?
Page 18
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
在用户空间实现: ➢ 把整个线程包放在用户空间中,内核对线程包一无所知,
在用户空间实现:
进程
线程
2.2 线程
用户空间
内核空间
内核
进程表
运行时系统 线程表
Page 20
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
在内核空间实现: ➢ 在内核中有用来记录系统中所有线程的线程表。当某个
线程希望创建一个新线程或撤销一个已有线程时,通过 系统调用,完成对线程表的更新及线程的创建或撤销工 作。 ➢ 所有能够阻塞线程的调用都以系统调用的形式实现。
✓可实时的响应用户的输入。 响应键盘输入
✓所见即所得
实时刷新界面显示
✓防文件丢失
定时保存文件
➢ 基于进程的概念,如何设计这个程序?
Page 5
操作系统-进程与线程
一、线程的基本概念
问题:
第第第 一二三 页页页
2.2 线程
第 N 页
自动排版显示
字符输入 键盘
Page 6
文件定时存贮 硬盘
操作系统-进程与线程
Page 29
操作系统-进程与线程
三、进程间通信
临界区
进程A进入临界区 进程A
2.3 进程间通信
进程A离开临界区
进程B
B试图进入临 界区
B进入临界区
B离开临界区
T1 T2
T3
T4
Page 30
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
临界区操作准则: ➢ 任何两个进程不能同时处于其临界区 ➢ 不应对CPU的速度和数量做任何假设 ➢ 临界区外运行的进程不得阻塞其它进程 ➢ 不得使进程无限期等待进入临界区
Page 8
操作系统-进程与线程
一、线程的基本概念 2.2 线程
线程 ➢ 轻型实体 ➢ 独立调度分派的单元。 ➢ 可并发执行。 ➢ 共享进程资源 ➢ 减少程序并发执行时所付出的时空开销
Page 9
操作系统-进程与线程
一、线程的基本概念
2.2 线程
再看进程
➢ 进程模型基于两个独立的概念: 资源分配处理与执行
三、进程间通信
2.3 进程间通信
忙等待的互斥: ➢ 方法二:
锁变量------ 设想有一个共享(锁)变量,其初值为0,当 一个进程想进入临界区时,它先测试这把锁,如果该锁 的值为0,则该进程将其置为1并进入,如果为1,则等其 为0。
Page 33
操作系统-进程与线程
三、进程间通信
忙等待的互斥: ➢ 锁变量存在的问题:
有 了 这 个 念头 ,百合 努力地 吸收水 分和阳 光,深 深的扎 根,直 直地挺 着胸膛 。
终 于 在 一 个春 天的早 晨,百 合的顶 部结出 了第一 个花苞 。
百 合 的 心 里很 高兴, 附近的 杂草却 很不屑 ,它们 在私下 嘲笑着 百合: “这家 伙 明 明 是 一 株草, 偏偏说 自己是 一株花 ,还真 以为自 己是一 株花。 我看它 顶上结
Page 11
操作系统-进程与线程
一、线程的基本概念
2.2 线程
A thread is a basic unit of CPU utilization; it comprises a thread ID, a program counter, a register set, and a stack. It shares with other threads belonging to the same process its code section, data section, and other operating-system resources, such as open files and signals. A traditional( or heavyweight) process has a single thread of control. If a process has multiple threads of control, it can perform more than one task at a time.
即内核不知道线程的存在。 ➢ 从内核角度考虑,内核对进程的管理,是按单线程进程
的方式进行管理的。 ➢ 优点:(1)用户级线程包可以在不支持线程的操作系统
上实现。(2)允许每个进程有自己定制的调度算法。 ➢ 主要问题:(1)如何实现阻塞调用。(2)线程的调度。
Page 19
操作系统-进程与线程
二、线程的使用及实现方式
进程间通信 不同进程间是如何协调工作的
操作系统-进程与线程
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
一、线程的基本概念
2.2 线程
问题:
➢ 用word写一部小说。假设要你编写一个word,要具备以 下功能:
➢ 执行:进程拥有一个执行的线程。 在线程中有一个程序计数器,用 来记录接着要执行的指令。线程 拥有寄存器,用来保存线程当前 的工作变量,线程还拥有一个堆 栈,用来记录执行历史。
Page 10
操作系统-进程与线程
一、线程的基本概念 2.2 线程
线程与进程 ➢ 进程用于把资源集中到一起,是对计算机的抽象 ➢ 线程则是在CPU上被调度执行的实体,是对CPU的抽象
Page 31
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
忙等待的互斥: ➢ 目的:
当一个进程在临界区中更新共享内存时,其他进程将不 会进入其临界区,也不会带来任何麻烦。 ➢ 方法一: 屏蔽中断------ 当一个进程在刚刚进入临界区后立即屏蔽 所有中断。
Page 32
操作系统-进程与线程
Page 14
字符输入 键盘
文件定时存贮 硬盘
操作系统-进程与线程
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
POSIX线程
➢ 为了实现可移植的线程程序,IEEE标准1003.1c中定义了线程的标准, 称为Pthread线程包。所有Pthread线程都有某些特性。每一个都含 有一个标识符、一组寄存器(包括程序计数器)和一组存储在结构 中的属性。这些属性包括堆栈大小,调度参数以及使用线程需要的 其他项目。
问题分析: ➢ 一个进程如何把信息传递给另一个进程 ➢ 两个进程间在关键活动中不会出现交叉 ➢ 保证正确的顺序
Page 26
操作系统-进程与线程
三、进程间通信
竞争条件:
指环王
下载进程
2.3 进程间通信
播放进程
本地数据缓冲区
➢ 两个或更多个进程读写某些共享数据,最后的结果取决 于进程运行的精确时序,称为竞争条件
百 合 说 : “我 要开花 ,是因 为我知 道自己 有美丽 的花; 我要开 花,是 为了完 成 作 为 一 株 花的庄 严使命 ;我要 开花, 是由于 自己喜 欢
解放军理工大学通信工程学院
《操 作 系 统》
第二章 进程与线程 --线程与进程间通信
教员:王 孝 国
内容简介 主要研究内容
线程的基本概念 为什么要引入线程?线程与进程的区别
Page 16
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
POSIX线程
线程调用 Pthread_create Pthread_exit Pthread_join Pthread_yield Pthread_attr_init Pthread_attr_destory
描述 创建一个新线程 结束调用的线程 等待一个特定的线程退出 释放CPU来运行另外一个线程 创建并初始化一个线程的属性结构 删除一个线程的属性结构
在 一 个 偏 僻遥 远的山 谷里, 有一个 高达数 千尺的 断崖。 不知道 什么时 候,断 崖 边 上 长 出 了一株 小小的 百合。
百 合 刚 刚 诞生 的时候 ,长得 和杂草 一模一 样。但 是,它 心里知 道自己 并不是 一株野草。
在 它 的 内 心深 处,有 一个纯 洁的念 头:“ 我是一 株百合 ,不是 一株野 草。唯 一 能 证 明 我 是百合 的办法 ,就是 开出美 丽的花 朵。”
Page 21
操作系统-进程与线程
二、线程的使用及实现方式
在内核空间实现:
进程
线程
2.2 线程
用户空间
内核空间
内核
进程表 线程表
Page 22
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
问题的进一步讨论: ➢ 用户线程与内核线程之间关联方式 ➢ 线程的激活机制 ➢ 操作统系基于“线程”的程序调度机制 ➢ 本书讲的很简略,请感兴趣的同学参考“操作系统概念”
Page 12
操作系统-进程与线程
一、线程的基本概念
2.2 线程
线程与进程
➢ 在同一个进程中运行多个线程,即把一个复杂的任务分 解成多个逻辑上独立、可并行执行的指令流,是对在同 一台计算机上并发运行多个进程的模拟。多个线程共享 同一个地址空间和此进程的其他资源。
➢ 多个进程则共享物理内存、磁盘、打印机和其它资源。
2.3 进程间通信
进程A 进程B
A切换至B
A切换至B
==0
=1
ERROR
==0
=1
B切换至A
Page 34
操作系统-进程与线程
三、进程间通信
忙等待的互斥: ➢ 方法三:
严格轮转法
while( TRUE ) {
while (turn != 0) {}; critical_region(); turn = 1; noncritical_region(); }
的 不 是 花 苞 ,而是 头脑长 瘤了。 ”
公 开 的 场 合, 它们则 讥讽百 合:“ 你不要 做梦了 ,即使 你真的 会开花 ,在这 荒 郊 野 外 , 你的价 值还不 是跟我 们一样 。”
偶 尔 有 蜂 蝶鸟 雀飞过 ,它们 也会劝 百合不 用那么 努力开 花:“ 在这断 崖边上 , 纵 然 开 出 世界上 最美的 花,也 不会有 人来欣 赏呀! ”
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
互斥: ➢ 以某种手段确保当一个进程在使用一个共享变量或文件
时,其它进程不能做同样的操作。 临界区 ➢ 从共享资源的角度看,一个进程可分为访问共享资源与
不访问共享资源两部分。 ➢ 对共享资源进行访问的程序片段称作临界区。 ➢ 使两个进程不同时处于临界区中,可避免竞争条件。
Page 7
操作系统-进程与线程
一、线程的基本概念
2.2 线程 再看进程 ➢ 进程模型基于两个独立的概念:资源分配处理与执行 ➢ 资源分配:用某种方法把相关的资源集中在一起。进程
有存放程序正文和数据以及其它资源的地址空间。可能 包括打开的文件、子进程、即将发生的报警、信号处理 程序等。 ➢ 执行:创建、切换、撤销。 ➢ 调度分派与资源分配的基本单元
➢ 由于线程具有进程的某些性质,有时被称为“轻量级进 程”。
Page 13
操作系统-进程与线程
一、线程的基本概念
2.2 线程
问题回顾:
➢ 任务分解:输入、排版、定时存贮
➢ 注意:需要操作系统的支持,只有当系统调用只阻塞调 用线程而不是阻塞整个进程时,才能正常工作。
第第第
第
一二三
N
页页页
页
自动排版显示
一、线程的基本概念
2.2 线程
分析: ➢ 复杂应用中同时发生着多个活动,其中某些活动随着时
间的推移会被阻塞。通过将复杂应用分解成可准并行运 行的多个顺序执行流,可以使程序变的简单。 ➢ 并行的实体具有共享同一个地址空间和所有可用数据的 能力。 ➢ 各个实体间具有快速切换的能力。 ➢ 在存在大量计算和大量I/O处理的情况下,这些实体彼此 可以重叠进行,以提高整体运行速度。
(第七版及以后版本)中Threads相关的内容。
Page 23
操作系统-进程与线程
目录
一、线程的基本概念 二、线程的实现 三、进程间通信
操作系统-进程与线程
三、进程间通信
问题:
指环王
下载进程
2.3 进程间通信
播放进程
本地数据缓冲区
来自百度文库Page 25
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
Page 27
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
分析: ➢ 凡涉及共享内存、共享文件以及共享任何资源的情况,
都会出现竞争条件的情况。 ➢ 出现竞争,由于各进程运行精确时序的不确定性,则有
可能产生错误 ➢ 如何避免竞争条件?关键是找出某种途径来阻止多个进
程同时读写共享的数据。
Page 28
Page 17
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
主要有两种方法实现线程包: ➢ 在用户空间实现 ➢ 在内核空间实现 问题:什么是用户空间,什么是内核空间?
Page 18
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
在用户空间实现: ➢ 把整个线程包放在用户空间中,内核对线程包一无所知,
在用户空间实现:
进程
线程
2.2 线程
用户空间
内核空间
内核
进程表
运行时系统 线程表
Page 20
操作系统-进程与线程
二、线程的使用及实现方式
2.2 线程
在内核空间实现: ➢ 在内核中有用来记录系统中所有线程的线程表。当某个
线程希望创建一个新线程或撤销一个已有线程时,通过 系统调用,完成对线程表的更新及线程的创建或撤销工 作。 ➢ 所有能够阻塞线程的调用都以系统调用的形式实现。
✓可实时的响应用户的输入。 响应键盘输入
✓所见即所得
实时刷新界面显示
✓防文件丢失
定时保存文件
➢ 基于进程的概念,如何设计这个程序?
Page 5
操作系统-进程与线程
一、线程的基本概念
问题:
第第第 一二三 页页页
2.2 线程
第 N 页
自动排版显示
字符输入 键盘
Page 6
文件定时存贮 硬盘
操作系统-进程与线程
Page 29
操作系统-进程与线程
三、进程间通信
临界区
进程A进入临界区 进程A
2.3 进程间通信
进程A离开临界区
进程B
B试图进入临 界区
B进入临界区
B离开临界区
T1 T2
T3
T4
Page 30
操作系统-进程与线程
三、进程间通信
2.3 进程间通信
临界区操作准则: ➢ 任何两个进程不能同时处于其临界区 ➢ 不应对CPU的速度和数量做任何假设 ➢ 临界区外运行的进程不得阻塞其它进程 ➢ 不得使进程无限期等待进入临界区
Page 8
操作系统-进程与线程
一、线程的基本概念 2.2 线程
线程 ➢ 轻型实体 ➢ 独立调度分派的单元。 ➢ 可并发执行。 ➢ 共享进程资源 ➢ 减少程序并发执行时所付出的时空开销
Page 9
操作系统-进程与线程
一、线程的基本概念
2.2 线程
再看进程
➢ 进程模型基于两个独立的概念: 资源分配处理与执行
三、进程间通信
2.3 进程间通信
忙等待的互斥: ➢ 方法二:
锁变量------ 设想有一个共享(锁)变量,其初值为0,当 一个进程想进入临界区时,它先测试这把锁,如果该锁 的值为0,则该进程将其置为1并进入,如果为1,则等其 为0。
Page 33
操作系统-进程与线程
三、进程间通信
忙等待的互斥: ➢ 锁变量存在的问题:
有 了 这 个 念头 ,百合 努力地 吸收水 分和阳 光,深 深的扎 根,直 直地挺 着胸膛 。
终 于 在 一 个春 天的早 晨,百 合的顶 部结出 了第一 个花苞 。
百 合 的 心 里很 高兴, 附近的 杂草却 很不屑 ,它们 在私下 嘲笑着 百合: “这家 伙 明 明 是 一 株草, 偏偏说 自己是 一株花 ,还真 以为自 己是一 株花。 我看它 顶上结
Page 11
操作系统-进程与线程
一、线程的基本概念
2.2 线程
A thread is a basic unit of CPU utilization; it comprises a thread ID, a program counter, a register set, and a stack. It shares with other threads belonging to the same process its code section, data section, and other operating-system resources, such as open files and signals. A traditional( or heavyweight) process has a single thread of control. If a process has multiple threads of control, it can perform more than one task at a time.
即内核不知道线程的存在。 ➢ 从内核角度考虑,内核对进程的管理,是按单线程进程
的方式进行管理的。 ➢ 优点:(1)用户级线程包可以在不支持线程的操作系统
上实现。(2)允许每个进程有自己定制的调度算法。 ➢ 主要问题:(1)如何实现阻塞调用。(2)线程的调度。
Page 19
操作系统-进程与线程
二、线程的使用及实现方式