I虚拟化
把一份 CPU 和一份物理内存,表现成许多进程各自以为「独占」。这是机制,不是某家虚拟化硬件的广告。
进程:资源单位
进程带着独立地址空间和 PCB。创建常见路径是复制后再换映像。切换要保存内核上下文;跨进程还要换页表。未引入线程时,进程同时是调度单位。
调度:谁上 CPU
低级调度只从就绪队列挑人。FCFS 的典型问题是护航效应(短作业被长作业挡住)。非抢占 SJF 可能使长作业饥饿。RR 通常避免饥饿,但时间片过小会增加切换开销;不要说轮转「最公平」。作业调度、交换调度是另外两级。
地址空间与缺页
VPN 经 TLB 或页表得到页框号。存在位为 0 只表示未驻留;访问合法页才缺页。有空闲页框就直接调入,没有才走置换。缺页进程常因磁盘 I/O 阻塞,系统仍可能调度别人。
II并发
并发是宏观上多个任务推进,单核交替即可;并行才是同一时刻真正同时执行。二者不是同义词。
线程
线程共享本进程地址空间,自有栈与 TCB,是调度单位。多对一模型里,一个阻塞型系统调用可能拖住整个进程。不要写「线程有独立地址空间」。
锁与信号量
临界区要空闲让进、忙则等待、有限等待;让权等待避免空转。记录型信号量 P/V 必须原子;值减到小于 0 就阻塞。有界缓冲用 empty / full / mutex,先等空槽或满槽,再抢互斥锁。
死锁
互斥、占有并等待、不可抢占、循环等待同时成立才可能死锁,且只卡住相关进程集合。银行家是避免(查安全序列),不是预防。
III持久化
把易失的内存状态落到磁盘,并在崩溃后还能讲出一个一致的故事。
设备与 DMA
程序轮询、中断驱动、DMA、通道是 CPU 介入粒度的谱。DMA 传送过程不逐字节占用 CPU,但启动与完成中断仍要内核参与。
文件与打开
文件系统是软件:命名、权限、盘块分配。磁盘控制器是 I/O 硬件。fd 是进程文件描述符表里的整数索引,指向系统打开文件表项。两次 open 通常两套偏移;dup 共享同一表项。
崩溃一致性
一次「创建文件并写数据」会动目录、inode、数据块、位图。中途掉电可能出现悬空 inode 或丢失数据。日志、写时复制、fsck 是不同代价的修补策略。本笔记只要求能说出「为什么不能假设多块写是原子的」。