操作系统

Book Notes · 03 · MOS

现代操作系统
核心章笔记

按问题重组:进程与调度、内存、文件、设备、死锁,外加多处理机与安全的视野。不复印原书目录。例程随版次会变,机制口径与全书对齐。

01进程与调度

大内核把多数服务放在内核态;微内核尽量少留。Linux 是可加载模块的单体内核,复习时不要写成微内核。

状态与 PCB

PCB 是进程存在的标志。阻塞是等事件,挂起才把映像换到外存。唤醒进入就绪,不是马上占用 CPU。

调度指标

无 I/O 的典型题:等待 = 周转 − CPU 服务。一般情形还要扣阻塞时间,以题面为准。SJF 的「平均等待最优」需要同时就绪且服务时间已知。

02内存管理

固定分区典型内碎片,动态分区典型外碎片;分页最后一页可能有页内碎片。

分段检查

段号合法、偏移小于限长,以及本次读/写/执行是否满足保护位。失败是保护/越界异常,不是缺页。

虚存

请求调页依赖局部性。分配给进程的页框数小于其当前工作集需求时,容易频繁缺页并发生抖动。Clock 只是 LRU 近似,不要断言它一定没有 Belady。

易错:连续分配「一律外碎片」、分页「一律内碎片」——要按固定/动态/分页分开说。

03文件系统

文件系统组织名字与盘块;它不是磁盘控制器。

分配与空闲

连续分配随机访问快但外碎片严重;链接相反;索引折中。成组链接在一个空闲块里存放多块号,末项指向下一组,减少逐块遍历和相关磁盘访问。

打开

fd 是进程文件描述符表中的整数索引。两次 open 通常两套偏移;dup 共享系统打开文件表项。

04设备与 I/O

控制方式与假脱机

DMA 减少逐字节占用,但不等于 CPU 完全不管。SPOOLing 用磁盘井把独占设备变成可共享的虚拟设备,现代实现是联机的。

磁盘臂

SSTF 可能让远端饥饿。SCAN 扫到磁盘端点再折返;LOOK 只到当前方向最远的待服务请求即折返。二者不要混成一句。

05死锁

四个必要条件同时成立才可能发生。破坏任一条件,死锁不能成立——等待环仍可能短暂出现(例如允许抢占时),但会被打破。

互斥+占有等待+不可抢占+循环等待

预防拆条件;避免用安全序列(银行家);检测允许发生后再化简图;解除靠撤销或剥夺。死锁只让相关进程集合停住,无关进程仍可运行。

06广角:多处理机与安全

多核让并行成为可能,但并发编程的正确性仍取决于同步,不取决于核数。安全一章的访问控制、可信计算基,本站只要求能和用户态/内核态边界对上:特权指令不能在用户态执行。

虚拟化、移动与云的产业叙述放到 industry.html(批次 5),此处不展开过时份额数字。

章末自测

预防从策略上拆掉某个必要条件。避免允许这些条件存在,但拒绝导致不安全状态的本次分配。银行家属于避免。
LOOK 到当前方向最远请求就折返;SCAN 走到盘的端点再折返。
不是。教材比的是结构与典型代价。主流通用内核多为单体内核加可加载模块。