ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

操作系统备考:设备管理、文件管理与作业调度核心考点精讲

操作系统备考:设备管理、文件管理与作业调度核心考点精讲 1. 整体设计与备考思路做软件设计师的备考复习操作系统这一章是性价比最高的模块之一。上午的选择题里操作系统相关考点常年稳定在5到7分之间设备管理、文件管理、作业调度又是其中的核心出题区几乎每轮考试都会轮番上阵。很多考生喜欢盯着进程管理、死锁这些“硬骨头”反复啃结果在设备管理和文件管理的细节题上丢了分非常可惜。这一章之所以值得重点攻破一方面是因为知识点相对独立不像计算机组成原理那样需要大量电路逻辑基础也不像软件工程那样需要长篇背诵另一方面是它的题目套路非常固定考点就那么十几个把每个考点的出题角度摸清楚是能拿到接近满分的。设备管理、文件管理、作业调度这三块内容本质上都在回答同一个问题计算机系统怎么把有限的硬件资源高效、安全地分配给多个程序使用。设备管理管的是I/O设备文件管理管的是磁盘上的数据组织作业调度管的是用户提交的任务如何进入系统运行。三者的底层逻辑相通都是在“资源有限”和“需求无限”之间做协调。这篇文章适合正在刷题、准备冲刺的考生也适合刚接触操作系统原理、想快速建立考点框架的初学者。我会按照考试出题的习惯把每个考点背后的原理、典型的真题陷阱、以及我在实际复习中总结的速记方法都梳理出来力求看完就能上手做题。2. 设备管理的核心考点拆解2.1 设备分类与I/O控制方式把选择题的分稳稳拿到设备管理这部分首先要拎清的是设备的分类。按传输速率分有低速设备键盘、鼠标、中速设备打印机、高速设备磁盘按信息交换的单位分有块设备磁盘按数据块读写和字符设备键盘、打印机按字符流读写按资源共享属性分有独占设备、共享设备和虚拟设备。这几个分类标准经常交叉着考题干里给一台设备让考生判断它属于哪一类这就是典型送分题但前提是分类标准不能记混。更常考的是I/O控制方式的演进。从早期的程序查询方式到中断方式、DMA方式再到通道方式每一步都是为了解决“CPU等待外设”这个核心矛盾。程序查询方式里CPU要不停地循环检查设备状态相当于你在厨房煮水每隔几秒就得跑过去看一眼水开了没期间什么别的事都干不了。中断方式改善了一些水开了设备会主动“喊”你CPU可以先去干别的但每次数据传输都要CPU亲自参与数据量大时CPU依然累得够呛。DMA方式则引入了DMA控制器它能在没有CPU参与的情况下直接在内存和外设之间搬运数据CPU只需要在开始和结束时参与一下。这种方式相当于你请了个帮工让他盯着水壶水开了他直接倒进保温瓶最后再喊你一声。通道方式更高级它用专门的I/O处理器来管理一组设备的传输CPU只需要发一条I/O指令通道就能独立完成整个传输过程。这里有一个高频考点DMA方式与中断方式的区别。题目经常会问哪种方式适合块设备的大批量数据传输答案就是DMA因为它按数据块传输且传输过程不占用CPU。而中断方式仍以字节为单位CPU需要介入每一次数据搬运。做题时看到“批量”“高速”“块设备”这些关键词直接锁定DMA或通道即可。2.2 缓冲技术与SPOOLing理解“假脱机”背后的调度逻辑缓冲技术的引入是为了缓解CPU与I/O设备之间的速度不匹配。没有缓冲时CPU向打印机输出数据而打印机打印速度很慢CPU就得一直等。有了缓冲区CPU可以先把数据一股脑写到缓冲区里然后转头去做别的事由缓冲区慢慢向打印机喂数据。单缓冲和双缓冲的考题主要围绕“处理一块数据所需的时间”来计算。单缓冲时CPU处理完当前数据块的下一块数据需要等待缓冲区清空双缓冲则允许CPU和设备同时访问不同的缓冲区效率提升明显。简单记双缓冲下每块数据的处理时间约等于max(CPU处理时间, I/O传输时间)单缓冲下时间是两者之和再取某种约束关系。考试如果给出具体数值画一条时间轴推算最稳妥不要凭感觉选。SPOOLing技术是设备管理里的经典考点中文叫“假脱机技术”核心思想是把低速的独占设备改造成高速的共享设备。具体做法是在磁盘上开辟输入井和输出井配合内存中的输入缓冲区和输出缓冲区。以打印机为例多个进程要打印文档时SPOOLing系统把每个进程的打印请求先送到输出井暂存形成一个打印任务队列再由SPOOLing进程统一调度把数据真正送往打印机。这样一来打印机看起来就像一台“虚拟设备”每个进程都觉得自己独占了一台打印机但实际上大家共享的只是磁盘里的队列空间。考试里SPOOLing最常问的两个点一是它由谁实现答案是软件SPOOLing系统配合中断和通道硬件机制二是它把独占设备变成了什么设备答案是虚拟设备。记住“用磁盘空间换设备独占性”这个本质很多变形题都能应对。2.3 磁盘调度算法几十秒算出最短寻道时间磁盘调度是设备管理里计算量最大的一类题但也是套路最固定的一类题。常见的算法有先来先服务FCFS、最短寻道时间优先SSTF、扫描算法SCAN也叫电梯算法、循环扫描算法C-SCAN偶尔还会考到LOOK和C-LOOK这类优化版本。先来先服务最简单就按请求到达的顺序移动磁头公平但效率低。最短寻道时间优先每次都找离当前磁头最近的请求寻道距离短但可能导致离得远的请求一直等产生“饥饿”现象。扫描算法让磁头沿一个方向移动沿途处理所有请求到了最远端再掉头像电梯上下楼一样避免了饥饿但两端新到达的请求可能要等较长时间。循环扫描算法则让磁头总是从一端扫到另一端到了端点立刻回到起点重新开始途中不停留处理这样两端请求的等待时间更均匀。做这类计算题时我建议先画一条数轴标出当前磁头位置和所有请求的磁道号然后按算法规则一步步画线。最容易出错的点是SCAN和C-SCAN的方向判断题目会说“向磁道号增大方向移动”或“向磁道号减小方向移动”一旦方向看反整道题全错。另外要注意C-SCAN在返回起点时不处理请求但有些教材会把“返回过程中也处理”的变体称为LOOK变体审题时必须看清题干对返回过程的描述。3. 文件管理的必考内容与典型计算3.1 文件的逻辑结构与物理结构先分清“用户看到的样子”和“磁盘上存储的样子”文件管理这章每年考试的重点非常集中。第一个要啃透的就是文件的逻辑结构与物理结构。逻辑结构是用户视角下的文件组织形式分有结构的记录式文件定长记录、变长记录和无结构的流式文件。比如一个学生信息表每个学生的记录长度固定就是定长记录文件一个文本文件没有内部记录边界就属于流式文件。考试常问某类文件适合用什么结构答案并不难只要分清“用户看得见的组织”和“存储在磁盘上的组织”即可。物理结构则是指文件在磁盘上的存放方式有连续结构、链接结构、索引结构三种。连续结构把文件的数据块依次存放在连续的磁盘块上存取速度快但会产生外部碎片且不利于文件动态增长。链接结构通过指针把分散的磁盘块串起来解决了碎片问题但只能顺序访问随机访问效率低同时一个指针要占用磁盘空间也增加了管理开销。索引结构为每个文件建立一张索引表存放所有数据块的位置既支持顺序访问也支持随机访问但索引表本身需要额外空间开销。这里有一个非常经典的计算题给定磁盘块大小、地址长度要求计算文件的最大长度或索引表占用空间。比如说磁盘块大小1KB地址占4字节那么一个一级索引块最多能存放1024/4也就是256个地址项能管理的最大文件就是256KB。采用两级索引时每个一级索引块指向256个块两级索引则能管理256乘以256个块对应64MB。考试特别喜欢考“多级索引能索引多大文件”这类题其实就是一个乘法加单位换算但很多人在“块大小”和“地址长度”的换算上栽跟头。拿到题先明确单位算出每块能放几个地址项再逐级相乘最后乘以块大小就稳了。3.2 目录结构与空闲存储空间管理两个高频小考点目录结构的考点集中在单级目录、二级目录和多级目录的优缺点比较。单级目录实现简单但文件一多就会出现命名冲突查找也慢。二级目录为用户根目录下再建立用户子目录能解决不同用户的文件重名问题但同一个用户的文件仍无法很好地分类组织。多级目录树形目录是现代操作系统普遍采用的方式支持更灵活的层次结构但也带来了路径解析的开销。题目经常问“绝对路径与相对路径的区别”只要记住绝对路径从根目录开始写相对路径从当前目录开始写就能应对。空闲存储空间管理有四种常见方法空闲区表法、空闲链表法、位示图法、成组链接法。其中位示图法几乎是必考的因为它既能考概念又能考计算。位示图的核心是用一个二进制位表示一个磁盘块是否空闲1表示已分配0表示空闲。考试题常给出一个位示图问第几个盘块对应第几个字节的第几位。计算时注意盘块号、字号、位号通常从0或1开始计数题干会明确说明但很多考生习惯性按0开始算结果和按1开始的答案完全对不上。成组链接法主要用于大型文件系统的空闲块管理它将空闲块分组每组用一个空闲块记录下一组的信息。考试如果涉及成组链接法多半是概念题问它适合什么规模的系统答案是大型文件系统。这个考点不需要做太深的计算把“一组记录下一组”的链表思想记住即可。3.3 文件保护与存取控制理解权限位和访问控制矩阵文件保护的题目相对简单但每年总有考生在权限位上失分。Unix/Linux系统中文件的权限分为读、写、执行三类分别针对属主、同组用户和其他用户用r、w、x表示。题目可能给出一个权限字符串“rw-r--r--”问对应什么含义或者问某个权限代码对应的八进制数字是多少。这里有一个速记法r相当于4w相当于2x相当于1把三类身份的三位数字拼起来。rw-就是6r--就是4所以“rw-r--r--”对应644这是日常最常见的一个权限组合。访问控制矩阵则从另一个角度描述文件保护行表示主体列表示客体矩阵中的元素表示主体对客体的访问权限。考试题常要求判断某用户能否对某文件执行某操作直接查矩阵即可。除了权限位和访问控制矩阵考试还可能涉及加密保护、文件属性只读、隐藏、存档这些概念但相对冷门不必投入过多精力。4. 作业调度的层次结构与调度算法4.1 作业状态转换与三级调度理清“从提交到运行”的完整链路作业调度这章很多考生最大的困惑是分不清作业调度高级调度、进程调度低级调度和中级调度。其实它们的区别非常清晰高级调度决定哪些作业从后备队列进入内存也就是把磁盘上的作业变成内存中的进程低级调度决定内存中哪个进程获得CPU中级调度则涉及进程在内存和外存之间的交换主要为了提高内存利用率某些教科书里也叫中程调度。作业从提交到完成的完整状态链是提交状态、后备状态、运行状态、完成状态中间还可能经历等待状态。提交状态指作业正在被输入设备录入录入完成后进入后备状态此时作业在磁盘的后备队列中等待调度被高级调度选中后进入运行状态运行中如果等待I/O则进入等待状态I/O完成后重新回到就绪状态。考试最常考的是“后备队列到运行状态由谁调度”这类答案就是作业调度也就是高级调度。三级调度的频率也经常出题。作业调度发生频率最低因为它涉及建进程、分配内存等大动作进程调度发生频率最高因为每个时间片都可能发生进程切换。这里要注意作业调度只负责把作业调入内存并不负责给它分配CPU真正分配CPU的是进程调度。有些题目会故意把这两个概念混在一起考生稍不留神就会选错。4.2 五大调度算法对比背熟公式加两个实战案例作业调度算法的核心考点包括先来先服务、短作业优先、优先级调度、高响应比优先以及时间片轮转。前四个主要应用于作业调度和进程调度时间片轮转主要用于分时系统的进程调度。这里我先给出一张对比表方便大家速记算法名称调度依据核心优势核心劣势先来先服务FCFS到达时间公平、实现简单平均等待时间长短作业优先SJF运行时间平均等待时间最短长作业可能饥饿优先级调度优先级能体现紧迫性低优先级可能饥饿高响应比优先HRRN响应比 (等待时间 运行时间) / 运行时间兼顾长短作业需要计算响应比时间片轮转RR时间片轮转交互性好、响应快时间片大小影响效率短作业优先算法的平均等待时间最短这是理论上的结论也是考试原话题的常客。但要注意的是在非抢占式场景下短作业优先也可能造成长作业长时间得不到CPU所以后来引入了高响应比优先算法作为折中方案。计算响应比时公式中的运行时间可能用服务时间或估计运行时间替代题目会给清楚。我举一个具体例子四个作业A、B、C、D到达时间分别是0、1、2、3运行时间分别是4、3、5、2。用先来先服务调度顺序就是A、B、C、D结束时间分别是4、7、12、14等待时间分别是0、2、5、8平均等待时间是(0258)/43.75。用短作业优先非抢占作业A先到先运行运行结束后时间是4此时B、C、D都已到达运行时间最短的是D2其次是B3最后是C5调度顺序是A、D、B、C。计算一下等待时间A为0D为2B为7C为10平均等待时间为(02710)/44.75反而比FCFS更差。这说明短作业优先的优势建立在所有作业同时到达或长作业先到的场景下遇到短作业晚到结果就可能不同。考试中这种“看似矛盾”的题目往往就是陷阱所在。高响应比优先是另一个需要动手计算的考点。一个作业在等待了若干时间后来了一次调度决策它的响应比等于(等待时间 运行时间)除以运行时间也就是1加上等待时间除以运行时间。这个公式本身不复杂但每次调度时都要重新计算所有就绪作业的响应比选择响应比最高的作业运行。做题时一定要逐轮计算不能只算一次就定论因为随着时间推移每个作业的等待时间都在变化响应比也在变化。4.3 作业调度与进程调度的区别大题小题里都容易出现的混淆点作业调度和进程调度的区别几乎每隔几次考试就会出现一次。最简单直接的理解是作业调度发生在内存和外存之间决定哪些作业可以进入内存变成进程进程调度发生在CPU和内存中的进程之间决定哪个进程可以使用CPU。作业调度建立进程、分配内存资源进程调度则分配CPU时间片。有些考生容易把作业调度和进程调度混为一个概念特别是看到“调度”两个字就开始套进程调度算法。这里教大家一个解题技巧题目中出现作业、后备队列、磁盘、内存分配这些关键词就对应作业调度出现进程、就绪队列、CPU时间片、上下文切换这些关键词就对应进程调度。还有一个比较隐蔽的点作业调度虽然可以创建进程但作业调度发生频率远低于进程调度。因为作业调度的开销很大不只是简单的指针切换还涉及创建进程控制块、分配内存、加载程序等整套动作。进程调度则可以在很短时间内完成上下文切换。我在复习过程中发现很多真题倾向于把作业调度和进程调度放在同一道综合题里。比如先让你判断作业的调度顺序再让你分析某个进程在某个时间点处于什么状态。这种题目得分的关键在于必须时刻清楚题目在问作业层还是进程层。如果题目问“作业从提交到完成经历的四个状态”就不要把进程状态就绪、运行、等待混进去反过来问进程状态时也不要扯上作业调度。边界清晰得分就稳。5. 真题陷阱与实操避坑技巧5.1 高频陷阱归纳做题时最容易翻车的四个细节结合这些年软考真题和我自己刷题时的踩坑经历我整理了几个出现频率极高、错误率也极高的陷阱点。第一个就是盘块号、字号、位号的下标起点没有看清。有的题目明确说“第0个盘块开始编号”有的说“从第1个开始编号”这直接决定了位示图计算的答案差异。我的习惯是在草稿纸上先把起止编号写出来再套公式而不是盯着卷面心算。第二个陷阱是SCAN磁盘调度算法的方向。题干会给“当前磁头正在向磁道号增大方向移动”那磁头就要一直增大直到最远端请求处理完再掉头如果题目说“减小方向”那就要先往小号方向走。有些题还会故意把“先来先服务”和“扫描算法”的请求序列排得一样让人下意识按FCFS顺序计算审题时不标注算法类型就会出错。我的建议是读到题目第一句就画出磁头位置和请求队列再在数轴旁边写上算法名称防止做着做着忘了算法。第三个陷阱是SPOOLing与虚拟存储的混淆。SPOOLing是设备虚拟化技术把物理独占设备变成逻辑共享设备针对的是打印机这类慢速设备虚拟存储则是内存管理的概念针对的是内存容量不足问题。考试可能给出一个描述问它体现了什么技术很多考生只看“虚拟”两个字就直接选虚拟存储实际上应该选SPOOLing。区分方式很简单看描述里有没有“打印机”“输出井”“输入井”“独占设备”这些标记性词汇。第四个陷阱是作业调度与进程调度的算法混用。短作业优先、高响应比优先、时间片轮转这些算法既可用于作业调度也可用于进程调度但应用层面完全不同。时间片轮转在作业调度中没有意义因为作业调度不涉及CPU时间片的分配。考试中出现“时间片”三个字基本可以判断是在考查进程调度而不是作业调度。5.2 一个完整的真题计算示范把流程走一遍我拿一道典型的复习题来演示标准解题过程假设系统采用位示图法管理磁盘空间每个磁盘块大小是1KB位示图用4个字节表示一个字的位图盘块号和位号都从0开始问第1000号盘块对应的字号和位号是多少以及该位置在第几个字节中。位示图的核心公式是盘块号 字号 × 字长 位号。这里字长通常是一个字有多少二进制位如果每个字是4字节那么字长就是32位。根据公式1000 字号 × 32 位号用1000除以32商是31余数是8所以字号是31位号是8。又因为一个字节有8位位号8在字节中对应第1字节位号0到7都在第0字节所以它位于该字的第1个字节中。如果题目问这个盘块是否空闲就需要继续查看位示图中该位置的值1表示已分配0表示空闲。这个计算过程看似简单但真实考场上很多人会在“盘块号从0开始”和“盘块号从1开始”之间犯迷糊。如果盘块号从1开始那第1000号盘块对应的计算就要先把盘块号减1即算盘块999再代入公式。同样位号是否从0开始也要看清楚有些题目为了加大难度盘块号和位号起点并不统一这时必须分步处理。我的建议是拿到题目先圈出“编号从几开始”然后统一转成从0开始计算最后再按题目要求还原成需要的编号方式。5.3 备考刷题顺序与时间分配一个月突击设备文件作业调度如果你离考试还有三到四周操作系统这章的复习可以按以下顺序推进。第一周主攻进程管理和内存管理因为这两块是基础不了解进程状态机就不好理解作业调度的层次关系。第二周集中突破文件管理的计算题包括索引文件大小计算、位示图计算、空闲链表模拟这些都是拿分大户。第三周做设备管理的专题重点练磁盘调度和SPOOLing概念题每天固定做十五道相关真题。考前最后一周用整套真题模拟把操作系统相关的错题集中重做一遍。做题数量和方式的建议是不需要追求题海战术但要把近五年的真题反复做两到三遍。第一遍按知识点分类做第二遍按年份整套做第三遍只看错题。我自己复习时的体会是操作系统这一章的错误率下降非常快第一遍可能错一半第二遍错三成第三遍基本全对因为考点高度重复只是出题角度不同。关键是每道错题都要弄清楚错在哪一步是概念不清、计算粗心还是题干信息漏读分类记录错因会比单纯抄错题更有效。还有一个容易被忽略的提分点公式和定义的精准记忆。比如高响应比优先的公式是(等待时间 运行时间)/运行时间有些考生把分子记成等待时间加服务时间虽然意思相近但阅卷判分只看标准表述写错就可能丢分。再比如DMA方式中“周期挪用”的说法选择题里偶尔会出现知道这个细节就不会被干扰项带偏。6. 从做题到真正理解三块考点的联动与实操总结如果只把设备管理、文件管理、作业调度割裂开背考点做题正确率可能会上去但遇到跨章节的综合题就会发懵。这三块内容实际上共享同一套资源管理思想用户程序的执行需要设备、文件、处理器资源而操作系统的作用就是有序地分配这些资源同时保证公平性、效率和安全性。有一个特别直观的联动场景用户在终端上提交一个打印任务。作业调度先把包含该任务的作业调入内存进程调度为其中的进程分配CPU时间片进程执行过程中通过系统调用请求文件系统读取打印机驱动文件文件管理系统在磁盘上找到对应的数据块设备管理再通过SPOOLing把打印数据送入输出井最终由打印机硬件完成输出。整个过程里作业调度、文件管理和设备管理都参与了只要把这条链路串起来就能在做题时快速定位题目考的是哪一环。实操中最有效的复习方法是画图。把作业状态转换图画一遍再画设备管理的I/O控制方式流程图最后画文件物理结构的存储示意三张图画完很多零散的知识点就被串起来了。不要追求画得精美更不要用复杂的绘图工具草稿纸直尺加铅笔就够了。画图的过程就是强迫自己梳理逻辑关系的过程这比盯着PPT反复看要高效得多。最后再分享一个小技巧做操作系统部分的真题时把自己当作一个“资源管理员”来看待每道题问自己谁会申请资源、资源总量是多少、分配策略是什么、有没有冲突、会不会出现等待。带着这套问题去看设备管理、文件管理、作业调度的题目思路会清晰很多。把每一道错题都归到这张资源管理模型上久而久之你会发现复习操作系统不再是一堆孤立的公式和概念而是一张可以灵活调用的知识网络。这个过程本身就是备考软件设计师最有价值的收获。
返回列表