| 项目 | 值 |
|---|---|
| 核心概念 | 线程模型 |
| 关键性质 | 多对一:快但不并行且阻塞连带;一对一:并行且独立但开销大;多对多:折中但实现复杂 |
| 考试频率 | ⭐⭐⭐⭐ |
线程是CPU调度的基本单位,是进程中的一个执行流。引入线程的目的是减少程序并发执行时的开销,提高系统性能。
| 特性 | 进程 | 线程 |
|---|---|---|
| 调度单位 | 传统上是进程,现代OS是线程 | CPU调度的基本单位 |
| 资源分配 | 资源分配的基本单位 | 不拥有资源,共享进程资源 |
| 地址空间 | 独立地址空间 | 共享进程地址空间 |
| 切换开销 | 大(保存PCB、页表等) | 小(保存少量寄存器) |
| 通信方式 | IPC(管道、消息队列等) | 直接读写共享变量 |
| 并发性 | 进程间并发 | 线程间并发,粒度更细 |
| 模型 | 用户级线程 | 内核级线程 | 阻塞影响 | 多核利用 |
|---|---|---|---|---|
| 多对一 | 多个 | 1个 | 整个进程 | 不能 |
| 一对一 | N个 | N个 | 仅该线程 | 能 |
| 多对多 | N个 | M个($N \geq M$) | 仅该线程 | 能 |
| 考法 | 解题套路 |
|---|---|
| ULT vs KLT | ULT 快但会连带阻塞,KLT 可并行但开销大 |
| 一对一模型 | 现代OS主流(Linux/Windows),每个ULT配一个KLT |
| 多对多模型 | n个ULT映射m个KLT,兼顾灵活性与并行性 |
| 线程状态转换 | 创建→就绪⇄运行→终止,与进程类似但更频繁 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。