整本操作系统只回答一个问题:有限的 CPU、内存、磁盘和设备,怎么分给同时运行的多个程序,还不能让它们打架。四大管理模块各管一种资源;第 1 章讲的特权级、系统调用和中断,是把它们拼在一起的框架。
点任意模块看它的"演进链",每一项技术都是为了解决上一项留下的问题。切到"路径"标签,看一次真实操作怎样穿过整个系统。
每个模块正下方就是它管理的那种硬件。
横着对比:每种资源都先抽象成一个好用的概念,再用一张描述表登记它,然后用某种策略分配,最后处理共享冲突和速度问题。复习时每学一个模块,就去填这张表里的那一列。
| 处理机 | 内存 | 文件 | 设备 | |
|---|---|---|---|---|
| 管的是什么 | CPU 时间 | 内存空间 | 磁盘上的数据 | 各种外设 |
| 抽象成 | 进程 / 线程 | 虚拟地址空间 | 文件与目录 | 逻辑设备(设备独立性) |
| 描述表 | PCB | 页表 / 段表 | FCB / inode | DCT · COCT · CHCT · SDT |
| 组织方式 | 就绪队列、阻塞队列 | 空闲分区链、空闲页框 | 目录树、FAT、索引块 | 设备等待队列 |
| 分配策略 | 调度算法 | 分区算法、置换算法 | 物理分配方式、空闲空间管理 | 设备分配、磁盘调度 |
| 共享与冲突 | 同步互斥、死锁 | 共享页 / 段、存储保护 | 硬链接 / 软链接、存取控制 | 独占 vs 共享、SPOOLing |
| 提速手段 | 线程、多级反馈队列 | TLB、多级页表 | 打开文件表、索引 | 缓冲、DMA、通道 |
遇到没见过的机制,先想它属于下面哪一种,基本就能猜出它为什么存在。
让每个程序都以为自己独占了资源。
把常用的东西放得更近一些。
管理就是用一张表记下来,再把等待者排成队。