【计算机基础速成】第十课:操作系统入门与进程、线程

3 小时前

【计算机基础速成】第十课:操作系统入门与进程、线程

1. 这节课的目标

进程和线程是操作系统面试中的超级高频基础题。

面试官经常会问:

  • 什么是进程?
  • 什么是线程?
  • 进程和线程有什么区别?
  • 为什么线程切换开销更小?
  • 线程安全是什么?

这节课学完后,你至少要做到:

  • 能说清进程和线程分别是什么
  • 能回答进程和线程的区别
  • 能解释为什么线程切换开销更小
  • 对并发和线程安全建立最基础认知

2. 先建立最小认知

一句话理解

  • 进程:程序运行起来后的一个独立执行单位
  • 线程:进程中的一个执行流

更容易理解的类比

你可以把“进程”理解成一个工厂,把“线程”理解成工厂里的工人。

  • 工厂有自己的空间和资源
  • 工人共享工厂里的很多资源
  • 一个工厂里可以有多个工人同时干活

这个类比虽然不完全严谨,但特别适合你现在快速建立直觉。

Mermaid Loading...

3. 什么是进程

一句话理解

进程是操作系统进行资源分配和调度的基本单位。

面试标准答法

进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位。每个进程通常拥有自己独立的地址空间、代码、数据和系统资源。

怎么理解

比如你打开一个微信、一个浏览器、一个 IDE,它们在操作系统里通常都对应不同的进程。


4. 什么是线程

一句话理解

线程是进程中的一个执行单元,也是 CPU 调度的基本单位。

面试标准答法

线程是进程中的一个执行单元,是 CPU 调度的基本单位。一个进程中可以包含多个线程,这些线程通常共享进程的地址空间和大部分资源。

怎么理解

比如浏览器这个进程里,可能有:

  • 渲染线程
  • 网络线程
  • JS 执行线程

它们都属于同一个进程,但承担不同工作。


5. 进程和线程的关系

一句话理解

线程不能脱离进程单独存在,线程通常依附于进程。

你可以这样记

  • 先有进程这个“容器”
  • 再有线程这些“执行流”
Mermaid Loading...

6. 进程和线程的区别

这是必背题。

对比项进程线程
定义资源分配和调度的基本单位CPU 调度的基本单位 / 执行单元
资源通常拥有独立资源空间共享所属进程的大部分资源
开销创建和切换开销更大创建和切换开销更小
稳定性一个进程崩溃一般不直接影响其他进程一个线程异常可能影响整个进程
通信进程间通信更复杂线程间通信更方便

面试标准答法

进程和线程的主要区别在于资源占用和调度粒度。进程是资源分配和调度的基本单位,通常拥有独立的地址空间;线程是进程中的执行单元,多个线程共享进程资源,因此线程的创建和切换开销通常更小,但线程之间也更容易产生同步和安全问题。

Mermaid Loading...

7. 为什么线程切换开销更小

这也是常见追问题。

核心原因

因为线程共享所属进程的大部分资源,所以在线程切换时,不需要像进程切换那样切换大量独立资源和地址空间。

你现在可以这样理解

  • 进程切换:像“换一个工厂干活”
  • 线程切换:像“同一个工厂里换一个工人干活”

显然,后者通常更轻。

面试标准答法

线程切换开销通常比进程切换小,主要是因为同一进程中的线程共享地址空间和大部分资源,不需要像进程切换那样进行更重的资源切换和上下文切换。


8. 什么是并发

一句话理解

并发就是多个任务在一段时间内交替推进。

你现在不用纠结太深

面试里如果问到并发,你先能说出:

  • 多个任务一起推进
  • 可能涉及多个线程
  • 会带来资源竞争问题

就够用了。

面试标准答法

并发指的是多个任务在同一时间段内交替执行或推进。在操作系统和后端开发中,并发常常意味着多个线程或多个请求同时竞争系统资源,因此需要考虑同步和线程安全问题。


9. 什么是线程安全

这也是后端岗位特别爱问的基础概念。

一句话理解

多个线程同时访问同一份数据时,结果仍然正确,这就叫线程安全。

举个例子

假设一个变量初始值是 0。

两个线程同时执行:

count = count + 1

如果没有任何控制,理论上最后结果可能不是 2,而是 1。

这就是并发下的数据冲突问题。

面试标准答法

线程安全指的是在多线程并发访问共享资源时,程序依然能够表现出正确的行为,不会因为线程切换或竞争条件而出现数据错误或状态异常。

Mermaid Loading...

10. 为什么线程会带来安全问题

核心原因

因为多个线程共享同一进程的大部分资源。

共享资源带来的好处是:

  • 通信方便
  • 开销更低

但代价就是:

  • 容易互相影响
  • 容易产生竞争条件

这也是为什么后面要学习:

  • 同步
  • 互斥
  • 死锁

11. 一套适合面试的完整答法

如果面试官问:

你说一下进程和线程。

你可以这样答:

进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位,
通常拥有独立的地址空间和资源。
线程是进程中的一个执行单元,也是 CPU 调度的基本单位,
一个进程中可以有多个线程,这些线程共享进程的大部分资源。
相比进程,线程的创建和切换开销通常更小,线程之间通信也更方便,
但因为共享资源,所以也更容易带来线程安全和同步问题。

这版回答已经很适合实习面试。


12. 本课高频面试题

12.1 什么是进程

标准回答

进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位,通常拥有独立的地址空间和系统资源。


12.2 什么是线程

标准回答

线程是进程中的一个执行单元,也是 CPU 调度的基本单位,一个进程中可以包含多个线程,这些线程通常共享进程资源。


12.3 进程和线程有什么区别

标准回答

进程通常拥有独立资源空间,创建和切换开销更大;线程共享所属进程的大部分资源,创建和切换开销更小,通信更方便,但也更容易出现线程安全问题。


12.4 为什么线程切换开销更小

标准回答

因为线程共享进程的大部分资源和地址空间,所以在线程切换时,不需要像进程切换那样切换大量独立资源,因此开销通常更小。


12.5 什么是线程安全

标准回答

线程安全指的是多个线程并发访问共享资源时,程序仍然能够表现出正确行为,不会因为竞争条件导致数据错误或状态异常。


13. 本课最小记忆卡片

卡片 1

  • 进程:资源分配和调度的基本单位

卡片 2

  • 线程:进程中的执行单元
  • CPU 调度的基本单位

卡片 3

  • 进程:资源独立
  • 线程:共享资源

卡片 4

  • 线程切换更轻
  • 因为共享地址空间和大部分资源

卡片 5

  • 并发:多个任务在一段时间内推进

卡片 6

  • 线程安全:多线程访问共享资源仍然正确

14. 课后练习

14.1 口头复述题

请你尝试不看讲义回答:

  1. 什么是进程?
  2. 什么是线程?
  3. 进程和线程有什么区别?
  4. 为什么线程切换开销更小?
  5. 什么是线程安全?

14.2 今日最低完成标准

如果今天时间不多,至少完成下面任务:

  1. 背会本课 6 张最小记忆卡片
  2. 能完整回答进程和线程的区别
  3. 能说出线程为什么更容易带来线程安全问题

15. 下一课预告

第十一课:线程同步、互斥与死锁

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...