
简介这份复习笔记面向高校计算机专业学生聚焦操作系统期末备考场景系统梳理课程核心概念与关键机制帮助读者在考前快速建立知识框架、查漏补缺。资源包共1个文件为docx格式文档压缩包约1.17MB内容按章节组织便于按模块检索复习。笔记覆盖操作系统的目标与特性、发展历程与主要功能并深入进程管理部分包括前趋图与程序并发执行特征、进程三态与五态转换、进程控制块PCB、内核原语以及信号量机制、管程、经典同步互斥问题与进程通信等要点对易混淆概念如并发与并行、互斥共享与同时访问均有辨析。目前已有779人学习下载适合需要系统梳理考点、对照课堂笔记查漏补缺的本科生期末复习使用。1. 操作系统期末复习一张从目标到 I/O 的全景地图操作系统这门课最坑的地方在于翻开目录觉得每章都眼熟合上书却串不起来——进程、内存、文件、设备像四座孤岛考场上考到「页面置换和进程调度有什么共性」脑子直接空白。这份期末复习笔记的价值就是把散落在六章里的概念压成一条主线操作系统用「并发、共享、虚拟、异步」四个特性管理四类资源而所有算法都在「效率」和「公平」之间做取舍。适合已经过了一遍教材、正在做知识串联和查漏补缺的人。下面按「目标与特性 → 进程与同步 → 调度与死锁 → 内存管理 → 虚拟存储 → I/O 与磁盘」六块梳理每块给出重点、易错点和可抄的对比表最后落到一份能直接照着走的复习清单。2. 目标与四大特性并发、共享、虚拟、异步怎么串这一章是整门课的地基期末选择题和简答题的高频区。很多人背了四个特性的定义却答不出「为什么是这四个」——因为它们不是并列罗列而是有因果链的并发是前提共享是结果虚拟是手段异步是代价。梳理下来会发现后面所有章节进程同步、内存扩充、SPOOLing本质上都是在处理这条链上的具体问题。2.1 操作系统的目标与发展脉络操作系统的四个目标里方便性和有效性是最重要的两个可扩充性和开放性是长期演进的要求。方便性指把程序语言转成机器语言、让计算机易学易用有效性指提高资源利用率和系统吞吐率。这两个目标经常互相拉扯批处理系统追求有效性分时系统追求方便性及时响应实时系统则把「在截止时间前完成」当成硬指标。发展脉络要能按顺序说清每一代解决了什么问题阶段核心特征解决的核心矛盾人工操作无 OS用户独占资源利用率极低单道批处理每次只有一个作业在内存资源利用率仍低CPU 等 I/O多道批处理I/O 时调度下一程序CPU 始终运行吞吐量提升但无交互分时系统作业直接进内存 时间片轮转及时响应用户多终端交互实时系统以截止时间为关键参数及时性与确定性多道批处理的关键句要背准上一个程序做 I/O、CPU 空闲时调度下一程序执行让 CPU 始终处于运行状态。分时系统的两个实现条件是「作业直接进入内存」和「时间片轮转法」这两点经常被合并成一句模糊的话答题时拆开写才拿分。实时系统的区别不在「快」而在「把时间作为关键参数在截止时间之前做完」。2.2 四大基本特性并发和并行的区别是送分题也是送命题并发与并行的区分几乎年年考。并行是同一时刻同时进行需要多处理机并发是同一时间间隔内宏观同时、微观异步。并发通过引入进程来实现。共享是最基本的特性指资源可供多个并发进程共同使用分互斥共享如打印机一段时间只给一个进程和同时访问如磁盘的并发访问。这里有个常被忽略的逻辑关系并发和共享相辅相成——没有并发就谈不上共享没有共享并发也无法推进。虚拟靠复用技术实现时分复用是把一个物理设备的时间片轮流分给多个用户如 CPU 分时空分复用是把一个物理空间分成多个逻辑空间如虚拟存储。异步则是进程「停停走走」、以不可预知的速度推进——它不是优点而是并发带来的必然代价进程同步机制就是为了把这种不可预知性约束住。2.3 五大功能与易混的接口划分处理机管理进程控制、同步、通信、调度、存储器管理分配、保护、地址映射、扩充、设备管理缓冲、分配、处理、文件管理存储空间、目录、读写保护加上用户接口和程序接口。这里最容易错的是把「调度」只记成进程调度——处理机管理里的调度包含作业调度和进程调度两个层次第三章会展开成三级调度。提示四大特性和五大功能是两张皮答题时不要混着写。特性回答「操作系统是什么样的」功能回答「操作系统做什么」。3. 进程与同步PCB、三态图和信号量机制第二章是全书分值最重、也最容易翻车的一章。核心逻辑是程序并发执行破坏了封闭性和可再现性 → 需要进程这个抽象 → 进程异步推进 → 需要同步机制约束 → 信号量是同步的通用工具。把这条链记住零散的知识点就有了挂靠点。3.1 前趋图、进程特征与状态转换程序顺序执行有顺序性、封闭性、可再现性三个特征并发执行则变成间断性、失去封闭性、不可再现性。前趋图就是用来描述这种顺序与并发关系的工具。进程的四个特征动态性最基本、并发性、独立性、异步性。状态机是必考图三态图就绪、执行、阻塞加上创建态和终止态构成五态图再引入挂起状态。要能说清每条转换边的触发条件——就绪→执行是调度执行→就绪是时间片用完执行→阻塞是等待 I/O 或资源阻塞→就绪是事件完成。阻塞态不能直接到执行态这是最常见的错误选项。PCB进程控制块的作用要背四条作为独立运行基本单位的标志、能实现间断性运行、提供进程管理与调度所需信息、实现与其他进程的同步与通信。PCB 里的信息分四类进程标识符含内部标识符、进程调度信息、进程控制信息。进程控制由内核中的原语实现原语靠关中断/开中断保证不可中断。内核分支撑功能中断处理、时钟管理、原语操作和资源管理功能进程、存储器、设备管理。处理机状态分系统态核心态、管态和用户态系统调用是用户态进入内核态的唯一正规入口。3.2 同步机制从四种软件方法到信号量进程同步要解决的是异步问题本质是对多个相关进程执行次序的协调。制约关系分两种间接相互制约通过临界资源和直接相互制约相互合作。临界区是每个进程中访问临界资源的那段代码。同步机制四条准则必须一字不差空闲让进、忙则等待、有限等待、让权等待。四种软件实现单标志法、双标志先检查、双标志后检查、Peterson 算法和三种硬件实现中断屏蔽、TSL 指令、Swap 指令的共同缺陷是都无法实现让权等待这正是引入信号量的直接动机。信号量机制用一对原语 wait(S) 和 signal(S)即 P、V 操作对信号量操作。四种信号量的演进关系是简答题常客类型核心思想优点缺点整型信号量一个整型变量表示资源数初值设 1 即可实现互斥不满足让权等待忙等记录型信号量增加等待队列value0 时绝对值表示阻塞进程数实现让权等待有物理意义一次只能处理一类资源AND 型信号量所有资源一次性全分配避免死锁调度单位仍为 1效率低信号量集Swait(S1,t1,d1,…) 一次申请多类多量解决 N 个资源需 N 次 wait 的低效参数复杂易出错记录型信号量的物理意义要能张口就来value≥0 表示当前可用资源数value0 时其绝对值表示阻塞队列中的进程数。用信号量实现互斥的模板是划定临界区 → 设 mutex 初值 1 → 临界区前 wait(mutex) → 临界区后 signal(mutex)。实现同步则是设同步信号量初值 0前操作后 signal、后操作前 wait。实现前驱关系时每一对前驱关系各设一个同步变量这是最容易漏的一步。// 用信号量实现生产者-消费者互斥 同步的组合模板 semaphore mutex 1; // 互斥访问缓冲区 semaphore empty n; // 空闲缓冲区数量 semaphore full 0; // 已放入的产品数量 // 生产者 wait(empty); // 先申请空位再抢互斥锁 wait(mutex); // 放入产品 signal(mutex); signal(full); // 消费者 wait(full); // 先确认有产品再抢互斥锁 wait(mutex); // 取出产品 signal(mutex); signal(empty);这段代码的关键不在语法而在两个 wait 的顺序不能反如果生产者先 wait(mutex) 再 wait(empty)当缓冲区满时生产者持锁阻塞消费者永远拿不到锁直接死锁。这是血泪经验级别的易错点考场上写反顺序基本零分。3.3 管程与经典问题管程的思想是把共享变量及其全部操作封装在一个对象内部每次只允许一个进程进入管程把同步的复杂性从调用方转移到管程内部。经典三大问题——生产者消费者同步互斥、哲学家进餐死锁避免、读者写者读优先/写优先的计数控制——要能画出信号量设置并说明每个信号量的含义。进程通信是进程间的信息交换互斥与同步属于低级进程通信线程则是比进程更小的基本单位让一个进程内可并发处理多个任务从而提升系统并发性。4. 调度与死锁三级调度、五类算法和银行家算法第三章的主线是「资源怎么分给谁」调度决定 CPU 给谁死锁处理决定资源分配失败时怎么办。这两块在计算题里高度绑定——周转时间、响应比、安全序列都是必练的手算题。4.1 三级调度与五类调度算法三级调度要按「发生在哪、频率高低、解决什么」来记层次别名作用频率高级调度作业调度外存→内存作业进入内存最低中级调度内存调度挂起态→就绪态提高内存利用率和吞吐量中等低级调度进程调度就绪态→运行态最基本、频率最高最高五类算法的适用场景和指标要能对比着说。FCFS公平、实现简单但交互性差SJF平均等待时间和平均周转时间最短对短作业有利但长作业可能饥饿HRRN用响应比 (等待时间要求服务时间)/要求服务时间 综合了等待与运行时间时间片轮转用于分时系统时间片太大退化为 FCFS太小则进程切换开销压垮系统优先级调度用于实时系统能区分任务紧急程度。周转时间 完成时间 − 到达时间这个公式要刻进肌肉记忆。实时调度还有两个专属概念最早截止时间优先和最低松弛度优先后者公式为「松弛度 完成截止时间 − 剩余服务时间 − 当前时间」松弛度越小越紧急。优先级倒置指低优先级进程因持有高优先级进程所需资源而间接压过高优先级进程是实时系统里的经典坑。4.2 死锁四个必要条件与银行家算法死锁是多个进程因竞争资源互相等待、无外力则无法推进。四个必要条件互斥、请求和保持、不可抢占、循环等待缺一不可。处理策略分三档预防破坏必要条件之一、避免银行家算法防止进入不安全状态、检测与解除允许发生再处理。银行家算法的思路要能复述进程提出请求时先预判此次分配是否会导致系统进入不安全状态会则暂不分配、让进程阻塞。安全状态一定不会死锁不安全状态只是「可能」死锁——这个措辞差别是判断题的常设陷阱。死锁解除的两种终止方式终止所有死锁进程 / 逐个终止各有代价逐个终止代价可能更大因为接近完成的进程被终止等于前功尽弃。4.3 易错点调度与死锁里最容易翻车的四处易漏点一把「不安全状态」等同于「死锁」。为什么漏两个词都带负面色彩背的时候容易合并。怎么补记住「安全→一定不死锁不安全→可能死锁」银行家算法判的是安全性不是死锁本身。易漏点二SJF 的「短」指什么。为什么漏只记「运行时间短优先」忘了它比较的是要求服务时间而非已等待时间。怎么补做题时先列出每个进程的服务时间再排序别凭感觉。易漏点三时间片轮转的时间片取值影响。为什么漏只记「轮转」二字忽略退化关系。怎么补把「太大→退化为 FCFS太小→切换开销大」当成一对固定搭配背。易漏点四死锁预防与避免混淆。为什么漏两者都在「事前」处理边界模糊。怎么补预防是静态破坏必要条件避免是动态判断安全性银行家算法一个改规则、一个改决策。5. 内存管理装入链接、分区算法与分页分段第四章从「程序怎么进内存」讲到「内存怎么切块分配」。核心矛盾是连续分配产生碎片、离散分配需要地址变换分页和分段就是两种离散方案而它们的区别几乎是每年必考的一道对比题。5.1 装入、链接与连续分配程序运行要经过编译、链接、装入三步。装入方式三种绝对装入只适用单道编译时已知绝对地址、可重定位装入静态重定位装入时一次性把逻辑地址转物理地址运行中不能移动、动态运行时装入装入时不转换真正执行时才转支持运行时移动。链接方式分静态链接、装入时动态链接、运行时动态链接。连续分配四类单一连续分配系统区一个用户区、固定分区分配用户空间切固定大小区域、动态分区分配空闲分区表/链、动态可重定位分区分配多了紧凑功能。基于顺序搜索的四种动态分区算法要对比记忆算法搜索方式碎片特点首次适应 FF从链首找第一个够大的低地址区碎片多循环首次适应 NF从上一次分配位置往后找碎片分布均匀最佳适应 BF空闲区从小到大排序取最小够用产生大量极小碎片最坏适应 WF总挑最大空闲区大空闲区很快耗尽紧凑是把运行中的作业移动使它们相邻合并出大空闲区代价是必须做动态重定位——系统增加重定位寄存器存放程序起始地址程序内地址是相对地址真正地址 寄存器值 相对地址。紧凑后只需更新寄存器值不用改程序本身。对换则是把暂不能运行的进程换出到外存、把有条件的换入。5.2 分页、分段与地址变换分页把逻辑地址分成「页号 页内偏移」页表记录页号到物理块号的映射。三个计算公式必须熟练页号 逻辑地址 / 页面长度取整页内偏移 逻辑地址 % 页面长度取余。地址变换机构分无快表和有快表两种。无快表时页表在内存每次访存要两次访问内存第一次查页表得物理块号第二次取数据。有快表时先查快表命中则一次访存搞定。有效访问时间 EAT 的公式是计算题重灾区无快表EAT 查页表时间 访问实际物理地址时间 有快表EAT (查快表 访存) × 命中率 (查快表 查页表 访存) × (1 − 命中率)分段按逻辑单位划分段间离散、段内连续。分页与分段的区别是标准答案级内容页是物理单位、大小固定由系统决定、地址空间一维段是逻辑单位、大小由用户程序决定、地址空间二维。分页利于内存分配分段利于用户需要和共享。回收内存时看回收分区的前后邻接分区是否空闲空闲则合并否则新建表项。5.3 易错点内存管理里最容易被忽略的细节易漏点一静态重定位与动态重定位的适用边界。为什么漏两个名字太像只记「都要转地址」。怎么补静态是装入时一次转完、运行中不能移动态是执行时才转、支持移动和紧凑。易漏点二页表项各字段的作用。为什么漏只记页号和块号忽略状态位 P、访问位 A、修改位 M、外存地址。怎么补把这四个字段和第五章页面置换挂钩——A 位决定换出谁M 位决定换出时要不要写回。易漏点三分区、分页、分段的连续性判断。为什么漏三者混着背。怎么补一句话——分区连续分页全离散分段段间离散段内连续。易漏点四EAT 公式里漏掉「修改快表」的时间。为什么漏只背了命中/未命中两分支。怎么补未命中且页面不在内存时还要加缺页中断处理、更新页表、更新快表的时间第五章会再强化一次。6. 虚拟存储与页面置换局部性原理和五类置换算法第五章回答「内存不够怎么办」。传统存储管理有两个硬伤一次性作业必须全部装入才能运行和驻留性整个作业一直占着内存导致大作业跑不了、多作业挤不下。虚拟存储器用多次性、对换性、虚拟性三个特征从逻辑上扩充内存理论基础是局部性原理——时间局部性刚执行的指令很可能再执行和空间局部性刚访问的单元附近很可能被访问。6.1 页表字段与页面调入页表每个字段都有明确用途复习时按「干什么用」记而不是按名字记页号和物理块号用于地址变换状态位 P 判断页面是否在内存访问位 A 决定是否换出修改位 M 表示调入后是否被改过决定换出时是否写回外存外存地址供调入时定位。请求分页的地址变换比基本分页多了一步「缺页中断处理」EAT 公式相应变长不在内存时要加处理缺页中断 更新页表 更新快表的时间。6.2 五类页面置换算法对比算法淘汰规则特点最佳 OPT淘汰未来最长时间不用的页性能最好但无法实现仅作评价基准先进先出 FIFO淘汰驻留时间最长的页性能最差可能出现 Belady 异常最近最久未使用 LRU淘汰上次使用时间最久远的页性能接近 OPT需寄存器或栈支持简单 Clock循环扫描访问位为 0 则淘汰实现简单开销小改进型 Clock结合访问位与修改位减少写回次数优先淘汰未修改页LRU 的实现机制要能说清寄存器法给每页配一个移位寄存器记录访问历史栈法把最近访问的页压栈、淘汰栈底。页面缓冲算法 PBA 通过维护空闲页面链表和修改页面链表显著降低换进换出频率。请求分段则用段表字段包括存取方式、访问位 A、修改位 M、存在位 P、增补位是否做过动态增长、外存始址共享段表还要有共享进程计数 count。6.3 易错点置换算法与 EAT 的四个坑易漏点一FIFO 的 Belady 异常。为什么漏直觉上内存越大缺页越少但 FIFO 在物理块增加时缺页率可能上升。怎么补记住「只有 FIFO 会出现 Belady 异常LRU 和 OPT 不会」。易漏点二LRU 与 Clock 的区分。为什么漏都叫「最近」相关。怎么补LRU 精确记录使用时间Clock 只用一位访问位近似改进型 Clock 再加修改位。易漏点三EAT 在「不在内存」分支漏项。为什么漏只背了快表命中/未命中。怎么补把「缺页中断处理 更新页表 更新快表」当成固定三件套补进去。易漏点四虚拟性不等于物理扩容。为什么漏字面理解成「内存变大了」。怎么补虚拟性只是逻辑上让用户看到更大空间实际物理容量没变靠的是多次性和对换性。7. 设备管理与磁盘调度I/O 控制方式、SPOOLing 与复习清单第六章把「CPU 怎么和设备打交道」讲透。四种 I/O 控制方式是递进关系理解演进逻辑比死背定义有用得多轮询方式让 CPU 死循环等设备最浪费中断方式让 CPU 发完指令就回去干活设备完成再中断DMA 方式加 DMA 控制器CPU 每次干预一个数据块通道方式再进一步通道相当于一个处理器CPU 只需按组下达任务。通道分字节多路、数组选择、数组多路三类。7.1 设备无关性与 SPOOLing 假脱机设备无关性指应用程序使用的设备不局限于某个具体物理设备设备驱动是与硬件紧密相关的软件。设备分配用四张表DCT设备控制表、COCT控制器控制表、CHCT通道控制表、SDT系统设备表层层挂接。SPOOLing 假脱机技术是本章最值得吃透的一块。它用多道程序中的输入/输出进程模拟脱机输入输出时的外围控制机达到「脱机」目的——脱离主机控制进行输入输出。四部分构成输入井和输出井外存收容数据、输入缓冲区和输出缓冲区内存缓和 CPU 与磁盘速度矛盾、输入进程和输出进程模拟外围控制机、井管理程序控制作业与磁盘井的信息交换。三个特点提高 I/O 速度、把独占设备改造为共享设备、实现虚拟设备功能。假脱机打印机的流程要能复述用户请求打印 → 管理进程申请盘块存数据、建请求打印表挂到队列 → 打印进程在打印机空闲时从队首取表、把数据经缓冲区送打印机。缓冲区管理分单缓冲、双缓冲、环形缓冲和缓冲池。磁盘访问时间三部分寻道时间、旋转延迟时间、传输时间。磁盘调度算法FCFS 公平但寻道长SSTF 选距当前磁头最近的可能饥饿SCAN电梯算法沿当前方向移动并服务沿途请求CSCAN 规定磁头单向移动回程不服务。7.2 期末复习清单按「必背—必算—必辨」三层查漏复习到这一步最有效的动作不是再翻一遍书而是按题型分层自测。下面这份清单可以直接当 checklist 用层级内容自测方式必背四大特性定义、同步四准则、死锁四条件、分页分段区别、SPOOLing 四部分合书默写关键词必算周转时间、响应比、银行家安全序列、页号/偏移、EAT、缺页次数每类做 3 道手算题必辨并发vs并行、静态vs动态重定位、预防vs避免死锁、LRU vs Clock、SCAN vs CSCAN两两对比各写一句话查漏补缺的具体做法先做一遍「必辨」对比凡是写不出一句话区别的回到对应章节重读那一小节再把「必算」里错过的题标记出来隔两天重做最后用「必背」清单做一次限时默写错一个补一个。最容易忽略的是跨章联动题——比如「页面置换算法的访问位 A 和修改位 M 从哪来」答案在第四章页表字段里这种题单章复习永远练不到。注意EAT 和缺页次数的计算一定要先判断「快表是否命中」和「页面是否在内存」两个分支再套公式顺序反了必错。我自己的习惯是考前每做一道综合题都强制走一遍「这题考的是哪章、用了哪个机制的哪个字段、有没有跨章」三问错题按这三问归档。第一次这么做的时候发现一半的错都出在跨章联动上而不是单点没背熟。从那以后我每次复习任何一门系统课都强制先画一张跨章关联图再刷题比闷头背书效率高得多。希望这份梳理能帮到你把零散的知识点真正连成一张能带进考场的地图。本文还有配套的精品资源点击获取