ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

408操作系统考研笔记:进程管理、虚拟内存与文件系统核心要点

408操作系统考研笔记:进程管理、虚拟内存与文件系统核心要点 考研的人都知道408计算机学科专业基础综合里操作系统这门课简直是性价比天花板。它不像数据结构那样需要大量刷题找手感也不像计算机网络那样知识点碎得让人头皮发麻操作系统更讲究“主线清晰细节扎实”。我当年复习的时候在这门课上踩过不少坑比如把进程调度和内存管理混在一起背、PV操作只会套模板不会分析场景、文件系统和I/O那两章干脆战略性放弃——后来发现全是送分题。所以这份笔记我整理的时候就一个原则不要教材复读机要应试导向的知识结构。下面这套东西是基于王道和汤小丹老师的体系结合408历年真题复盘出来的前后整理了大半年配套思维导图希望能帮你把操作系统从“背了忘”变成“理解了就不会错”。1. 这套操作系统笔记到底在做什么1.1 为什么操作系统是408中最“讲究性价比”的一科先看数据。408一共四门课数据结构、计算机组成原理、操作系统、计算机网络满分150分操作系统通常占到35分左右大致在23%上下浮动。从投入产出比来看操作系统的知识量在四门里不算最大计算题题型固定简答题考察点集中是一门“背多分”和“理解多分”可以兼顾的科目。但前提是你得抓对重点。很多人复习操作系统容易掉进一个误区就是试图把教材从第一章背到最后一章。汤小丹那本《计算机操作系统》加王道辅导书加起来快上千页你要是逐字逐句啃三个月就交代在这里了。操作系统的考察逻辑其实非常清楚它考的是“操作系统如何管理硬件资源”这件事具体管四样东西——进程、内存、文件、设备。只要把这条主线抓住后面所有章节都能顺着挂上去。1.2 笔记按什么主线来整理我这套笔记的设计思路是“一个核心两条线”。一个核心是指“资源管理”这个视角也就是说你每学一个机制都要问自己一个问题这个机制到底在解决哪类资源的管理问题两条线中一条是“用户态到内核态”的视角也就是从应用程序发出请求到操作系统响应的完整链路另一条是“系统结构”的视角从单道批处理到多道程序、从实模式到虚拟内存、从简单文件系统到日志式文件系统看操作系统每一步是怎么演化的。把笔记按这个主线组织之后你会发现自己背东西的效率会高很多。比如学虚拟内存的时候你会自然想到它是在解决“多道程序并发带来的内存不足”问题学SPOOLing技术的时候你会想到它是在解决“慢速设备与快速CPU之间的速度不匹配”问题。带着问题去学比带着焦虑去背要有效太多了。2. 进程管理考题最密集、分值最集中的章节2.1 进程与线程的核心区分逻辑先说一个最容易混淆的点进程和线程的关系。408考察这个知识点从来不是让你背定义而是考查你对“资源所有权”和“调度单位”这两个概念的理解。进程是资源分配的基本单位这句话的潜台词是每个进程都有自己的地址空间、打开的文件表、信号处理程序等资源。线程是CPU调度的基本单位意味着线程只拥有自己的栈和寄存器上下文共享所属进程的资源。我见过很多同学在题目里一碰到多线程就懵问你“多线程模型中一个线程被阻塞了其他线程还能不能运行”。这里要分情况讨论在用户级线程模型中线程调度由用户空间的线程库完成内核感知不到线程的存在所以一个线程阻塞会导致整个进程阻塞在内核级线程模型中内核直接调度线程一个线程阻塞不影响其他线程。真题特别喜欢出这种对比答题时先说明模型类型再判断结果基本不会丢分。还有一个点必须单独拎出来进程的状态转换图。创建、就绪、运行、阻塞、终止这五个状态之间的转换关系是每年选择题的高频考点。重点记忆三个易错转换就绪到运行需要CPU被调度给它运行到阻塞是主动行为等待I/O或申请资源阻塞到就绪是被动行为I/O完成。我当年就在“运行态可以直接变为就绪态吗”这种题上栽过答案是可以的因为时间片用完被抢占就是运行到就绪。2.2 调度算法背表不如懂场景调度算法这块王道书上列了七八种你要是一股脑全背下来试卷上一变通就完蛋。我个人的建议是把所有调度算法按“批处理系统”和“交互式系统”两类来记然后再分别比较它们的指标表现。批处理系统里考得最多的是短作业优先SJF和高响应比优先HRRN。短作业优先的平均等待时间最短但它的缺陷也很明显长作业可能一直拿不到CPU进程会“饿死”。高响应比优先是折中方案响应比等于等待时间要求服务时间除以要求服务时间兼顾了等待时间和服务时间。真题里偶尔会给你一组进程让你算不同算法下的平均等待时间这种题没有技巧就是老老实实画甘特图别跳步。交互式系统里重点看时间片轮转和多级反馈队列。时间片轮转的核心是时间片的设置——过短会导致频繁切换、系统开销增大过长会退化为先来先服务。多级反馈队列是考研大题的最爱因为它综合了先来先服务、短作业优先和时间片轮转的思想题目一般会给你三级队列一级比一级时间片长让你填写进程在各队列间的迁移过程。做这种题的关键是画好时间轴。2.3 同步互斥与PV操作从会用信号量到会设计信号量PV操作是整个操作系统考试中的硬骨头也是最容易拉开差距的地方。先说信号量的本质它是一个整数变量P操作是申请资源信号量减一小于零则阻塞V操作是释放资源信号量加一有阻塞则唤醒。听起来很简单但一到实际场景就有人不知道该设几个信号量、初值多少。我总结了一套PV操作的设计流程你照着套能解决90%的题目。第一步找临界资源——题目中哪个资源是多个进程竞争使用的第二步确定同步关系——谁必须先执行谁必须后执行第三步为每类资源设一个信号量互斥信号量初值为1同步信号量初值根据资源数量设定第四步用P操作申请访问权限用V操作释放访问权限。经典的生产者-消费者问题必须会手写。缓冲区大小为n设置三个信号量mutex互斥访问缓冲区初值1、empty空闲缓冲区数量初值n、full已填充缓冲区数量初值0。生产者先P(empty)再P(mutex)消费者先P(full)再P(mutex)注意P操作的顺序不能颠倒否则可能发生死锁。我自己复习时的习惯是把生产者消费者、读者写者、哲学家进餐这三类经典问题各写五遍以上写到不需要思考就能默写出来考试遇到变形题才有底气。2.4 死锁四条件、三策略加一个银行家死锁这节在408里几乎是每年必考。四个必要条件——互斥、占有并等待、非抢占、循环等待——必须能熟练默写并且能区分“产生死锁的原因”和“预防死锁的方法”之间的对应关系。死锁的处理策略分四个层次预防、避免、检测与解除。预防是从四个必要条件入手破坏任意一个条件就不会死锁——比如一次性分配所有资源来破坏“占有并等待”或者用资源编号来破坏“循环等待”。避免策略的核心是安全序列判断银行家算法是重中之重。银行家算法的题目套路非常固定给你一个资源分配表包括最大需求矩阵、已分配矩阵、资源总量让你判断当前状态是否安全或某个请求能否被满足。做题的步骤是先算出各进程还需要的资源数再算出当前可用资源数然后寻找一个能满足剩余需求的进程让它执行完毕并释放资源重复这个过程如果所有进程都能完成就存在安全序列。这里有个很多考生会栽的坑当系统处于不安全状态时不一定已经发生死锁只是有可能发生死锁。上课老师讲这个概念你可能没感觉但选择题就在这个措辞上挖坑务必记清楚——不安全状态是死锁的必要不充分条件。3. 内存管理与虚拟内存3.1 从连续分配到分页分段内存管理这一章复习的主线是“地址转换”。把这条线捋下来前面那些分配方式都是铺垫。连续分配方式里需要掌握动态分区分配的四种算法首次适应、最佳适应、最坏适应、邻近适应。这里有一个高频考点各种算法的空闲分区排序规则和优缺点。首次适应按地址递增排序最佳适应按容量递增排序——这两个是考得最多的。非连续分配方式里的分页和分段是考试的重头戏也是一个极易混淆的点。我用一句话来区分它们分页是为了提高内存利用率是系统的行为页面大小固定对用户不可见分段是为了满足程序的逻辑结构是用户的行为段大小不固定对用户可见。这句话可以直接当简答题答案用。地址转换的计算必须过关。分页存储管理的逻辑地址结构是页号页内偏移量如果逻辑地址是十六进制、页面大小是4KB即2的12次方那么低12位就是页内偏移量剩余高位是页号。拿到页号后查页表得到物理块号物理地址就等于物理块号乘以页面大小加上页内偏移量。这种题每年都会出属于送分题你只要平时多练几道上考场就是套公式。分页和分段还有一个常考点是段页式存储管理。它的基本思想是“先分段再分页”地址转换需要三次访存——第一次查段表找到页表起始地址第二次查页表找到物理块号第三次访问目标数据。因此段页式通常引入快表TLB来减少访存次数这点考试时一定要记得写。3.2 虚拟内存一道大题全考完虚拟存储器的核心思想是“部分装入、请求调入、置换”。它基于局部性原理——程序在一段时间内访问的地址往往集中在某个区域。复习的时候你只需要抓住三个问题什么时候调入、调到哪里、没有空间了怎么办。请求分页系统是在纯分页系统上增加了请求调页功能和页面置换功能。这里要记住缺页中断的处理流程CPU访问的页不在内存中时产生缺页中断操作系统暂停当前进程查找外存中的页面如果内存有空闲块就直接调入没有就执行页面置换算法更新页表后再恢复进程运行。还有一个高频考点是有效访问时间EAT的计算。EAT等于访存时间乘上1减去缺页率加上缺页处理时间乘上缺页率。真题会给出缺页率、内存访问时间、缺页处理时间让你算有效访问时间这完全就是小学算术但公式你得记准。3.3 页面置换算法与缺页率计算页面置换算法是每年大题或选择题几乎必出的一节五种算法必须熟练掌握OPT最佳置换、FIFO先进先出、LRU最近最久未使用、Clock时钟置换、改进型Clock。做题方法很简单就是手动画一张表格把每次访问页面时的内存状态列出来数缺页次数。这里要特别注意两个地方。第一OPT算法是理论上最优的它淘汰未来最长时间不被访问的页面但它无法在实际系统中实现只能作为评价标准。第二FIFO算法可能出现Belady异常——分配的物理块数增多时缺页次数反而增加。这几乎是选择题的常客看到FIFO就要条件反射想到Belady。LRU算法和Clock算法的对比也经常考。LRU需要硬件支持记录每个页面最近一次被访问的时间实现代价高但性能好Clock算法是LRU的近似实现利用页表中的访问位通过循环扫描来寻找一个访问位为0的页面淘汰。改进型Clock算法还综合考虑了修改位优先淘汰没有被修改过的页面因为淘汰它不需要写回外存开销小。不过做题归做题我想多说一句计算缺页率时一定要先搞懂“内存初始为空”还是“已预装入部分页面”题干没说清的话默认通常是前者。我见过好多同学算法完全写对就是在初始条件上没注意最后缺页次数算错整道大题全废。4. 文件管理与磁盘调度4.1 文件逻辑结构与物理结构很多考生对文件管理这章重视不够觉得就是一些零散概念。但最近几年真题在文件系统上的出题比重在上升特别是索引分配和目录结构值得你花时间仔细整理。文件的逻辑结构考察两种无结构文件和有结构文件。有结构文件里顺序文件、索引文件、索引顺序文件的特点要能区分。文件的物理结构则是重点三种分配方式——连续分配、链接分配、索引分配——需要从“能否随机访问”“是否有外部碎片”“文件大小是否受限”三个维度去比较。这里最核心的考点是索引分配的盘块计算题。题目通常会告诉你磁盘块大小、索引项大小、一级索引和二级索引能表示的最大文件大小。比如磁盘块大小4KB索引项占4B一个索引块可以放1024个索引项那么一级索引能表示的最大文件是4MB二级索引能表示的最大文件是4GB。这种题是纯算术但涉及的单位换算要仔细别把KB和MB搞混了。混合索引分配类似UNIX的inode结构也值得花点时间。它把索引项分为直接地址、一级间接、二级间接和三级间接直接地址可以快速访问小文件多级间接扩展了文件大小的上限。真题喜欢问“某文件的大小的最大值是多少”做这种题的时候记得分类计算直接块能访问的字节数加上各级间接块能访问的字节数一项一项算清楚。4.2 目录结构和空闲空间管理目录结构从单级目录发展到多级目录再到无环图目录这个演化过程本身就在回答一个问题如何让文件的查找和共享变得更高效。408真题对树形目录的考察一般结合路径名出题让你判断文件的绝对路径和相对路径难度不高注意别把“当前目录”和“根目录”搞混了就行。空闲空间管理四种方法要会区分空闲表法、空闲链表法、位示图法和成组链接法。位示图是考试重点它用一个二进制位表示一个盘块是否空闲。真题会让你计算文件系统总共有多少个盘块、位示图需要多少个字来表示。我总结的公式是盘块总数除以一个字能表示的位数向上取整。比如一个系统有1024个盘块一个字有16位位示图就需要64个字。成组链接法主要用在大型文件系统中它把空闲块分组管理每组的第一块用来记录下一组的信息。这个知识点考得相对少但概念题偶尔出现至少要能说清楚它解决了空闲链表法的一个问题——当空闲块很多时链表会很长查找效率低。4.3 磁盘调度算法会算题也要会理解磁盘调度属于设备管理的内容但和文件系统的关系非常紧密所以很多复习资料把它放在这一块讲。五种磁盘调度算法需要掌握FCFS先来先服务、SSTF最短寻道时间优先、SCAN电梯算法、C-SCAN循环扫描、LOOK和C-LOOK。计算平均寻道长度的题目几乎是每年必考解题方法也很简单给出初始磁道号和请求序列按算法规则依次处理请求把每次移动的磁道数累加后除以请求个数。这里有个易错点SSTF算法的寻道序列在有“新请求不断到达”时可能会变化但考试一般设定请求序列固定没那么多幺蛾子。SCAN算法和C-SCAN的区别用一句话就能记住SCAN是电梯算法从当前磁道往一个方向移动直到最边缘再回头C-SCAN是单向循环到达最边缘后直接回到最内或最外磁道再开始下一次扫描这样能避免SCAN算法中两端磁道等待时间过长的问题。关于扇区访问时间需要记住磁盘访问时间等于寻道时间、旋转延迟时间和传输时间之和。旋转延迟时间一般取磁盘旋转一周所需时间的一半比如转速是6000转/分转一圈要10ms平均旋转延迟就是5ms。这个知识点虽然简单但容易丢分的原因是单位换算一般转速给的是转/分要换算成毫秒别忘了乘60再除1000。5. 输入输出管理5.1 设备独立性与SPOOLing技术I/O管理这章在408里分值占比不大通常是一到两道选择题偶尔在简答题里客串一下。但正因为分值不大很多同学选择直接放弃这是不明智的——I/O章节是考前提分最快的部分概念记牢就够了。设备独立性设备无关性是操作系统的一个设计目标意思是应用程序只与逻辑设备打交道不直接绑定具体的物理设备。实现这个目标靠的是逻辑设备表LUT逻辑设备名到物理设备名的映射关系就存在这张表里。题目如果问“引入设备独立性的好处是什么”标准答案就是提高设备分配的灵活性、方便用户使用、便于实现I/O重定向。SPOOLing技术是I/O章节的重点它是用软件机制模拟脱机技术核心思想是利用磁盘作为大容量缓冲区把低速的独占设备改造成“共享设备”。典型例子就是打印机系统多个进程的打印任务先送入磁盘上的打印缓冲区由一个假脱机进程统一调度打印用户进程不再直接占用打印机。考试时还能问你SPOOLing系统中的输入井和输出井分别实现了什么要记住输入井模拟输入设备、输出井模拟输出设备输入/输出缓冲区是内存中的区域。5.2 缓冲区管理和设备分配缓冲区的主要作用是缓和CPU与I/O设备速度不匹配的矛盾。这里的知识点比较细碎单缓冲、双缓冲、循环缓冲、缓冲池各自在不同读写条件下的处理时间计算偶尔会在选择题里出。对比一下单双缓冲的处理时间你就更能理解为什么会有这么多缓冲技术。单缓冲假设输入设备输入一块数据到缓冲区的时间为TCPU处理一块数据的时间为C那么每块数据的处理时间是max(C,T)M这里的M是把数据从缓冲区搬到用户区的时间。双缓冲可以把处理时间降到max(CM,T)因为两块缓冲区可以交替使用一块用于设备输入另一块用于CPU处理不需要等待对方完成。设备分配这块需要掌握设备分配的数据结构设备控制表、控制器控制表、通道控制表和系统设备表。考试一般不会让你深入细节但要能说清楚分配设备时为什么要遵循“先分配设备、再分配控制器、最后分配通道”的顺序因为这三级结构缺一不可上级分配成功后下级分配失败要释放上级资源。6. 思维导图应该怎么搭6.1 一张思维导图的主干结构这套笔记最让我自己满意的部分就是思维导图。很多人以为思维导图就是把课本目录抄一遍其实不是。好的思维导图应该体现知识之间的“挂靠关系”而不是简单罗列。我用的结构是这样的中心主题是“操作系统”第一层分出五个分支——进程管理、内存管理、文件管理、设备管理、操作系统概述。关键在于第二层和第三层每个知识点都要标注“考察方向”和“易错点”。比如进程管理分支下面画一个时间轴把进程状态转换的时间顺序标出来旁边批注“运行到就绪是被抢占运行到阻塞是主动”再比如内存管理分支下面列一个表格分页和分段在“对用户是否可见”“地址空间是否一维”“是否存在外部碎片”三个维度上的区别。这个做法的好处是临考前你不用翻笔记本只看一眼思维导图就能把整本书的知识结构在脑子里过一遍。我当时给自己定的目标就是考试前一个晚上对着思维导图把每个分支的关键词复述一遍凡是卡壳的地方第二天早上再翻书。实测下来这个方法比闷头看书到凌晨要高效得多。6.2 用思维导图复现真题思路思维导图还有一个进阶用法用真题去反向验证思维导图的完整性。具体操作是每做完一套真题把所有错题涉及的知识点在思维导图对应的分支上做标记比如画个感叹号或标个星号。这样复习到后期你打开思维导图一眼就能看出哪些章节是你的重灾区。举个例子我当年做完三套真题后发现自己在文件系统那一章的索引计算题连续出错于是回到思维导图单独把“混合索引计算”这个叶子节点展开旁边写上一道做错的真题编号和错误原因。这个补丁式的方法让我在最后冲刺阶段有的放矢不会盲目重复刷题。还有一个小技巧思维导图不要只做一份做完“总图”之后给高频考点做“局部放大图”。比如把PV操作单独抽出来做一个专题图中心是“信号量机制”展开写四类经典同步问题和各自的信号量设置思路。这种局部图的复习效率远高于对着总图从第一级看到最后一级。如果你手头已经有一份现成的导图我建议你也别直接拿来背自己动手改一遍每加一条批注都是在加深记忆。最后聊点实在的。操作系统这门课你花一周时间集中过一遍和拉长到一个月每天看两小时效果差很多——它的知识体系很紧凑适合集中突破不建议碎片化学习。我在复习操作系统时最大的体会是别跟它硬刚顺着资源管理的逻辑走每学完一个机制就闭上眼睛想一遍“它解决的是什么问题”这样到考场上遇到没见过的题你至少能顺着这个思路写出相关知识点不至于整道题全空。这套笔记和思维导图我按408的考纲来整理的同时也适合期末复习用。如果你能把笔记里的每条概念都讲给别人听那这门课的复习基本就到火候了。祝你一战上岸。
返回列表