目录
1. 简单理解
CPU:一座(电力有限的)工厂

- 电力一次只能供给一个车间运行:单个CPU一次只能运行一个任务
- 注:多核的CPU就像有了多个发电厂,使多工厂(多进程)实现可能。
进程:工厂的车间——”容器“
- 进程代表CPU所能处理的单个任务
- 任一时刻,CPU总是运行一个进程,其他进程处于非运行状态
线程:(同一个)车间里的工人——容器中的“工作单位”

-
一个车间里,可以有很多工人:一个进程可以包括多个线程
-
(同一进程的)线程共享空间:一个进程的内存空间是共享的,每个线程都可以使用共享内存
进程的空间:车间的空间

(1)空间仅容纳一人:使用互拆锁(Mutual exclusion)
- 每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所:代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存
- 门口加锁防止他人进入:“互斥锁”(
Mutual exclusion,缩写Mutex),防止多个线程同时读写某一块内存区域
(2)空间可容纳 n 个人:使用信号量(Semaphore)
- 还有些房间,可以同时容纳n个人,比如厨房:这好比某些内存区域,只能供给固定数目的线程使用
- 在门口挂n把钥匙,进去的人就取一把钥匙,出来时再把钥匙挂回原处:这种做法叫做"信号量"(
Semaphore),用来保证多个线程不会互相冲突
(3) 说明
mutex是semaphore的一种特殊情况(n=1时),因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。
2. 本质核心
进程和线程简单而基本靠谱的定义如下:
- 进程:程序的一次执行
- 线程:CPU的基本调度单位
注:线程其实是轻量级进程(Lightweight Process,LWP)
关于多进程和多线程,教科书上最经典的一句话是:”进程是资源分配的最小单位,线程是CPU调度的最小单位。“
结合上面的简单理解:
进程是一个正在执行的任务(程序),由CPU来分配一个容器,一个空间;而线程就是在这个空间中具体完成这个任务的单位。
进程
进程分类
- 系统进程
- 用户进程
- 父进程
- 子进程
进程的状态
(1)三态模型
- 就绪
- 运行
- 阻塞
(2)五态模型
线程
3. 代码实例
3.1 多进程
3.2 多线程
参考总结的 Python 多线程:Python 多线程:伪多线程?详细代码总结
4. 更多:操作系统
(待看)
参考:

&spm=1001.2101.3001.5002&articleId=112507183&d=1&t=3&u=0c346c6424d74aa7ac96c30a56ec136a)
1677

被折叠的 条评论
为什么被折叠?



