Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

  • 操作系统原理

    • 操作系统职责与内核架构
    • 进程线程与调度
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • 内存管理与虚拟内存
    • 文件系统与VFS
    • IO模型与中断
    • 权限安全与隔离
    • 启动流程与系统服务
    • 性能观测与故障定位
  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

进程线程与调度

进程和线程是操作系统执行程序的基本抽象。调度器决定谁获得 CPU、运行多久、何时切换,这直接影响吞吐、延迟和系统稳定性。

# 1. 学习目标

  • 理解进程、线程、协程和任务的区别。
  • 掌握进程状态、上下文切换、优先级和调度队列。
  • 能分析 CPU 飙高、线程阻塞、死锁和负载异常。

# 2. 知识框架

进程线程与调度
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

调度问题的核心是“可运行任务多不多、CPU 够不够、等待在哪里、切换成本多高”。

# 3. 核心概念

主题 说明 工程关注
进程 资源隔离和地址空间的基本单位 崩溃隔离、权限、文件句柄
线程 CPU 调度的常见执行单位,共享进程资源 并发、同步、上下文切换
调度器 决定任务运行顺序和时间片的内核组件 公平性、优先级、实时性
阻塞等待 任务等待 IO、锁、信号或事件 吞吐下降、线程堆积、超时

# 4. 机制与实践

  1. 定位卡顿时区分 RUNNABLE、BLOCKED、WAITING、睡眠和不可中断等待。
  2. 线程池容量要结合 CPU、IO、阻塞比例和下游承载能力。
  3. 高负载时检查运行队列、上下文切换、锁等待和系统调用热点。

# 5. 常用命令与工具

命令或工具 作用 使用建议
ps -ef 查看进程列表 确认进程、父子关系和启动命令
top -H -p pid 查看 Linux 进程内线程 CPU 定位高 CPU 线程
pstree -p 查看进程树 排查守护进程和子进程关系

# 6. 常见误区

  • 线程越多越好:线程过多会增加调度和上下文切换成本,还会放大锁竞争。
  • 只看 CPU 利用率不看等待:线程可能大量阻塞在 IO 或锁上,CPU 不高但服务仍然慢。
  • 忽略优先级和亲和性:错误配置可能导致关键任务被饿死或资源利用不均。

# 7. 进阶研究方向

  • 学习 Linux CFS 调度器和实时调度策略。
  • 研究进程状态、信号、fork/exec/wait 的实现路径。
  • 结合语言运行时理解 Java 线程、虚拟线程、Go goroutine 与内核线程的关系。

# 8. Tips 快问快答

Q:进程和线程最大的区别是什么?

A:进程强调资源隔离,线程强调同一进程内的并发执行。

Q:什么是上下文切换?

A:内核保存当前执行流状态并恢复另一个执行流状态,让 CPU 切换执行对象。

Q:CPU 不高但接口慢可能是什么原因?

A:可能卡在锁、IO、连接池、下游服务、DNS 或线程池队列。

# 9. 总结

进程线程和调度把程序执行从“代码顺序运行”变成“资源竞争和时间分配”。掌握它们,是理解并发、性能和故障定位的基础。

上次更新: 2026/06/25, 10:02:19
操作系统职责与内核架构
内存管理与虚拟内存

← 操作系统职责与内核架构 内存管理与虚拟内存→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式