这题本质上是在问:上下文切换时,到底切了什么,为什么线程切换成本通常更低。
一、什么是上下文切换
CPU 在某一时刻只能执行一个线程或一个进程中的线程。当操作系统暂停当前执行单位,转而去运行另一个执行单位时,就发生了上下文切换。
所谓上下文,就是为了让任务将来还能从原位置继续执行,需要保存下来的那一组运行状态。
典型包括:
- 程序计数器
- 寄存器值
- 栈指针
- 调度状态
如果这些信息不保存,下次切回来时,程序就不知道该从哪里继续执行。
2026/3/26...大约 3 分钟
这题本质上是在问:上下文切换时,到底切了什么,为什么线程切换成本通常更低。
CPU 在某一时刻只能执行一个线程或一个进程中的线程。当操作系统暂停当前执行单位,转而去运行另一个执行单位时,就发生了上下文切换。
所谓上下文,就是为了让任务将来还能从原位置继续执行,需要保存下来的那一组运行状态。
典型包括:
如果这些信息不保存,下次切回来时,程序就不知道该从哪里继续执行。
程序、进程、线程是操作系统里最基础的一组概念。
如果这几个概念没理顺,后面再学调度、同步、上下文切换、虚拟内存时会很容易混。
程序是静态的。
它本质上是一份还没有运行起来的代码和数据,例如一个可执行文件、一个 jar 包、一个二进制镜像。
程序本身不会主动执行,它只是“可以被执行的内容”。
进程是动态的。
它是程序运行起来之后的一个实例,除了代码本身,还包括运行状态和系统分配给它的各种资源。
一个进程通常会包含: