进程与线程
引入
词汇
| English | 释义 | 拼音 |
|---|---|---|
| operating systems | 操作系统 | cāo zuò xì tǒng |
| process/ˈprəʊses/ | 进程 | jìn chéng |
| states/steɪts/ | 状态 | zhuàng tài |
| ready | 就绪 | jiù xù |
| running | 运行 | yùn xíng |
| blocked/blɒkt/ | 阻塞 | zǔ sè |
| thread | 线程 | xiàn chéng |
| process control block/ˈprəʊses kənˈtrəʊl blɒk/ | 进程控制块 | jìn chéng kòng zhì kuài |
| context switch/ˈkɒntekst swɪtʃ/ | 上下文切换 | shàng xià wén qiè huàn |
第一个幻象
- 操作系统 operating systems 层把一个处理器变成许多台机器。进程 process 是运动中的程序:自己的地址空间、寄存器、打开的文件。
- 进程经历五个状态 states:新建、就绪 ready(只等 CPU)、运行 running、阻塞 blocked(等设备)、终止。线程 thread 是进程内的一条执行流——共享空间、自有栈。

{exercise:uni-cs0701-states}
练习
等待磁盘 I/O 的进程处于——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
阻塞等设备;就绪只等 CPU。
PCB 与切换
- 挂起进程时 OS 要保存进程控制块 process control block——寄存器、程序计数器、页表指针、打开文件。上下文切换 context switch 正是这组存取。
- 按课程时序,2 GB/s 存取 2000 字节花 1 µs——外加缓存污染。切线程跳过地址空间(共享),所以更便宜。
{exercise:uni-cs0701-switch}
练习
切线程比切进程便宜,因为线程——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
线程共享地址空间,切换时跳过它——只动栈和寄存器。
一次缺页的旅程与线程的价钱
- 进程 A 缺页:运行转阻塞(磁盘);调度器派发 B;磁盘完成;A 转就绪;稍后再运行——缺页指令重启,工作零丢失。
- Web 服务器每连接一条线程:共享缓存,创建加切换约 50 µs;换成进程约 500 µs。共享是线程的意义——也是 7.3 单元的危险。
例子
阻塞不是就绪:阻塞等设备,就绪只等 CPU。
{exercise:uni-cs0701-thread}
练习
崩溃的线程会带走——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
一个地址空间:线程崩即进程崩。