整体框架
还没有引入进程之前,各个程序只能串行执行
进程是程序的一次执行过程,但这些功能显然不可能是由一个程序顺序处理就能实现的
有的进程可能需要 “同时” 做很多事,而传统的进程只能串行地执行一系列程序。
为此,引入了 “线程”,来增加并发度。
引入线程后,线程成为了程序执行流的最小单位
可以把线程理解为 “轻量级进程” 。
线程 \color{red}线程 线程是一个 基本的 CPU 执行单元 \color{red}基本的\texttt{CPU}执行单元 基本的CPU执行单元,
引入线程之后,不仅是进程之间可以并发,
进程内的 各线程之间 \color{red}各线程之间 各线程之间也可以 并发 \color{red}并发 并发,
从而进一步 提升了系统的并发度 \color{red}提升了系统的并发度 提升了系统的并发度,
使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
引入线程后, 进程 \color{red}进程 进程只作为 除 CPU 之外的系统资源的分配单元 \color{red}除\texttt{CPU}之外的系统资源的分配单元 除CPU之外的系统资源的分配单元
即:进程只作为分配资源的基本单位,而将线程作为调度的基本单位
例如:从 QQ 聊天窗口跳到 b 站视频就是不同进程之间线程的切换
4、线程的实现方式 4.1、用户级线程(User-Level Thread,ULT)用户级线程由应用程序通过线程库实现。
所有的 线程管理工作 \color{red}线程管理工作 线程管理工作都由 应用程序负责 \color{red}应用程序负责 应用程序负责(包括线程切换)
用户级线程中,
线程切换 \color{red}线程切换 线程切换可以在 用户态下即可完成 \color{red}用户态下即可完成 用户态下即可完成,
无需操作系统干预。
在用户看来,是有多个线程。但是在操作系统内核看来,并意识不到线程的存在。
可以这样理解,“ 用户级线程 \color{red}用户级线程 用户级线程” 就是 “ 从用户视角看能看到的线程 \color{red}从用户视角看能看到的线程 从用户视角看能看到的线程”
4.2、内核级线程(Kernel-Level Thread, KLT)又称 “内核支持的线程”
内核级 线程的管理工作 \color{red}线程的管理工作 线程的管理工作由 操作系统内核 \color{red}操作系统内核 操作系统内核完成。
线程调度、切换等工作都由内核负责,
可以这样理解,“ 内核级线程 \color{red}内核级线程 内核级线程”就是 “ 从操作系统内核视角看能看到的线程 \color{red}从操作系统内核视角看能看到的线程 从操作系统内核视角看能看到的线程”
4.3、二者组合在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:
将n
个用户级线程映射到m
个内核级线程上(n >= m
)
重点重点重点 \color{red}重点重点重点 重点重点重点:
操作系统只 “看得见” 内核级线程,
例如:
上述这个模型中,该进程由两个内核级线程,三个用户级线程,在用户看来,这个进程中有三个线程。
在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了 “多线程模型” 问题。
5.1、多对一模型多对一 \color{red}多对一 多对一模型:
优点:
缺点:
因为线程是处理机调度的基本单位,而不是资源分配的基本单位。多个用户级映射在一个内核级线程,内核认为仅有一个线程,当一个用户级线程被阻塞,内核认为所映射的内核级线程也被阻塞,故所有映射到该内核级的用户级线程都被阻塞
一对一 \color{red}一对一 一对一模型:
优点:
缺点:
多对多模型:n
用户及线程映射到m
个内核级线程(n >= m
)。
m
个内核级线程。克服了多对一模型并发度不高的缺点,
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:2.5、线程概念和多线程模型-创新互联
网页地址:https://www.cdcxhl.com/article18/hjpdp.html
成都网站建设公司_创新互联,为您提供商城网站、App开发、用户体验、搜索引擎优化、微信小程序、域名注册
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联