1393 字
4 分钟
OS笔记(一):进程与线程简介
OS笔记(一):进程与线程简介
本文是操作系统笔记系列的第一篇,从最基础的概念讲起,帮助大家理解进程和线程到底是什么、有什么区别、在Linux中如何查看和管理。
📚 目录
一、什么是进程?
1.1 程序 vs 进程
| 概念 | 定义 | 特点 |
|---|---|---|
| 程序 | 存放在磁盘里的可执行文件 | 静态的,是一个文件 |
| 进程 | 程序的一次执行过程 | 动态的,是一个活动 |
关键理解:同一个程序多次执行会对应多个进程。比如你打开两个Chrome浏览器窗口,虽然程序文件是同一个,但它们是两个不同的进程。
1.2 进程的定义
进程(Process)是操作系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间、文件描述符、环境变量等。
二、进程的组成
一个进程由三部分组成:
2.1 PCB(进程控制块)
PCB(Process Control Block)是进程存在的唯一标志。进程创建时会创建PCB,进程结束时会回收PCB。
PCB中存储的信息包括:
| 信息 | 说明 |
|---|---|
| PID | 进程ID,系统中唯一标识一个进程 |
| 进程状态 | 运行态、就绪态、阻塞态等 |
| 程序计数器 | 下一条要执行的指令地址 |
| 寄存器值 | CPU寄存器的当前值 |
| 内存管理信息 | 页表、段表等 |
| I/O状态信息 | 打开的文件、分配的设备等 |

2.2 程序段
程序段存放的是要执行的代码指令。
2.3 数据段
数据段存放的是程序运行时使用的数据(如全局变量、静态变量等)。
重点理解:
- PCB是给操作系统用的,用于管理和控制进程
- 程序段、数据段是给进程自己使用的

三、进程的特征
| 特征 | 说明 |
|---|---|
| 动态性 | 进程是程序的一次执行过程,有创建、执行、消亡的生命周期 |
| 并发性 | 多个进程可以同时存在于内存中,并发执行 |
| 独立性 | 进程是资源分配的基本单位,各进程的地址空间相互独立 |
| 异步性 | 进程按各自独立的、不可预知的速度向前推进 |
| 结构性 | 进程由程序段、数据段和PCB三部分组成 |

四、什么是线程?
4.1 线程的概念
线程(Thread)可以理解为轻量级进程。它是CPU执行的基本单位,也是程序执行流的最小单位。
4.2 为什么需要线程?
引入线程的目的:
- 提高并发度:一个进程内的多个线程可以并发执行
- 减少开销:线程切换比进程切换开销小得多
- 共享资源:同一进程的线程共享进程的内存空间和资源
4.3 线程的特点
| 特点 | 说明 |
|---|---|
| 线程是处理机调度的基本单位 | CPU分配是分配给线程的 |
| 线程几乎不拥有系统资源 | 资源由进程拥有 |
| 同一进程的线程共享进程资源 | 共享内存地址空间、文件等 |
| 线程切换开销小 | 不需要切换地址空间 |
五、进程与线程的区别
| 对比项 | 进程 | 线程 |
|---|---|---|
| 资源分配 | 资源分配的基本单位 | CPU调度的基本单位 |
| 地址空间 | 每个进程有独立的地址空间 | 同一进程的线程共享地址空间 |
| 开销 | 创建、切换、销毁开销大 | 创建、切换、销毁开销小 |
| 通信 | 需要IPC机制(管道、消息队列等) | 可以直接读写共享变量 |
| 崩溃影响 | 一个进程崩溃不影响其他进程 | 一个线程崩溃可能导致整个进程崩溃 |
六、Linux实战:查看进程和线程
6.1 查看进程
# 查看当前用户的进程ps
# 查看所有进程ps -ef
# 查看进程树pstree
# 实时监控进程top6.2 查看进程详细信息
# 查看特定进程的详细信息ps -p <PID> -f
# 查看进程的内存使用ps -p <PID> -o pid,ppid,cmd,%mem,%cpu
# 查看进程打开的文件lsof -p <PID>6.3 查看线程
# 查看进程的线程ps -T -p <PID>
# 查看所有线程ps -eLf
# 使用top查看线程top -H6.4 进程管理命令
# 启动一个进程./my_program &
# 终止进程kill <PID>
# 强制终止进程kill -9 <PID>
# 查看进程状态cat /proc/<PID>/status6.5 实际案例:理解进程和线程
# 启动一个Python程序,观察进程和线程python3 -c "import threadingimport time
def worker(): time.sleep(60)
# 创建3个线程for i in range(3): t = threading.Thread(target=worker) t.start()
time.sleep(60)" &
# 查看进程ps -ef | grep python
# 查看线程ps -T -p <PID>七、本章小结
核心概念
| 概念 | 要点 |
|---|---|
| 进程 | 程序的一次执行过程,资源分配的基本单位 |
| 线程 | CPU执行的基本单位,轻量级进程 |
| PCB | 进程存在的唯一标志 |
| 区别 | 进程独立、线程共享;进程开销大、线程开销小 |
考研/期末常见考点
- 进程和程序的区别(动态vs静态)
- 进程的组成(PCB、程序段、数据段)
- PCB的作用(进程存在的唯一标志)
- 进程和线程的区别(资源分配、开销、通信)
- 线程的实现方式(用户级、内核级)
思考题
- 为什么说PCB是进程存在的唯一标志?
- 引入线程后,进程的作用发生了什么变化?
- 用户级线程和内核级线程有什么区别?
下一篇:OS笔记(二):进程的状态与转换
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
OS笔记(一):进程与线程简介
https://emilia520.icu/posts/os-211212进程与线程简介/ 部分信息可能已经过时
相关文章 智能推荐
1
OS笔记(五):线程
操作系统 深入理解操作系统中线程的概念、实现方式、多线程模型,以及Linux线程管理实践
2
OS笔记(二):进程的状态与转换
操作系统 深入理解操作系统中进程的五种状态、状态转换条件,以及在Linux中如何观察进程状态
3
OS笔记(三):进程控制
操作系统 深入理解操作系统中原语的概念、进程的创建/终止/阻塞/唤醒/切换机制,以及Linux中的进程管理实践
4
OS笔记(六):调度的概念、层次
操作系统 深入理解操作系统中调度的三个层次、七状态模型,以及Linux进程调度机制
5
OS笔记(四):进程通信
操作系统 深入理解操作系统中进程间通信的三种方式:共享存储、消息传递、管道通信,以及Linux IPC实战








