简介:这是一份面向计算机及相关专业学生的《计算机操作系统》期末复习题集,适合考前系统梳理与自测。压缩包内共1个doc文档,大小439KB,内容覆盖操作系统基本概念、类型与特征、进程管理、存储器管理、文件管理、设备管理、UNIX系统及设计目标等核心模块。题目包括选择题、填空题等多种题型,并附有参考答案,部分题目还标注了简单、一般、较难、难等难度等级,便于按需选用。从预览内容看,试题涉及单道与多道批处理、分时与实时系统、多道程序设计、系统调用、处理机状态转换等高频考点,可帮助读者快速定位薄弱环节。文档版式清晰,便于打印练习或课堂讲评。已有4057人学习下载,可作为期末冲刺、章节练习和查漏补缺的实用资料。
1. 期末复习题带答案,为什么还有人挂科
很多学生期末前拿到的《计算机操作系统期末复习题(含答案)》,是一份按章节排列、题后附参考答案的PDF。直觉会告诉你,背完就能过。但实际考完你会发现,操作系统期末卷子很少原封不动出复习题,更多是同考点换数据、换场景、换个问法。这门课的核心不是“记住系统长什么样”,而是“理解系统怎么管理资源”:进程怎么切换、内存怎么划分、死锁怎么避免。这篇笔记按我带学生做考前辅导的做法,把手上的复习题变成一张考点地图、一套答题模板和一份避坑清单,让最后几天的复习时间花在能拉开分的地方。适合期末冲刺、补考复习,也适合考研专业课第一轮打基础。
2. 先搞清楚操作系统期末考什么:从复习题反推考点地图
2.1 四大必考板块与它们的命题形态
操作系统的知识体系看起来厚,但期末卷子高度集中。我拿到任何一份复习题,第一件事不是看答案,而是把题目按板块归堆。归堆的维度就四个:进程管理(含处理机调度与死锁)、内存管理、文件与设备管理、系统接口与整体结构。大多数学校卷子里,进程和内存加起来能占60分,剩下才轮到文件、磁盘、设备。
归堆的时候,可以参考下面这个对应关系:
| 复习题里的题干特征 | 所属板块 | 常考题型 |
|---|---|---|
| 进程状态转换、PCB、PV操作、生产者消费者 | 进程管理 | 简答、应用题 |
| 调度算法、时间片、优先级反转 | 处理机调度 | 计算题 |
| 银行家算法、死锁必要条件、死锁预防 | 死锁 | 简答、计算 |
| 分页、分段、虚拟内存、页面置换算法 | 内存管理 | 简答、计算 |
| 目录结构、文件分配方式、磁盘调度 | 文件管理 | 说明题、计算 |
| SPOOLing、缓冲、DMA方式 | 设备管理 | 概念题 |
这个表不是标准答案,但能告诉你一件事:操作系统期末不是“全书均匀考”,而是“资源管理”为主线。看到“某进程从运行态变为阻塞态是因为申请I/O”,就知道这是进程状态题,复习时对应看教材里的状态图。看到“已知页号和偏移量,求物理地址”,就是内存计算题,归入内存管理。标签打对了,后面做题才有方向。
有的复习题把“死锁”单独列一章,有的学校把它并进进程管理。不影响,你只要在统计时单独标一个“死锁”标签,因为银行家算法是独立考点,值得单独投入。我给学生的建议是:先用白纸把复习题每道题的关键词提取出来,比如“综合题3:银行家算法”,就写“死锁-银行家-计算”。全部标记完,再数一数每个标签出现几次,卷子的重点自然就浮出来了。
2.2 汤小丹版 vs 慕课版:不同教材的考点权重怎么调
很多学校用的指定教材是汤小丹那本《计算机操作系统》,网上流通的复习题也大多以它为底本。另外还有“慕课版”的说法,通常指MOOC平台上配套课程使用的教材或课件,章节顺序和习题风格跟经典版略有差异。遇到这类差异,别慌,知识点本质相同,但细节表述会不同。
最典型的例子是进程状态。经典版教材讲“三态模型”(运行、就绪、阻塞),而有些慕课版课件直接讲“五态模型”,多了“新建”和“终止”。如果复习题答案里只有三态,而老师课件上是五态,考试时写了五态不会错,但少写一个“新建”就可能被扣分。所以拿到含答案的复习题,第一件事是看它的答案和教材有没有冲突,别默认题解全对。
如果你用的是汤小丹版,重点看进程管理、存储器管理、文件管理、设备管理这四章里的基本概念和算法;如果课程是慕课版形式,通常更强调操作系统的整体结构、系统调用流程,以及实验里涉及的命令和模拟题。这会直接影响复习题后半部分的备考方式:慕课版作业里常出现system calls、进程fork、页面置换模拟,这类题不能用纯背概念的方式应付,要实际跑一遍过程。
另外要注意表述差异。汤小丹版讲“原语”,强调原子操作;有些慕课课件直接用“wait/signal”来叫PV操作。考试时按教材写法写,避免被阅卷老师认定为概念混淆。如果复习题答案用的是另一种表述,我一般会在旁边标注“教材写法是XXX”,考前只看标注部分。
2.3 半小时给复习题做“考点热力图”,复习顺序直接排出来
这里给出一个可复现的操作步骤,半小时内完成。准备一张A4纸,画一个三列表格,表头是“题号、考点、题型”。然后把复习题里每一道题的关键词提取出来,逐行填入。全部填完之后,统计每个考点出现的次数,按次数从高到低排序。
完成后,你会得到一个和老师划重点高度接近的考点热力图。比如统计结果里“页面置换”出现5次、“PV操作”出现4次、“设备管理概念”出现1次,那复习顺序就该是:先搞定页面置换的所有变体,再练PV操作,设备管理最后用零碎时间看。为什么这样做?因为期末出题人通常围绕题库抽题,题库本身有很强的重复性,高频考点就是命题组按重点内容设计的。你不一定背下整个题库,只要把高频考点的推导过程练熟,就能覆盖大部分分值。
注意,这一步不要花超过半小时。整理笔记本身不产生分数,整理完必须马上开始闭卷做题。我见过有同学把考点热力图做得像手账,卷子一道没做,这就本末倒置了。热力图只是帮你决定先付哪张账单,真正让分数上涨的是后面一遍遍“写出来”的过程。
2.4 高频考点的两个反直觉规律:死锁必考,设备管理常被低估
操作系统期末有一个有趣现象:死锁几乎年年考,但占分不一定高。一道简答加一道银行家算法,加起来可能只有10到15分,可它胜在稳定。复习题里只要出现死锁,你就应该把“四个必要条件”写熟,把银行家算法的安全性检测步骤练到可以不看答案默写。如果你的复习题列表里连一道死锁题都没有,那反而危险,大概率是资料不全。
另一个容易被低估的是设备管理。很多学生觉得SPOOLing、缓冲、DMA这些概念简单,考前一晚背背就行。但这类题在复习题里属于“低频但必现”的题,一旦考到,就是送分题。如果因为觉得简单就不看,考场上变成“好像见过,但写不出三个例子”,那才叫可惜。所以设备管理部分至少要把复习题里所有概念题过一遍,把每个术语的一句话定义和两个例子记牢。
3. 把复习题当“题源”而不是“题库”:三类必刷题型与答题模板
3.1 简答/概念题:三层答题法,按“定义-特征-作用”拿全踩分点
复习题里最简单的简答题,往往最坑。比如“什么是操作系统”,你写了“操作系统是管理计算机硬件和软件资源的系统软件”,这句话没错,但可能只拿一半分。阅卷标准里通常有“资源管理者”“用户与硬件之间的接口”“提供用户界面”等多个踩分点。我用的是“定义-特征-作用”三层模板。
第一层写下定义的完整表述,尽量用教材原话。第二层列出该对象的3到4个特征,比如并发性、共享性、虚拟性、异步性。第三层写它的作用或存在意义,比如“负责管理处理机、内存、文件、设备四种资源,为用户提供交互界面”。这样老师按点给分,即使定义记得不完整,特征和作用也能补分。
套到具体题上。复习题问“进程和程序的区别”,三层答法可以这样组织:定义层写“进程是程序的一次执行过程,是动态的;程序是静态指令集合”;特征层写“进程有生命周期,包括创建、就绪、运行、阻塞、终止,而程序只有文件属性;进程有控制块PCB,程序没有”;作用层写“引入进程是为了描述并发执行,实现资源隔离”。这样比只写“一个动一个静”丰富得多。
再举一道高频简答:“死锁产生的四个必要条件”。这道题的踩分点非常明确,必须写全:互斥条件、请求与保持条件、不可剥夺条件、循环等待条件。一个都不能少,少写一个就扣一个点的分。我会让学生在背的时候加一句“破坏其中任意一个条件,死锁就不会发生”,这句是对“预防死锁”的过渡,某些问法下它就是加分项。
3.2 计算题:作业调度、页表换算、银行家算法的标准步骤
计算题是操作系统期末的大头,尤其是银行家算法、页面置换、作业调度。这类题复习题里通常有完整答案,但你不能只看答案,要把每一步写出来,因为阅卷老师按步骤给分。
先拿银行家算法举例。题目会给一个资源分配表,包含Allocation、Max、Available,问是否存在安全序列。标准步骤分四步:第一步,计算每个进程的Need,公式是Need = Max - Allocation;第二步,设置工作向量Work等于Available,并初始化Finish数组为false;第三步,循环查找一个未完成且Need不超过Work的进程,找到就假设分配完成,Work加上该进程的Allocation,Finish置为true;第四步,如果所有进程Finish都是true,则系统安全,否则不安全。
注意:算法每次找到符合条件的进程顺序可能不同,安全序列不唯一。答题时把每一步的计算过程都列出来,哪怕最后发现系统不安全,前面的过程分也能拿。我常跟学生说,银行家算法的答案别只写“不安全”三个字,一定要写出“第一个选P1,Work更新为…,再选P2…”这样的过程。老师想给你分,也得找得到依据。
页表换算也是一道经典计算题。比如逻辑地址是16位,页面大小4KB,问逻辑地址0x2A3F对应的物理地址。步骤拆成三步:第一步,算出页内偏移位数,4KB等于2的12次方,所以低12位是偏移,剩余高位是页号;第二步,把逻辑地址0x2A3F拆开,0x2是页号,0xA3F是页内偏移;第三步,查页表得到物理块号,假设页号2对应块号7,则物理地址等于块号乘以页大小加上页内偏移,也就是0x7000或上0xA3F,结果是0x7A3F。
这里要强调单位统一。地址是十六进制还是十进制,页大小是2KB还是4KB,K是1024还是1000?不同学校的教材有时用“K”代表1024,有时为了计算方便就写1000。做题前先把页大小写成2的n次方,就不会在位数上翻车。我见过不少学生因为把4KB当成4000B,导致页号位数算错,整道题一分没拿。
作业调度和进程调度的计算题,比如先来先服务FCFS、短作业优先SJF、时间片轮转,也有固定格式。答题时先画甘特图,再算每个作业的完成时间、周转时间、带权周转时间。甘特图是拿分关键。我一般要求学生先画时间轴,把每个作业的执行区间标出来,然后列一个三行表格:作业、到达时间、完成时间、周转时间、带权周转时间。公式写在表格上方:周转时间等于完成时间减到达时间;带权周转时间等于周转时间除以服务时间。
3.3 应用题:PV操作、页面置换、磁盘调度如何写过程分
应用题比计算题更讲究“写思路”。复习题里常见的应用题有三类:PV操作设计、页面置换过程、磁盘调度寻道。PV操作如果不熟练,期末丢分会非常惨烈。这里给一个通用写法。
第一步,找出题目里的互斥资源和同步关系。比如生产者消费者问题,缓冲区是互斥资源,设一个mutex初值为1;空位子和满格子是同步信号量,empty初值为N,full初值为0。第二步,写出使用信号量的伪代码,每个进程的行为是:先执行P操作,再访问临界区,最后执行V操作。生产者是“P(empty)、P(mutex)、放入、V(mutex)、V(full)”,消费者反过来。第三步,用文字说明信号量初值的含义,比如“empty表示缓冲区空闲位置数,full表示已填满位置数,mutex用于实现对缓冲区的互斥访问”。
判卷老师看什么?看信号量是否成对出现,初值是否合理,P和V的顺序是否正确。即使最后代码有小错,只要结构完整,过程分也能保住。如果复习题里没有PV操作,我还是建议你练两道,因为它是进程同步的综合题首选。
页面置换题(OPT、FIFO、LRU)的答题格式是画表格。表格的列是页面走向,行是物理块。每访问一个页面,如果发生缺页,就在对应列标一个“缺”,并写出被替换的页号。最后计算缺页率等于缺页次数除以访问次数。注意FIFO和LRU的名字容易记反:FIFO看的是页面进入内存的时间,谁先来谁先走;LRU看的是最近使用的历史,谁最久没被访问谁先走。复习题答案里如果只有一行“FIFO缺页次数5,LRU缺页次数4”,这是不合格的,你得自己把表格补出来,因为考试时表格要画。
磁盘调度题主要考寻道顺序和总寻道长度。先读清楚磁头当前磁道号和移动方向,再选算法。FCFS就是按请求到达顺序依次寻道;SSTF每次选离当前磁道最近的请求;SCAN(电梯算法)按当前方向一直走到头再折返。计算总寻道长度时,把两次寻道之间差的绝对值累加。这里最容易出错的是SCAN的方向:如果题目说“磁头向大号移动”,那要先处理所有比当前大的请求,一直到最大,再折返处理小的。方向写反,整题全错。
4. 含答案复习题的避坑指南:答案错了你都不知道
4.1 两份答案互相矛盾:先查教材版本再决定信谁
现象:同一道“进程状态”选择题,一份复习题选“三态模型”,另一份选“五态模型”,都声称自己是标准答案。你如果只背一份,心里会发虚;两份都背,考试时看到题目反而更乱。
原因:操作系统教材版本差异。汤小丹版和部分慕课版在进程状态的划分上不一致,三态、五态、七态都有人讲。另外,关于线程是否作为“基本调度单位”的表述,不同版本也存在前后改动。
解决:以你学校指定教材和老师课件为准。把两份答案中冲突的题挑出来,在复习题旁边标注“教材第X章写的是哪一种”。如果老师课件里明确画了五态图,考试就按五态写;如果课件沿用三态,就写三态。复习资料永远是从属,教材和课件才是主标准。这条经验是带学生踩坑换来的——有个学弟背了网上的三态答案,老师课上讲五态,期末直接丢了4分。
4.2 计算结果对不上:大多数时候是单位或假设没统一
现象:做页面置换题,自己算的缺页次数和复习题答案不一样。检查了好几遍依然不一致,甚至会怀疑是不是LRU写成了FIFO。
原因:不是算法错,而是初始状态没对齐。有的题目默认“内存中刚开始为空,每次地址流依次装入”,有的题目却写明“前三个页面已经存在”。二者计算出的缺页次数可以差出三四次。页表换算题就是单位问题:地址位数、页面大小、物理块号进制,任何一处没统一,结果都对不上。
解决:做题时把“假设条件”写在答案开头。比如“按默认页大小为4KB,逻辑地址16位,页表初始为空”。即使最终数值和标准答案不同,老师看到你的假设清晰、过程正确,通常也会给大部分过程分。我一般还会在复习题旁边标注“本题答案基于页表初始为空,若初始预装则缺页次数会少”。这样考前回看时不会被同一个坑绊第二次。
4.3 答案只有ABCD没有解析:背下来的答案换张卷子就失效
现象:复习题后面跟着的参考答案,只有“B”“C”“ABD”这种选项,没有任何解释。你背了三天,到考场上发现题目问的细节换了,还是不会选。
原因:这类资料多半是从各种题库里拼接出来的,作者只给了答案没给过程,默认使用者已经懂。但操作系统概念题最怕的就是“只认选项不认原理”。比如“哪种调度算法会导致饥饿”这种题,背了选项“SJF”没用,你得知道SJF长作业在持续有短作业到达时会被无限推迟。
解决:每道错题必须写一句“错因”。我用的模板是“这道题考:XXX;我错在:XXX;关键点是:XXX”。比如上面那道题就写“关键点是短作业优先算法具有资源剥夺性质,长作业可能被饿死”。写不出这句,就翻教材找对应知识点,翻不到就带着题去问老师。复习题有答案是为了加速这个改错过程,而不是让你跳过思考。
4.4 题源混了“慕课版”和经典版:优先按老师课件校准
现象:复习题里有一道“系统调用的执行过程”大题,答案里写了“API→系统调用→内核函数”三步,但你的教材版本写的是“用户态程序→陷入指令→内核态处理→返回”,感觉都对,不知道按哪个答。
原因:系统调用、微内核、模块化结构这些内容,在经典教材和慕课版课件里的叙述路径差别很大。经典版更强调操作系统四种资源管理,慕课版更强调“向前兼容”和Linux实现。网上流传的复习题,经常把不同版本的习题混编在一起。
解决:优先按老师课件校准,因为老师才是出卷人。拿到复习题后,把与课件冲突的题都归到一个“存疑清单”里,找一次答疑或课间问一句。问的时候直接把冲突两个版本摆出来,请老师明确考试认哪种表述。如果老师没空回答,就按课件写,毕竟课件是他自己做的。这条处理原则,比纠结资料答案对不对更重要——它决定了你有限的复习时间该信谁。
5. 考前一周怎么把复习题刷出最高性价比:三遍阅读法与输出式复盘
5.1 第一遍:闭卷硬写,不会也写,把“再认”变成“回忆”
考前一周,很多人的状态是“翻开复习题,看到答案,感觉自己都会”。这是最危险的状态。心理学上这叫再认,你以为自己掌握了,其实只是熟悉。考试是回忆,是拿着空白答题卡把知识调出来写,恰恰是回忆过程最不熟练。
所以第一遍必须闭卷。把复习题当模拟卷,不看答案,按章节顺序直接做。不会的题也硬写,写错没关系,但要用完整句子回答,而不是写“答案详见P157”。为什么硬写?因为只有写出来,大脑才知道哪个地方是断的。比如写银行家算法时,写到“Need = Max - Allocation”就卡住,说明你记住了公式,但没记住它为什么出现在第一步。这个卡壳点,比一道作对的题有价值得多。
操作上,我建议第一遍不求快,允许查教材目录但不给翻内容。查目录的作用是帮你定位考点归属,而不是抄答案。每道题做完,在题号旁标三个符号之一:对勾(会且对)、半圆(会一半)、叉(不会)。这个符号系统后面两遍都会用到。
5.2 第二遍:改错时标错因,同时给可疑答案做“存疑”标记
第二遍是质量核心。打开参考答案,逐题对照。对错题,不要只把正确答案抄上去,要在题旁边写一句“错因”。错因分成四类:概念记错、公式记错、假设没看清、没有思路。分类越明确,复盘越好用。
比如一道页表换算题,你算成0x7AF3,答案是0x7A3F,这多半是十六进制计算时加减错误,属于“公式记错”或“粗心算错”。而一道题目问“为什么要引入SPOOLing”,你答“提高I/O速度”,标准答案里还有“将独占设备变为共享设备”的关键点,这属于“概念记漏”。把错因分类写到题旁,考前冲刺时你只看错因,一眼就能判断自己是哪种病。
同时,要对参考答案本身保持警觉。如果你发现自己的推导过程完全正确但答案不一致,或者复习题答案和教材表述冲突,就在题号前画一个问号,标记“存疑”。存疑的题目不要强背,去查教材或课件,查不到就留到答疑时问老师。宁可用自己推的答案,也不要用错答案覆盖脑中的正确思路。
第二遍还有一个任务:把第一遍标记“半圆”的题完整重做一次。半圆意味着你有一部分记忆,但表达不完整。这类题是考试最容易丢分的,因为你觉得“见过”,但写不满要点。我一般会要求学生对半圆题重新读一遍教材对应小节,再闭卷写一次完整答案,直到能流畅写出三层结构。
5.3 第三遍:对着目录讲考点,用错题本做最终验证
第三遍不再按题号做,而是把复习题收起来,只看教材目录。从第一章“引论”开始,照着目录对自己说一遍知识结构:操作系统的基本特征有哪些?进程和线程区别是什么?页面置换算法有哪几种?死锁必要条件是什么?每说一个考点,就想想它对应复习题里的哪道题,那道题的答案框架是什么。
这一步叫输出式复盘,也是三遍里最接近考场状态的练习。因为考场上没有题目提示,只有你脑子里的知识网络。如果你看到目录里的“分页存储管理”能自然联想到“逻辑地址结构、页表项、地址转换、缺页中断”,说明这个考点真正变成你自己的了。如果卡住,马上翻复习题里和该考点相关的题,读一遍答案,再合上重说。
最后一晚的时间分配很有讲究。我会建议把考前7天分成“前三题”和“后两题”:前三天完成第一遍,中间两天做第二遍,最后两天做第三遍。具体到每天两个小时:一小时做新题,一小时回顾前日的错题。错题本此时只有两个列表:一个是“必背清单”,比如死锁必要条件、PV操作信号量初值规则;一个是“易错清单”,比如页面置换的初始状态、SCAN方向。这两个清单做成一张卡纸,考前最后一晚只背这两列。
6. 考场上拿到没见过的题:用“考点定位法”现场推答案
6.1 三步定位法:模块、模型、条件
总有些题你复习时没遇过,比如“为什么页面过大反而可能导致性能下降?”这种题不在复习题里,但考的都是老知识。我的应急技巧是三步定位。
第一步判断模块:问自己这是进程、内存、文件还是设备?显然这题属于内存管理。第二步找核心模型:内存管理里有没有一个模型能解释页面大小的影响?有,页表项加缺页率加内部碎片。第三步拼装答案:页面过大页表项变少,占用内存少,但内部碎片变大;页面过小页表项变多占用内存多,但局部性变好。所以折中才是关键。
6.2 一个可复用的应急答题框架
无论遇到什么冷门题,答题卡上都按这个框架写,不会吃亏:
| 层级 | 写什么 | 示例 |
|---|---|---|
| 定性 | 这个知识点属于哪个管理模块 | 属于内存管理 |
| 概念 | 用一句话解释核心名词 | 页表项记录逻辑页到物理块的映射 |
| 要点 | 写出相关的3到4个关键点 | 页表、缺页率、内部碎片、局部性 |
| 落题 | 套入题目条件做推断 | 题目问页面大小,则对比过大过小的优缺点 |
| 收束 | 给出一句结论,呼应题目 | 所以要选择适中的页面大小 |
这套框架能让阅卷老师第一时间看到你的专业语言,即使结论不完全准确,中间几步也能拿到踩分点。我自己当年考试也靠这个方法救过场:有一道“JCB与PCB的区别”,原题没见过,但先定位到“作业与进程”模型,写下定义、生命周期、辅助数据结构三个点,最后该拿的分还是拿到了。
考前最后一周,请记住一个词:推演优先于背诵。复习题里的答案是用来核验的,不是用来供奉的。我辅导学生时最怕听到“这道题我记得答案选C”,而不是“这道题我可以从原理推出选项”。把每一份含答案的复习题当成一个模拟考场,认真走完闭卷、改错、讲目录这三遍,你会发现自己已经能独立解决没见过的题目。希望帮到你。
本文还有配套的精品资源,点击获取