恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
操作系统考研核心考点梳理:进程、内存与设备管理复习指南
首页
资讯中心
/
操作系统考研核心考点梳理:进程、内存与设备管理复习指南
操作系统考研核心考点梳理:进程、内存与设备管理复习指南
发布时间:2026/10/14 15:54:06
简介面向西北工业大学801考研专业课的操作系统知识点总结按考试大纲常见模块系统梳理了操作系统概述、进程管理、内存管理、文件管理、设备管理与作业调度六大板块。进程部分涵盖进程状态、进程控制块、同步互斥、信号量与操作并补充了死锁产生条件与控制策略内存部分包括分区分配、分页分段、地址映射与虚拟内存对碎片问题亦有说明。设备管理介绍块设备与字符设备、中断方式、直接内存访问与假脱机技术文件管理覆盖逻辑结构、物理结构及存取方法调度算法则对比了先来先服务、短作业优先、优先级与多级反馈队列等常见策略。资源共1个文件格式为PDF压缩包大小约19.05MB内容为扫描版全篇结构紧凑适合在备考中后期对照教材进行要点回顾与框架串联。已有167人学习下载可作为西工大801操作系统部分的高密度复习资料帮助考生快速定位高频考点、巩固易混淆概念。1. 某高校801的操作系统复习PDF先想清楚这份笔记用来做什么如果你也在准备某高校801专业课操作系统这份自总结PDF值得在复习中期认真过一遍。它把进程管理、内存管理、文件管理、设备管理和作业调度五大块压缩成了一份可以直接对照背诵的知识清单省去了自己从教材里重新捞重点的时间。适合两类人一类是刚开始搭框架的跨考选手用它能快速知道每章考什么另一类是已经刷完一遍教材、正需要把散落知识点收回手里的冲刺选手。拿到之后不要从头翻到尾先理解它是一张「考点地图」再谈怎么用。2. 进程管理复习把状态图、调度算法和PV操作当成一套连招2.1 进程状态与PCB先背五状态图再讲清「进程和程序的区别」进程管理是操作系统考研的绝对核心801的简答题和选择题都爱从这里出。PDF里那条主线是进程是程序的一次动态执行过程它包含程序、数据和执行状态而进程控制块PCB是进程存在的唯一标志。这个定义看起来简单但很多人在回答「进程和程序的区别」时丢分因为没有把「动态」和「静态」落到具体例子上。我的复习步骤是这样的。第一步先凭记忆默写五状态图新建、就绪、运行、等待、终止。第二步把PDF里的状态转换条件写在每个箭头旁边就绪到运行需要被调度程序选中运行到等待发生在申请资源失败或等待I/O时等待到就绪是所等待的事件完成了。第三步才是去背PCB里有什么——进程标识符、进程状态、程序计数器、寄存器、内存界限、I/O状态信息。这三个步骤走完选择题里常见的那种「进程从运行态变成等待态是为什么」就不会答反。提示状态转换题最容易错的点是「运行态直接到就绪态」这个转换只发生在时间片用完或被更高优先级进程抢占时不是因为等待资源。关于「进程和程序的区别」在考卷上建议这样写程序是静态的指令集合进程是程序在数据集合上的一次执行过程进程是动态产生、动态消亡的程序可以长期保存进程能并发执行程序本身不能。写完这三点最后补一句「PCB记录了进程的动态特征」这道简答题的得分点就齐了。PDF里这部分内容不长但它其实把后面所有进程同步、调度、死锁的概念都垫住了值得先背牢。2.2 调度算法作业调度与进程调度平均周转时间要亲手算PDF把调度分成了作业调度和进程调度两类。作业调度也叫高级调度或长程调度它决定哪些作业从外存的后备队列进入内存执行频率低进程调度是低级调度或短程调度它决定就绪队列里哪个进程拿到CPU执行频率很高。考前最容易忽略的是作业调度但实际上「作业生命周期提交、后备、执行、完成」这个考点在简答题里出现过而且作业调度的指标——周转时间、响应时间、吞吐量——和进程调度的指标是同一套分开记反而乱。调度算法的计算题是必须亲手算的部分光背定义没用。以先来先服务FCFS为例标准的计算步骤是先列出每个作业的提交时间和服务时间然后从0时刻开始一个一个地算完成时间再算周转时间 完成时间 - 提交时间最后求平均。很多人的错误在于把周转时间算成了「服务时间累加」忘记了提交时间不是从0开始的。教材里最经典的例子是作业A、B、C分别在0、1、2时刻到达服务时间分别是4、3、1。用FCFSA的完成时间是4周转时间是4B的完成时间是7周转时间是6C的完成时间是8周转时间是6平均周转时间是 (466)/3 ≈ 5.33。如果换成短作业优先SJFC先执行完成时间是3周转时间是1B次之完成时间是6周转时间是5A最后完成时间是10周转时间是10平均是 5.33。你会发现这个例子里两者平均周转时间居然一样这不是巧合——当短作业后到时SJF的优势会被削弱。把这两种算法的计算过程摆在一起比背十遍「SJF能降低平均等待时间」都管用。优先级调度要额外注意两个问题一个是低优先级进程可能饥饿长时间得不到CPU常见解决办法是老化aging逐步提高等待时间过长的进程的优先级另一个是抢占式和非抢占式的区别抢占式优先级调度会在新进程到达时立刻比较优先级非抢占式要等当前运行进程主动让出CPU。考试时先看清楚题目说的是哪种模式再动手算。2.3 同步与互斥信号量、PV操作和管程的复习顺序同步与互斥这一节很多人是背住了PV操作的字母但没理解信号量的资源语义。我建议用「资源数量」这条线把信号量串起来一个信号量代表一类可用资源的数量P操作申请资源V操作释放资源信号量的值不能为负如果P操作时值为0进程就必须等待。这个语义搞清楚之后生产者消费者问题、哲学家就餐问题、读者写者问题都是同一套模板区别只在信号量初值和P/V顺序。为了加深理解可以用一个Python脚本模拟信号量下的生产者消费者协作。常见做法是设置三个信号量空位信号量、已填信号量、互斥信号量对应试卷上的empty、full、mutex。# 用 threading 模拟信号量机制下的生产者/消费者问题 import threading import time import random sem_empty threading.Semaphore(5) # 空缓冲区个数初始为5对应缓冲区容量 sem_full threading.Semaphore(0) # 已填充缓冲区个数初始为0 mutex threading.Lock() # 互斥信号量保护临界区 buffer [] # 共享缓冲区 def producer(): while True: item random.randint(1, 100) # 生产一个数据 sem_empty.acquire() # P(empty)申请一个空位无空位则阻塞 mutex.acquire() # P(mutex)进入临界区 buffer.append(item) # 写入缓冲区 mutex.release() # V(mutex)退出临界区 sem_full.release() # V(full)通知消费者有数据可用 time.sleep(0.5) def consumer(): while True: sem_full.acquire() # P(full)等待有数据无数据则阻塞 mutex.acquire() # P(mutex)进入临界区 item buffer.pop(0) # 从缓冲区取数据 mutex.release() # V(mutex)退出临界区 sem_empty.release() # V(empty)释放一个空位 time.sleep(1) # 启动两个线程分别模拟生产者和消费者 threading.Thread(targetproducer, daemonTrue).start() threading.Thread(targetconsumer, daemonTrue).start() time.sleep(10)这段脚本的参数关键是三个信号量的初值sem_empty初始为5是因为缓冲区最多容纳5个数据sem_full初始为0是因为一开始没有数据可消费mutex是互斥锁不看初值只保证同一时刻只有一个线程进入临界区。代码里的acquire对应P操作release对应V操作顺序不能反——必须先申请资源再进入临界区否则可能出现两个进程同时写缓冲区的竞态条件。管程的思想也和信号量相关但它是把共享资源和这些资源的操作封装在一个模块里进程只能通过管程提供的入口访问共享数据编译器保证同一时刻只有一个进程在管程内活动。相比信号量需要手动写P/V管程的优点是更不容易出错缺点是语言层面需要支持。考研问到管程时考的大多是「和信号量比有什么优点」以及「条件变量和信号量的区别」这两句话背下来就够。3. 内存管理复习分页分段、地址换算和虚拟内存先搭框架3.1 分区分配与碎片外碎片和内碎片的本质差异内存管理这一章的碎片问题我见过太多人把外碎片和内碎片背反。其实只要抓住一个判断标准碎片是不是在分配单元内部。固定分区和可变分区都属于连续分配固定分区把内存切成固定大小的区每个进程分到一个完整的区但进程不一定用满整个分区分区内部剩下的那点空间就是内碎片可变分区按进程实际需求量分配但进程结束释放内存后空闲区之间容易形成很多不连续的小洞这些小洞就是外碎片。分页和分段都解决了连续分配的问题但方式不同。分页把内存和进程地址空间都切成固定大小的页框进程最后一页常常不满所以还有内碎片但消除了外碎片分段按逻辑单位划分段的长度不固定段与段之间会有空闲空隙所以外碎片还在。把这一段总结成一句话就是分页的碎片在页内分段的碎片在段间。PDF里只列了结论但在复习时最好自己把四格表格画一遍固定分区、可变分区、分页、分段列出分配单位、是否连续、碎片类型、地址结构四列。有一个容易被忽略的点是分页和分段都要求地址离散分配但它们的地址结构不一样。分页地址结构由页号和页内偏移组成是一维的分段地址结构由段号和段内偏移组成是二维的因为段的长度不定段号本身不包含长度信息必须通过段表项里的段长来检查越界。这个差异会在后面的地址映射题里直接影响解题步骤。3.2 地址映射与页表逻辑地址到物理地址的四步换算地址换算题是801的常客也是那种「看着简单但一算就错」的题型。其实标准步骤非常固定第一步根据页大小计算页内偏移位数。比如页大小为4KB2的12次方是4096所以偏移占12位。第二步从逻辑地址中拆出页号和页内偏移页号 逻辑地址 / 页大小偏移 逻辑地址 % 页大小。第三步查页表得到该页对应的物理块号。第四步物理地址 物理块号 × 页大小 页内偏移。举个例子某系统页大小为4KB逻辑地址为十六进制0x3A2F页表第3项对应的物理块号为5。0x3A2F的十进制是14895页号 14895 // 4096 3页内偏移 14895 % 4096 2607物理地址 5 × 4096 2607 23087也就是十六进制的0x5A2F。注意一个规律当页大小是2的整数次幂时逻辑地址的低12位正好是偏移量高四位是页号十六进制下直接就能拆不用反复做除法。如果页大小是1KB偏移就是低10位、页号是剩下的高位很多人在这里按12位拆结果差了整整一页。快表TLB的作用也要理解在没有快表时访问一个数据需要两次访问内存——第一次查页表第二次取数据引入快表后如果页号和物理块号的映射在快表里命中就变成了一次访问内存。考题如果说「快表命中率是90%访问内存时间是100ns查快表时间是20ns」那平均访问时间的计算就是 0.9 × (20100) 0.1 × (20100100)这种题在考场上要小心别把最后一次的第二次访存漏掉。3.3 虚拟内存与页面置换局部性原理与置换算法对比虚拟内存解决的是「程序太大装不进内存」的问题核心依据是局部性原理——程序在短时间内倾向于访问一小段地址空间。PDF里提到的「通过页表实现离散分配支持内存交换提高内存利用率」就是这个意思需要补充理解的是虚拟内存使逻辑地址空间可以大于物理内存空间只有被访问的页面才调入内存这带来了一个新问题内存满了怎么办于是有了页面置换算法。页面置换算法在考卷上的出现方式通常是给一个页面访问序列和一个内存页框数让你分别用OPT、FIFO、LRU统计缺页次数。整理一张对比表会顺手很多算法置换依据优点缺点是否可能产生Belady异常OPT未来最长时间不被访问的页缺页率最低需要未来知识只能作为理论参照否FIFO最早进入内存的页实现简单可能淘汰正在频繁使用的页是LRU最近最久未使用的页性能接近OPT需要记录访问时间硬件开销大否Clock近似LRU用访问位轮转开销比LRU小访问位更新不及时精度略低否做这类题时我习惯把访问序列写成一行用笔在页框上方标出当前内存里的页面和下一次访问位置手算比心算靠谱得多。特别提醒OPT算法虽然不会Belady异常但题里常常要求「用OPT计算缺页次数」你要清楚它只是个衡量标准实际系统用的是LRU或Clock。如果题目没交代初始内存为空默认前几次装入页框都算缺页除非题目明确说「预装入」或「初始已装入」。4. 文件与设备管理两个容易被轻视的得分点4.1 文件的逻辑结构与物理结构四种物理结构怎么记不混文件管理在801里占比不如进程和内存但简答题风险高因为它概念多、区分细。先分清逻辑结构和物理结构逻辑结构是用户视角流式文件是一串字节流记录式文件是若干逻辑记录的集合物理结构是文件在外存上的组织方式有顺序、链接、索引、哈希四种。顺序结构把文件连续存放在磁盘块里优点是随机存取快缺点是文件扩展困难且容易产生外碎片链接结构通过指针把文件块串起来解决了碎片和扩容问题但只能顺序存取且指针本身占用空间索引结构为每个文件建一个索引块存放所有块号既支持随机存取又方便扩展代价是多一次索引块访问哈希结构按记录的关键字计算存储位置适合键值快速查找但不适合范围查询。考试最爱考的是「哪种物理结构适合哪种存取方式」答题思路很固定如果题目说要求随机存取选顺序或索引如果文件经常要追加内容选链接或索引如果文件很长且大多是顺序扫描读整个文件链接结构也能接受。还有一个高频简答题是「比较FAT和inode的异同」PDF里没有展开但复习时可以顺手补一句FAT用一个全局文件分配表记录所有文件的块链inode是每个文件独立的索引节点FAT在文件多时表很大inode在文件小的时候索引块开销更低。4.2 文件系统与文件保护层次模型和权限控制的考法文件系统需要掌握的两个点是层次结构和保护机制。文件系统的层次模型从上到下是用户接口、逻辑文件系统、文件组织模块、基本文件系统、I/O控制。这个模型在试卷里出现的方式通常是给一个操作问它发生在哪一层比如「打开文件」发生在用户接口层和逻辑文件系统层之间而「把文件块转换成磁盘地址」发生在文件组织模块层。背层次时不要死记每一层的名字抓住一条主线从用户指令到最终磁盘扇区的层层转换。文件保护方式主要有口令、加密和访问控制列表ACL。口令最简单但权限粒度粗加密能防止物理窃取但密钥管理麻烦ACL可以为每个用户或用户组指定具体读、写、执行权限是现代操作系统的主流方式。考试如果问「ACL和传统权限位的区别」核心得分点是传统权限位如owner/group/other三组rwx粒度固定而ACL可以精确到某个用户不受三个分组限制。4.3 设备管理I/O控制方式与SPOOLing的使用场景设备管理的复习重点在I/O控制方式的演进这四条是递进关系程序直接控制方式需要CPU不断查询设备状态浪费大量CPU时间中断驱动方式让CPU在设备完成I/O时才被通知提高了利用率但每次传输一个字节都要中断一次数据量大时开销仍然高DMA方式让DMA控制器直接在外设和内存之间搬运数据块只在传输开始和结束时打断CPU通道方式更进一步用独立的通道处理器执行I/O程序CPU只需发起一次I/O请求。考试常给一个场景让考生选合适的方式比如「传输大量磁盘块」应选DMA或通道「打印少量字符」用中断方式更合理。判断原则就一条数据量越大越应该把传输工作从CPU卸载出去。SPOOLing技术要重点理解它如何把独占设备改造成共享设备。它的核心是磁盘上的输入井和输出井、内存缓冲区以及模拟输入输出设备的进程。以打印机为例多个进程把输出写入磁盘输出井由输出进程统一把井里的数据送往打印机相当于把一台物理打印机虚拟成了多台逻辑打印机「虚拟设备」这个名字就是这么来的。考到SPOOLing时问「它属于哪种设备分配方式」的答案是虚拟技术问「用什么数据结构管理作业队列」的答案是后备队列。磁盘调度算法FCFS、SSTF和SCAN电梯算法在PDF里归在I/O调度部分。SSTF能减少寻道时间但会产生饥饿SCAN通过来回移动磁头避免了饥饿但远离当前磁头方向的新请求要等更久。记住一条SCAN的移动规律和电梯一样磁头沿一个方向服务完所有请求再掉头。5. 避坑与排查刷这份PDF时最容易翻车的四个位置5.1 扫描版PDF关键词搜不到越急越找不到现象想搜「PCB」或者「SPOOLing」PDF阅读器的搜索结果永远是空的还以为是笔记内容没写全。原因这份PDF来自手机扫描本质是图片不是带文本层的电子文档。扫描全能王生成的文件里没有可被搜索引擎匹配的文本所以用查找功能不会有任何结果。解决别在扫描件里做全文搜索。拿到PDF后先按目录给每个小节编一个定位编号比如「P2.2」对应进程管理里的调度算法小节。复习时把问题编号写到错题本上翻PDF时直接从对应编号附近找十秒内定位。如果实在需要全文检索可以离线跑一遍OCR识别生成一个文本版备用注意别把试卷或笔记传到不受信任的在线识别服务上数据安全比方便更重要。5.2 调度算法只看不练平均周转时间一算就错现象复习时觉得FCFS、SJF都懂了但模拟题里给了四个作业和交错到达时间后算出来的平均周转时间和标准答案差了一截。原因死记了「先来先服务」的定义却没有把完成时间、提交时间、服务时间三个口径的关系摆清楚。尤其是作业到达时间不同时后面的作业要等前面的作业跑完才能开始很多人把开始时间直接当作提交时间。解决每道调度题都画一张四列表格列分别是提交时间、服务时间、开始时间、完成时间算完再求周转时间。先手算一个简单例子比如两个作业A先到B后到验算一遍结果一致后再做多作业的复杂情况。把这个习惯保持住这类题基本不会丢分。5.3 直接跳过文件管理和设备管理简答题现场失忆现象复习时间紧觉得文件管理和设备管理「就是背的」拖到最后没背完。上了考场遇到「简述DMA方式与中断方式的区别」和「SPOOLing的组成」只能写个大白话得分点全丢。原因这两章的知识点散、概念多又没有计算题容易被划到「次要内容」里。但实际上801的简答题里它们是性价比最高的部分——只要列出要点就能得分不涉及复杂推导。解决把文件管理和设备管理的知识点压缩成两页背诵卡一页写四种物理结构、文件系统层次、三种保护方式另一页写四种I/O控制方式、SPOOLing三要素、磁盘调度算法。每天抽出10分钟默写这两页考前两周开始循环基本能覆盖简答题的多数考点。5.4 分页分段地址换算差一点扣分扣在进制上现象做地址映射题时公式都对算出来的物理地址却和标准答案差了一个偏移量比如差了128或者1024。原因没有先确认页大小对应的偏移位数。页大小1KB时偏移是10位4KB时是12位8KB时是13位。很多人按习惯默认4KB遇到1KB页时就整体偏了一个数量级前一步错后一步全错。解决读题第一步先圈出页大小写清楚偏移位数再动笔。十六进制地址可以直接拆位页大小4KB时低三位十六进制位是偏移量高几位是页号页大小1KB时低两位半是偏移量。先在草稿纸上拆一遍再算物理地址别跳步。5.5 PV操作信号量初值乱设程序跑着跑着就死锁现象自己写生产者消费者代码时信号量初值凭感觉设置结果程序要么消费者一直等不到数据要么生产者和消费者互相等待。原因没搞清楚信号量初值的语义。sem_empty的初值是可用空位数sem_full的初值是已满缓冲区数两个信号的初值之和应该等于缓冲区容量。初值设错后P操作的等待条件就错了后续所有流程都会偏。解决先写出缓冲区容量N然后固定初值sem_empty Nsem_full 0mutex 1。P操作顺序是先申请资源信号量再申请互斥信号量V操作顺序反过来先释放互斥再释放资源。把这三行规则写在代码注释的第一行每次写完检查一遍比事后调试省时间。6. 把PDF变成自己的复习脚本编号索引、三色标记和错题回溯从头到尾通读这份PDF只完成了信息输入离真正掌握还差一个「按薄弱点反复回溯」的环节。我自己的做法是把PDF变成一套可检索的知识索引而不是当作一本书来读。第一步是做编号索引。按PDF原有章节顺序给每个能独立考查的知识点编一个定位号比如P2.1对应进程状态P3.2对应地址映射P5.1对应设备管理里的磁盘调度。把这些编号写在一张A4纸上贴在书桌前做题时遇到哪个知识点不清楚直接看编号翻到对应页面比每次都从头找快得多。第二步是三色标记。用红色标高频考点比如PV操作、页面置换、I/O控制方式用橙色标曾经混淆过的知识点比如外碎片和内碎片的区别、作业调度和进程调度的区别用蓝色标冷门但考过的点比如哈希文件结构、SPOOLing的组成。颜色不是用来装饰的是你复习优先级的地图。第三步是错题回溯。每做错一道题把题目关键词记录到一个清单里然后映射回PDF的定位编号。用一段小脚本自动统计高频薄弱点复习时先补出错最多的章节# 错题知识点映射把做错的题映射回PDF章节统计薄弱点 errors [] # 每次录入一道错题格式为 (题目关键词, 定位号) # 关键词到章节定位号的映射表 code_map { 平均周转时间: P2.2, FCFS: P2.2, SJF: P2.2, PV操作: P2.3, 信号量初值: P2.3, 页表: P3.2, 逻辑地址: P3.2, 置换算法: P3.3, 缺页中断: P3.3, DMA: P5.1, SPOOLing: P5.1, SCAN: P5.1, 文件物理结构: P4.1, } # 统计每个章节的错题数量按降序输出前三名 from collections import Counter weak Counter(code_map[key] for key, _ in errors) for chapter, count in weak.most_common(3): print(f{chapter} 错 {count} 次优先复习)这里的关键在于code_map让每一道错题都能定位到PDF的具体小节而Counter把分散的错题聚合成章节级别的统计。实际使用时我一般每周五晚上把这一周的错题录入一次跑完脚本后看一眼哪个章节连续三周都排在前面就说明那不是粗心是真没掌握需要回到对应章节从头看一遍把所有例题重新做一遍。从那以后我每次拿到一份PDF资料都强制先做索引、标色、错题映射这三步不再凭感觉从头翻到尾。801的操作系统内容多且杂一份能直接对着背的知识清单确实是好东西但真正让它起作用的是你把它当成复习的操作系统——给它建好页表按需调入定期置换掉已经掌握的章节。希望帮到你。本文还有配套的精品资源点击获取