线程与轻进程(OS) 爱被打了一巴掌 2024-03-16 21:17 7阅读 0赞 **目录** 1、进程的引入 2、线程的概念 3、线程的结构 3、线程控制块 5、线程的实现 (1)用户级别线程 (2)核心级别线程 (3)混合线程 6、线程的应用 -------------------- ## 1、进程的引入 ## **进程切换** * 上下文涉及内容多,开销大,“笨重” PCB+程序 * 系统环境:地址空间,系统栈,打开文件表 相关进程之间耦合关系差 **解决方案** * Multi-threading * 同一进程中包含多个线程 * 上下文只涉及寄存器和用户栈,切换速度快 * 相关线程之间通讯方便、快捷 ## 2、线程的概念 ## 线程,又称为轻进程(light weight process,LEP),是进程中一个相对独立的执行流。 **进程 vs.线程** * 进程是资源分配单位 * 线程是执行单位 **多线程优点** * 切换速度快(地址空间不变)(light weighted) * 系统开销小 * 通讯容易(共享数据空间) ## 3、线程的结构 ## ![cf46cf66b184473a9f1fd489f1a66ddd.png][] 多进程结构 ![933a2c7ef414416bb4cb43953831bd30.png][] 多线程结构 ![8e1c08d957eb4fa3a4afbe9a27de3149.png][] 线程结构(另一种表达方式) ## 3、线程控制块 ## **线程控制块 TCB(Thread control block)** 标志线程存在的数据结构, 其中包含对线程管理需要的全部信息。 [与进程相似][Link 1],线程也是并发执行的,即时断时续的。 **内容:**线程标识 、线程状态 、调度参数 、现场(通用寄存器,PC,SP) 、链接指针 **存放位置** * 用户级线程:目态空间(运行系统) * 核心级线程:系统空间 ## 5、线程的实现 ## ### (1)用户级别线程 ### **实现方法:** * 基于library函数,系统不可见 * 线程创建、撤销、状态转换在目态完成 * TCB在用户空间,每个进程一个系统栈 **优点:** 不依赖于操作系统,调度灵活 同一进程中多线程切换速度快(不需进入操作系统) **缺点:** 同一进程中多个线程不能真正并行 一个线程进入系统受阻,进程中其它线程不能执行 ![c8b5de4b45d342a4b42a68c26772b59d.png][] 对于用户级别线程, > 若同一进程中的多个线程中至少有一个处于运行态,则该进程的状态为运行态; > > 若同一进程的多个线程均不处在运行态,但至少有一个线程处于就绪态,则该进程处于就绪态; > > 若同意进程的多个线程均处于等待状态,则该进程处于等待状态。 ### (2)核心级别线程 ### **实现方法:** * 基于系统调用 * 创建、撤销、状态转换由操作系统完成 **优点:** 同一进程内多线程可以并行执行 一线程进入核心等待,其它线程仍可执行 **缺点:** 系统开销大,同一进程内多线程切换速度慢 调度算法不能灵活控制 ![77aa11a01e3f4e8ea5088c8674e117fa.png][] ### (3)混合线程 ### **Solaris例子** **User level thread:** * 由Lib程序支持(创建,调度) **Light weighted process(LWP):** * 由Lib程序支持 * 每个task至少一个LWP * 用戶级别线程与LWP可以多对多 * LWP对操作系统可见 * 只有与LWP相联系的用户线程向前推进 **Kernel level thread:** * 由kernel 支持 * 每个LWP与唯一一个核心线程对应 核心线程可与CPU多对多,可对一 ![b31a70db9e0f4f0084d6159d9d11295b.png][] ## 6、线程的应用 ## 内在的多控制流,需要共享数据 :生产-消费问题 多线程优于多进程 快100倍! 提高处理机与设备的并行性 多处理机环境:提高处理机利用率,加快进程推进速度 [cf46cf66b184473a9f1fd489f1a66ddd.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/15/affa99313ca443578a9ee9956271396f.png [933a2c7ef414416bb4cb43953831bd30.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/15/54f68e26c23b4857a9cae0e2357fb70f.png [8e1c08d957eb4fa3a4afbe9a27de3149.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/15/3dadbc9c52914535b27d11f659db4dce.png [Link 1]: https://blog.csdn.net/weixin_72077052/article/details/131276771 [c8b5de4b45d342a4b42a68c26772b59d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/15/35df766988fc46b8ae511d062787e25f.png [77aa11a01e3f4e8ea5088c8674e117fa.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/15/7b582bde8660475881e82b117860feb8.png [b31a70db9e0f4f0084d6159d9d11295b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/15/cd4083e0cef648a784262a3892309d39.png
相关 线程与轻进程(OS) 目录 1、进程的引入 2、线程的概念 3、线程的结构 3、线程控制块 5、线程的实现 (1)用户级别线程 (2)核心级别线程 (3)混合线程 6、线程的应用 爱被打了一巴掌/ 2024年03月16日 21:17/ 0 赞/ 8 阅读
相关 进程与线程 有那么一些零碎的小知识点,偶尔很迷惑,偶尔被忽略,偶然却发现它们很重要,也是各大笔试和面试高频出现考点。这段时间正好在温习这些,就整理在这里,一起学习一起提高!后面还会继续补充 痛定思痛。/ 2022年05月30日 00:19/ 0 赞/ 281 阅读
相关 线程与进程 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本 - 日理万妓/ 2022年05月23日 01:56/ 0 赞/ 131 阅读
相关 进程与线程 [进程与线程][Link 1] 推荐一篇讲解的非常透彻且非常形象的文章,阮一峰的一篇博文。 原文链接:[进程与线程的一个简单解释][Link 2] posted @ 秒速五厘米/ 2022年03月22日 11:09/ 0 赞/ 280 阅读
相关 线程与进程 进程 1. 进程是资源分配的最小单位。 2. 开销: 有独立的代码和数据空间,程序切换开销大。 3. 坏境: 能同时运行多个进程(程序)。 4. 内存: 系统在运 骑猪看日落/ 2022年03月17日 10:14/ 0 赞/ 245 阅读
相关 进程与线程 进程,是一个活动的实体,我们平时所说的程序或者可执行文件并不是一个进程,他们都属于被动实体,只有将程序或者可执行文件调入到内存中才能成为一个活动实体,才能称之为进程。 进程是 小鱼儿/ 2022年01月16日 04:27/ 0 赞/ 289 阅读
相关 进程与线程 进程的定义 由于程序在并发执行时,各次执行的结果不同,所以用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念 – 进程来描述程序的并发执行。 根据1978 比眉伴天荒/ 2022年01月15日 01:05/ 0 赞/ 302 阅读
相关 进程与线程 进程至少包含三个组成要素:程序快、代码块以及进程控制块; 进程是系统中资源分配和保护的基本单位; 线程作为CPU的调度和分派的基本单位; 每个进程在创建的时候,至少 Dear 丶/ 2022年01月11日 07:49/ 0 赞/ 325 阅读
相关 进程与线程 进程与线程: 基本概念: 进程:进程是正在运行的程序的实例。每个进程都有自己的地址空间,一般情况下,它包括文本区域、数据区域和堆栈。文本区域存储处理器执行的代码;数据区 落日映苍穹つ/ 2021年09月26日 13:08/ 0 赞/ 399 阅读
相关 进程与线程 进程与线程 1 进程 1.1 进程的概念 进程就是正在运行的程序,它代表了程序所占用的内存区域 1.2 进程的特点 独立性 进程是系 忘是亡心i/ 2021年09月07日 06:19/ 0 赞/ 606 阅读
还没有评论,来说两句吧...