操作系统复习2.1.5-多线程

线程作为CPU执行的最小单位,允许程序并发执行,提高效率。进程主要负责资源分配,线程则主要涉及调度。线程间的并发相比进程更高效,因为它们在同一进程内切换无需切换环境。文章讨论了用户级线程和内核级线程的实现方式以及多对一、一对一和多对多的多线程模型,分析了各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

进程通常需要同时做很多事,传统进程只能串行执行程序,引入线程增加并发度,线程成为程序执行流的最小单位

概念

轻量级进程,线程是一个基本的cpu的执行单元,线程间也可并发,进程变为除cpu之外的系统资源的分配单元

比较

线程为调度和程序执行流的最小单位,而进程是资源分配的基本单位
线程和进程都能并发
进程间并发,切换进程的运行环境,开销很大
线程间并发,若在同一进程内则无需切换环境,开销小

属性

线程是处理机调度的单位
多cpu计算机中,各个线程可占用不同的cpu
每个线程都有一个线程ID、线程控制块TCB
线程也有就绪、阻塞、运行三种状态
线程几乎不拥有系统资源
同一进程的不同线程间共享进程的资源
由于共享内存地址空间,同一进程的线程间通信甚至无需系统干预
同一进程中的线程切换不会引起进程切换,开销小

实现方式

分为用户级线程和内核级线程

用户级线程

用户级线程由应用程序通过线程库实现,线程管理由应用程序负责,在用户态下完成,对系统透明

内核级线程

内核线程管理由系统内核完成,在核心态下完成

存在同时支持用户级线程和内核级线程的系统,n个用户级别线程映射到m个内核线程上,但由于内核只看得见内核级线程,因此当只有两条内核级线程,而有4核cpu,无论如何,都只有两个核能被分配到。

多线程模型

多对一模型

多个用户级线程对应一个内核级线程
用户级线程切换在用户空间即可完成,不需切换核心态,线程管理开销小,但当一个线程阻塞,整个进程阻塞,并发度不高

一对一模型

n个用户级线程映射到n个内核级线程
当一个线程阻塞时,别的线程还可继续执行,并发能力强,但由于一个进程会占用多个内核线程,线程切换在内核完成,线程管理成本高

多对多模型

完美解决上述问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值