导图社区 线程_20200302_202000307
对linux中的线程的介绍,内核线程与用户空间线程
对CUP调度原理的简单介绍与了解,调度算法的介绍
对进程一个整体的认知与介绍,进程每一个环节的介绍
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
线程
4.0.1:目标
引入线程的概念
一种CPU利用的基本单元,是形成多线程计算机的基础
讨论线程库
Pthread API
Win32 API
Java
4.1:概述
概念
是CPU使用的基本单元
组成
线程ID
程序计数器
寄存器集合
栈
于同一进程的其他线程
共享
代码段
数据段
文件
不共享
寄存器
分类
用户线程
受内核支持,无需内核管理
内核线程
由操作系统直接支持和管理
动机
一个应用程式一般是具有多个控制线程的独立进程
一个应用程式需要执行多个相似的任务
建立独立的进程
建立多线程
优点:所耗时间缩短,资源节约
RPC也是多线程才可完成
优点
相应度高
多线程并发或者并行执行
资源共享
经济
进程切换
进程创建
时间成本
多处理器体系结构的利用
线程允许并行执行,因此单进程可在多处理器上运行
4.2:多线程模型
用户线程:受内核支持,无需内核管理
内核线程:由操作系统直接支持和管理
主要讨论两者之间的关系模型
多对一
特点
多个用户线程映射一个内核线程
线程库在用户空间管理用户线程,效率高
一个用户线程阻塞系统调用,整个系统将会被阻塞
任意时刻只有唯一的线程访问内核
实例
Green thread
GNU可移植线程
一对一
一个用户线程映射一个内核线程
一个线程阻塞时,其他内核不会受到影响
允许多线程并发允许在多CPU上
由于创建内核线程需要资源开销,因此一般控制线程数量
多对多
多路复用许多用户线程到同样数量或者更少数量的内核线程
去除了前面两种模型的缺点,允许任意多的用户线程创建,并且用户阻塞,不会影响内核阻塞
变形,在之前的基础上,允许某个用户线程绑定某个内核线程,其他线程仍旧是多对多模式
4.5:操作系统实例
windows XP
略
Linux
不区分进程线程
使用clone来区分父子任务之间共享的数据
CLONE_FS
共享文件系统
CLONE_VM
共享共同的内存空间
CLONE_SIGHAND
共享信号处理程序
CLONE_FILES
共享打开文件集
4.4:多线程问题
系统调用
线程调用fork()
复制所有的线程
或只复制调用fork()的线程
由系统类型决定
线程调用exec()
会将exec所指定的程序替代整个进程,包括所有线程
取消
定义:在线程完成之前来终止线程的任务
目标线程
定义:需要被取消的线程
被取消的两种情况
异步取消:一个线程立即终止目标线程
延迟取消:目标线程不断的检查它是否应终止,这允许目标线程有机会以有序方式来终止自己
取消点
定义:是否允许线程在安全的点被取消
取消点的使用
信号处理
定义:UNIX中,用来通知进程某个特定事件已发生
类型
同步
产生和接收是同一个进程
异步
产生和接收是两个进程
模式
信号是由特定的事件发生所产生的
产生的信号要发送到进程
一旦发送,信号必须处理
默认信号处理程式
内核空间
用户定义的信号处理程式
用户空间
信号发送接受的模式
发送信号到信号所应用的线程
发送信号到进程内的每个线程
发送信号到进程内的某些固定线程
某个特定线程接收进程内的所有信号
线程池
创建的缘由
创建和取消一个线程所需要的一个时间和资源
因为CPU时间和内存的资源是有限的,所以不能在同一时间点创建很多线程
主要思想:在进程开始时,创建一定数量的线程,等待工作,有任务处理任务,没有任务返回线程池继续等待
调用现有线程的相应速度要比创建新线程速度快
限制了在任何时候创建可用线程的数量
最大数量由硬件决定
有些系统可以动态的管理线程池,有效降低系统负荷
线程特定数据
同一个进程内不同线程可以共享数据
每一个线程都有自己特定的数据副本
调度程序激活
内核与线程库之间的通信问题
内核与用户之间的协调,可以更好的保证系统的性能
建立一种机制,来有效的配对用户线程与内核线程之间的关系
先后执行
执行等待
。。。。
4.3:线程库
概念:为程序员提供创建管理线程的API
实现方式
用户空间自己管理
会调用内核的系统调用
三种实例
Pthread
win32
java
省略