Skip to content

408

操作系统

线程的概念与实现(用户级/内核级)


一、定位信息

  • 所属圈层:核心层
  • 前置知识:了解进程的概念和PCB(OS-02-01),了解进程状态与调度(OS-02-02、OS-02-03)
  • 知识网络位置:线程是轻量级进程,是CPU调度的基本单位。理解线程对后续学习多线程同步(OS-02-09至OS-02-13)至关重要
  • 考点热度等级H级(高频重点)——近5年选择题出现≥3次,用户级线程与内核级线程的对比是必考内容

二、知识点讲解

2.1 为什么需要线程

进程是资源分配和调度的基本单位,但进程切换的开销大(需要切换地址空间、保存大量上下文)。在许多应用中(如Web服务器),需要多个执行流共享同一地址空间独立执行。线程正是为此而生。

2.2 线程的概念

定义:线程是CPU调度的基本单位,是进程中的一个执行流。同一进程中的多个线程共享进程的资源(地址空间、打开的文件等),但各自拥有独立的栈、程序计数器和寄存器。

维度进程线程
基本单位资源分配的基本单位CPU调度的基本单位
地址空间独立的地址空间共享所属进程的地址空间
切换开销大(需切换地址空间)小(同一进程内线程切换不需切换地址空间)
拥有的资源拥有全部资源(内存、文件等)只拥有少量私有资源(栈、寄存器等)
并发性进程间并发同一进程内线程间也可并发
通信方式需要IPC机制可直接通过共享内存通信
可独立运行否(依附于进程)

2.3 线程的实现方式

维度用户级线程(ULT)内核级线程(KLT)
管理者用户空间的线程库(不需OS支持)OS内核
OS感知OS不感知用户级线程的存在OS直接管理内核级线程
切换速度快(用户态完成,无需态切换)慢(需内核态切换)
阻塞影响一个线程阻塞→整个进程阻塞一个线程阻塞不影响同进程的其他线程
多处理器并行不能(OS只看到一个进程)能(多个线程可分配到不同CPU)
创建/销毁快(用户态完成)慢(需系统调用)
典型实现POSIX Pthreads(用户态实现)Windows线程、Linux pthreads

关键区别:用户级线程对OS透明,OS只看到进程;内核级线程由OS直接管理。

2.4 多线程模型

模型映射关系特点
多对一模型多个用户级线程映射到一个内核级线程一个线程阻塞→全部阻塞;不能利用多核
一对一模型一个用户级线程映射到一个内核级线程并发性好;但创建线程开销大
多对多模型m个用户级线程映射到n个内核级线程(m≥n)折中方案,兼顾并发性和开销

三、记忆与理解辅助

  1. 口诀区分进程与线程:"进程管资源,线程管执行"
  2. 用户级线程vs内核级线程一句话:"用户级快但一个阻全阻,内核级慢但互不影响能并行"
  3. 多线程模型口诀:"多对一怕阻塞,一对一开销大,多对多取折中"
  4. 线程的私有 vs 共享:私有(栈、PC、寄存器)vs 共享(地址空间、全局变量、文件)

四、例题与精解

例题1(基础巩固)

题目:以下关于线程的描述,正确的是( )

A. 线程是资源分配的基本单位 B. 同一进程中的线程不能并发执行 C. 线程切换的开销通常小于进程切换的开销 D. 用户级线程可以利用多处理器实现真正的并行

命题意图:考查线程的基本概念。

精解

  1. 审题分析:逐项判断关于线程的描述
  2. 解题思路:回顾线程与进程的区别
  3. 完整步骤
    • A选项:错误。进程是资源分配的基本单位,线程是CPU调度的基本单位
    • B选项:错误。同一进程中的多个线程可以并发执行(在单CPU上交替,在多CPU上并行)
    • C选项:正确。线程切换不需切换地址空间,开销小于进程切换
    • D选项:错误。用户级线程对OS透明,OS只看到一个进程,不能将不同线程分配到不同CPU
  4. 方法反思:线程的核心优势是"轻量级"——共享资源、切换开销小

答案:C

例题2(中等提升)

题目:在多对一模型中,若一个用户级线程执行了阻塞的系统调用,则( )

A. 只有该线程被阻塞,其他线程继续运行 B. 整个进程被阻塞 C. 该线程被阻塞,但内核级线程继续运行 D. OS会自动创建新的内核级线程来替代

命题意图:考查多对一模型中阻塞的影响。

精解

  1. 审题分析:多对一模型中多个用户级线程映射到一个内核级线程
  2. 解题思路:OS只看到一个内核级线程,如果这个内核级线程阻塞了,所有依赖它的用户级线程都会被阻塞
  3. 完整步骤
    • 多对一模型中,所有用户级线程共享一个内核级线程
    • 当某个用户级线程执行阻塞系统调用时,内核级线程被阻塞
    • 由于只有一个内核级线程,整个进程的所有线程都被阻塞
    • 这是多对一模型的最大缺点
    • A选项错误(不是只阻塞一个),C选项错误(内核级线程也被阻塞),D选项错误(多对一模型不会自动创建新内核线程)
  4. 方法反思:多对一模型的致命缺点就是"一阻全阻",这也是一对一模型被广泛采用的原因

答案:B


五、考情分析

  • 考查频次:近5年约3–4次
  • 常见题型:选择题
  • 分值占比:2分/题
  • 命题趋势:用户级线程与内核级线程的对比是必考内容,多线程模型近年也有出现。可能与进程同步结合考查

六、易错点提醒

  1. 错误表现:认为线程是资源分配的基本单位 错误原因:将进程和线程的职责混淆 正确理解:进程是资源分配的基本单位,线程是CPU调度的基本单位

  2. 错误表现:认为用户级线程可以利用多核CPU 错误原因:不了解用户级线程对OS透明 正确理解:OS只看到进程,不知道用户级线程的存在,因此无法将不同用户级线程分配到不同CPU核心

  3. 错误表现:认为同一进程中的线程不能共享数据 错误原因:将进程间的独立性套用到线程上 正确理解:同一进程中的线程共享地址空间和全局变量,可以直接访问共享数据(这也是多线程同步问题的根源)

  4. 错误表现:认为一对一模型总是最好的 错误原因:忽略了创建内核级线程的开销 正确理解:一对一模型并发性好但开销大(每个用户线程都对应一个内核线程),多对多模型是折中方案


七、来源标注

  • 依据2026考研统考408大纲
  • 依据《计算机操作系统》(汤小丹/汤子瀛版)第3章
  • 依据《操作系统概念》(Silberschatz版)第4章

考研全科复习资料 - 基于2026考研统考大纲