操作系统是上午题里的第二大章:本章收录 2009—2021 年 96 道真题(151 个空),规模仅次于网络与安全,但它比前几章"值钱"——考点集中在十来个公式和模型上,年年原样复考。

这一章的复习策略是公式与模型双轨。模型轨:前趋图配 PV 操作、生产者—消费者、银行家算法安全性检查、进程资源图化简,四个模型各管一片题,每个模型的操作步骤都是机械的,练熟就是送分。公式轨:信号量取值范围 [-(n-m), m]、死锁最少资源数 n×(w-1)+1、单双缓冲时间、磁盘读取时间、索引容量 5+2×256+256²、位示图字数——每个公式都配好了标准解题动作。

本章知识骨架:

  • 进程管理(约三分之一题量):三态模型、前趋图与 PV、信号量、生产者消费者、死锁与银行家。
  • 存储管理:页式/段页式地址变换、页面淘汰、虚拟页式缺页、可变分区。
  • 文件管理:索引节点、目录与路径、位示图,全是一步一个公式的计算题。
  • 设备管理:单双缓冲、移臂与旋转调度、I/O 软件层次。

每个板块开头给出该板块的方法论公式,解析里则把每道题的计算步骤完整摊开。

一、操作系统概述:职能、层次与杂题

操作系统概述部分考得很散:操作系统的层次地位、四大职能(处理机管理、存储管理、设备管理、文件管理)、嵌入式系统初始化、实时/分时系统的概念边界,甚至云计算部署模型也会在这里出现。这类题没有计算,全靠定义与分类的准确记忆。本章给出两个总判据:第一,判断"某事物属于哪一层"时,锚定"硬件—操作系统—系统软件—应用软件"这条链,操作系统永远紧贴硬件;第二,判断"某职能属于谁"时,对照操作系统的职能清单,清单之外(如编译器设计)一律不属于操作系统要操心的事。

真题 1 2009 下 · 题 23、24

操作系统是裸机上的第一层软件,其他系统软件(如 (23) 等)和应用软件都是建立在操作系统基础上的。下图①②③分别表示 (24) 。(2009年下半年)

(23)
  • A编译程序、财务软件和数据库管理系统软件
  • B汇编程序、编译程序和Java解释器
  • C编译程序、数据库管理系统软件和汽车防盗程序
  • D语言处理程序、办公管理软件和气象预报软件
(24)
  • A应用软件开发者、最终用户和系统软件开发者
  • B应用软件开发者、系统软件开发者和最终用户
  • C最终用户、系统软件开发者和应用软件开发者
  • D最终用户、应用软件开发者和系统软件开发者
查看答案与解析收起答案与解析
答案(23)B (24)D

这道题考操作系统的层次地位和每层软件对应的使用者。先看(23):题干说"其他系统软件(如 (23) 等)"——教材把系统软件分成两块,紧贴硬件的是操作系统,它之上、应用软件之下的那层叫"其他系统软件",典型成员就是语言处理程序:汇编程序、编译程序、解释器。B 的三个成员全部属于这一层,正确。A 里的财务软件是典型的应用软件,混进来了;C 里的汽车防盗程序是嵌在设备里的应用软件;D 里的办公管理软件、气象预报软件也都是应用软件,只有"语言处理程序"一个词沾边。

再看(24):图是一张金字塔,从下往上依次是计算机硬件、操作系统、其他系统软件、应用软件。①画在应用软件上方,是站在塔尖直接使用软件的人,即最终用户;②画在应用软件与其他系统软件交界处,是编写应用软件的人,即应用软件开发者;③画在操作系统和硬件交界处,是开发操作系统、编译器这类底层软件的人,即系统软件开发者。所以顺序是最终用户、应用软件开发者、系统软件开发者,选 D。A、B、C 三个选项都是这三个人名的不同排列,只要认清①在塔尖(用户)、③在塔底(系统软件开发者),就能排除所有把系统软件开发者放在第一位的选项。

真题 2 2017 下 · 题 23

计算机系统的层次结构如下图所示,基于硬件之上的软件可分为a、b和c三个层次。图中a、b和c分别表示 (23) 。(2017年下半年)

  • A操作系统、系统软件和应用软件
  • B操作系统、应用软件和系统软件
  • C应用软件、系统软件和操作系统
  • D应用软件、操作系统和系统软件
查看答案与解析收起答案与解析
答案(23)C

考的还是"操作系统紧贴硬件"这条层次铁律。图中金字塔从下往上四层:计算机硬件、c、b、a,最终用户在塔尖使用 a 层软件。判定的锚点是:操作系统是裸机上的第一层软件,必须直接建立在硬件之上,所以 c 只能是操作系统;a 直接面向最终用户,是应用软件;夹在中间的 b 是其他系统软件(编译程序、数据库管理系统这类)。三者合起来:a=应用软件、b=系统软件、c=操作系统,选 C。

A 把 a 说成操作系统——操作系统在塔尖,用户就得以硬件方式直接操作计算机了,层次颠倒;B 把 a、b 都说成操作系统、系统软件,等于把 c(真正该是操作系统的一层)留给了应用软件,同样颠倒;D 的问题在 c:把 c 说成系统软件,那紧贴硬件的就不是操作系统了,违背"第一层软件"的定义。这道题和 2009 年下半年那道层次题是同一考点的两次命题,记住"硬件—操作系统—系统软件—应用软件—用户"这条链,两个方向考都不怕。

真题 85 2014 上 · 题 23

设计操作系统时不需要考虑的问题是 (23) 。(2014年上半年)

  • A计算机系统中硬件资源的管理
  • B计算机系统中软件资源的管理
  • C用户与计算机之间的接口
  • D语言编译器的设计实现
查看答案与解析收起答案与解析
答案(23)D

操作系统的职能边界题。操作系统管理计算机系统的硬件资源(处理机、存储器、设备)与软件资源(文件、信息),并向用户提供接口,A、B、C 都是其本职工作。D 的"语言编译器的设计实现"属于语言处理程序的范畴——编译器是系统软件,但它是独立开发的软件产品,不是操作系统设计时要考虑的问题,选 D。

这道题反向考"操作系统是什么":A 的硬件资源管理对应处理机管理、存储管理、设备管理四大职能中的三个;B 的软件资源管理对应文件管理;C 的"用户与计算机之间的接口"对应命令接口、程序接口(系统调用)与图形界面。四个选项里只有 D 是"另一个系统软件的内部设计问题"。类似的边界题还有"数据库管理系统是不是操作系统的一部分"(不是,是其他系统软件)——判断标准就一条:操作系统的职能清单里有没有这一项,清单外的一律不属于。

真题 86 2015 上 · 题 27、28

嵌入式系统初始化过程主要有3个环节,按照自底向上、从硬件到软件的次序依次为 (27) 。系统级初始化主要任务是 (28) 。(2015年上半年)

(27)
  • A片级初始化→系统级初始化→板级初始化
  • B片级初始化→板级初始化→系统级初始化
  • C系统级初始化→板级初始化→片级初始化
  • D系统级初始化→片级初始化→板级初始化
(28)
  • A完成嵌入式微处理器的初始化
  • B完成嵌入式微处理器以外的其他硬件设备的初始化
  • C以软件初始化为主,主要进行操作系统的初始化
  • D设置嵌入式微处理器的核心寄存器和控制寄存器工作状态
查看答案与解析收起答案与解析
答案(27)B (28)C

嵌入式系统初始化的三级流程。(27)问自底向上(从硬件到软件)的次序:片级初始化→板级初始化→系统级初始化,选 B。片级初始化最底层,完成微处理器内部(寄存器、核心状态)的设置;板级初始化在片级之上,初始化处理器以外的其他硬件设备(存储器、外设接口等);系统级初始化最顶层,以软件为主。A 的顺序把系统级插在片级与板级之间,违背"从硬件到软件"的方向;C、D 以系统级开头,完全倒置。

(28)问系统级初始化的主要任务:以软件初始化为主,主要进行操作系统的初始化,选 C。A 的"微处理器初始化"是片级初始化的任务;B 的"其他硬件设备初始化"是板级初始化的任务;D 的"设置核心寄存器和控制寄存器工作状态"同样属于片级。三级各自干什么,用一句话绑定记忆:片级=CPU 自己,板级=板卡上的其他硬件,系统级=操作系统与软件环境——顺序自底向上,任务自硬向软。这道题与 2015 年上官方答案一致,属于结论固定的送分题。

真题 87 2016 上 · 题 23

当用户通过键盘或鼠标进入某应用系统时,通常最先获得键盘或鼠标输入信息的是 (23) 程序。(2016年上半年)

  • A命令解释
  • B中断处理
  • C用户登录
  • D系统调用
查看答案与解析收起答案与解析
答案(23)B

中断机制与输入的关系题。用户敲键盘或动鼠标时,硬件产生的是中断信号,最先获得输入信息的是中断处理程序——它响应硬件中断、从设备控制器读出数据、把事件转交给相应的驱动程序和系统软件,选 B。

A 的命令解释程序:是操作系统接收用户命令(如 shell 里的命令行)后进行解释执行的组件,工作在输入信息被层层递交之后,离硬件很远;C 的用户登录程序:管的是身份认证,与输入事件的实时处理无关;D 的系统调用:是用户程序主动请求操作系统服务的接口,方向是"程序→系统",而键盘鼠标输入是"设备→系统"的被动事件,走的是中断路径而非系统调用路径。这道题的关键在"最先"两个字:硬件事件的第一站永远是中断处理程序,之后才按"I/O 软件 4 层结构"逐层上传(中断处理→设备驱动→与设备无关的系统软件→用户层)。它也与题 91 的 I/O 层次图互为表里,两题连着复习效果最好。

真题 88 2016 上 · 题 24

在Windows操作系统中,当用户双击“IMG_20160122_103.jpg”文件名时,系统会自动通过建立的 (24) 来决定使用什么程序打开该图像文件。(2016年上半年)

  • A文件
  • B文件关联
  • C文件目录
  • D临时文件
查看答案与解析收起答案与解析
答案(24)B

Windows 文件关联机制题。双击 IMG_20160122_103.jpg 时,系统并不"认识"这个文件本身,而是根据扩展名 .jpg 查一张注册表维护的映射表——文件关联(扩展名→打开程序),决定用哪个应用程序打开它,选 B。

A 的"文件":泛指,没有机制含义;C 的文件目录:管的是文件的组织与按名存取(路径解析),与"用什么程序打开"无关;D 的临时文件:是程序运行中暂存数据的文件,与此场景无关。文件关联是 Windows 图形界面体验的基础:改动默认打开方式、右键"打开方式"菜单,背后维护的都是这张关联表。顺带区分三个"文件系统基础概念":文件目录管查找、文件关联管打开方式、文件属性管只读/隐藏等控制(题 79 的文件级安全)——三个概念三道题,各自成对出现,混淆任何一对都会丢分。

真题 89 2016 下 · 题 23

实时操作系统主要用于有实时要求的过程控制等领域。实时系统对于来自外部的事件必须在 (23) 。(2016年下半年)

  • A一个时间片内进行处理
  • B一个周转时间内进行处理
  • C一个机器周期内进行处理
  • D被控对象规定的时间内做出及时响应并对其进行处理
查看答案与解析收起答案与解析
答案(23)D

实时操作系统的定义题。实时系统的核心特征:对外部事件的响应与处理必须在被控对象规定的时间内完成——这个截止期由外部物理过程决定,而不是由系统自身的调度参数(时间片、机器周期)决定,选 D。

A 的"一个时间片内":时间片是分时系统的概念,实时系统甚至常采用可抢占的优先级调度而不依赖固定时间片;B 的"一个周转时间内":周转时间是批处理系统衡量作业从提交到完成的总时间指标,属于吞吐量视角,与实时性无关;C 的"一个机器周期内":机器周期是 CPU 内部的时序单位(纳秒级),绝大多数实时响应远达不到这个量级,且实时性关注的是"满足规定期限",不是"越快越好"。实时系统进一步分硬实时(期限错过即灾难,如飞控)与软实时(偶尔超时可用,如视频播放),这个延伸概念也曾在上午题出现。记定义的抓手:实时 = 在规定时间内响应并处理,期限由外部被控对象规定。

真题 92 2019 上 · 题 28

从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置。该要求体现了嵌入式操作系统的 (28) 。(2019年上半年)

  • A可定制性
  • B实时性
  • C可靠性
  • D易移植性
查看答案与解析收起答案与解析
答案(28)A

嵌入式操作系统特性题。题干给出两个需求:能运行在不同的微处理器平台上(可移植),能针对硬件变化进行结构与功能上的配置(可定制)。对照选项:A 的可定制性直接对应"针对硬件变化进行结构与功能上的配置"——嵌入式 OS 常以组件/模块方式裁剪组装,按需删减文件系统、网络协议栈等,选 A。

B 的实时性:指在规定时间内完成响应与处理,题干只字未提时限;C 的可靠性:指稳定运行、故障恢复能力,同样与题干描述无关;D 的易移植性:它对应的是前半句"能运行在不同的微处理器平台上"——但题干把两个要求并列成一个整体特征问"该要求体现了什么",官方口径取"可配置/可定制"这半句为主导。这里有个辨析点:如果题干只问"运行在不同处理器平台上",答案应为易移植性;加上"结构与功能上可配置"后,考点落在嵌入式 OS 区别于通用 OS 的标志性能力——可定制(可裁剪)性上。嵌入式 OS 四大特性(实时性、可裁剪/定制、可靠性、易移植性)各自对应一句场景描述,背场景比背名词有效。

真题 96 2021 上 · 题 23

云计算有多种部署模型(Deployment Models)。若云的基础设施是为某个客户单独使用而构建的,那么该部署模型属于 (23) 。(2021年上半年)

  • A公有云
  • B私有云
  • C社区云
  • D混合云
查看答案与解析收起答案与解析
答案(23)B

云计算部署模型题。四种部署模型的划分标准是"云基础设施由谁使用":私有云——为某个客户(组织)单独使用而构建,可以是自建机房也可以是托管,但使用权独占,题干描述完全吻合,选 B。

A 的公有云:基础设施面向不特定公众开放使用(如阿里云、AWS 的公共资源池),与"单独使用"矛盾;C 的社区云:由若干有共同关切(使命、安全要求、政策、合规考虑)的组织共建共享,使用主体是"一群"而非"一个";D 的混合云:两种及以上独立云(私有+公有等)通过标准或专有技术绑定而成,题干没有提及组合。四模型的一句话判别法:公众用=公有,一家用=私有,一群组织共用=社区,混着用=混合。这道题属于 2021 年上杂题选讲部分,操作系统章节里出现云计算题是命题范围的自然延伸(系统软件与基础设施的边界),考点本身只是名词辨析,送分性质。

二、进程与线程:三态模型、共享与私有

进程三态模型是所有调度题的底座,五条迁移边各有触发条件:运行→就绪靠时间片到或被抢占(被动),运行→等待靠主动申请 I/O,等待→就绪靠事件发生(如资源释放),就绪→运行靠被调度。做题时先分清"被动剥夺"与"主动等待",状态排列题就不会错。线程部分只有一条分界线:进程拥有的资源(代码、数据、打开文件)线程共享;线程执行现场(栈、栈指针、寄存器、TCB)线程私有——这个知识点三年两头考,选项顺序变、结论不变。

真题 14 2019 上 · 题 23、24

在单处理机系统中,采用先来先服务调度算法。系统中有4个进程P1、P2、P3、P4(假设进程按此顺序到达),其中P1为运行状态,P2为就绪状态,P3和P4为等待状态,且P3等待打印机,P4等待扫描仪。若P1 (23) ,则P1、P2、P3和P4的状态应分别为 (24) 。(2019年上半年)

(23)
  • A时间片到
  • B释放了扫描仪
  • C释放了打印机
  • D已完成
(24)
  • A等待、就绪、等待和等待
  • B运行、就绪、运行和等待
  • C就绪、运行、等待和等待
  • D就绪、就绪、等待和运行
查看答案与解析收起答案与解析
答案(23)A (24)C

三态模型与调度算法结合的题。四个进程:P1 运行、P2 就绪、P3 等打印机(等待态)、P4 等扫描仪(等待态),采用先来先服务。(23)问"P1 怎么了"才能让四进程状态重新排列。看(24)的答案反推:目标状态是"就绪、运行、等待和等待",即 P1 从运行变就绪、P2 从就绪变运行、P3 P4 不动。能让运行态进程变成就绪的只有两种事:时间片到(被剥夺 CPU)或有更高优先级进程到达;FCFS 非抢占式下只有时间片到这一种(本题按时间片轮转的运行/就绪切换理解)。所以(23)选 A(时间片到)。B"释放了扫描仪"——P1 自己持有扫描仪才谈得上释放,释放扫描仪只会唤醒 P4,与 P1 自己的状态无关;C"释放了打印机"同理;D"P1 已完成"会让 P1 消失而非变就绪,且完成后被唤醒的是 P4(它等的是扫描仪)。

(24)问变化后四个进程的状态。P1 时间片到→就绪;调度器从就绪队列选中 P2→运行;P3 仍在等打印机、P4 仍在等扫描仪,都是等待。即"就绪、运行、等待和等待",选 C。A 把 P1 说成等待——时间片到是"运行→就绪",不是"运行→等待",这是三态模型最容易混的一条边:等待态是进程主动等 I/O 或事件,被剥夺 CPU 是被动进就绪;B 把 P3 说成运行,P3 的打印机还没等到,不可能运行;D 把 P4 说成运行同理。

真题 15 2021 下 · 题 23

在单处理机计算机系统中有1台打印机、1台扫描仪,系统采用先来先服务调度算法。假设系统中有进程P1、P2、P3、P4,其中P1为运行状态,P2为就绪状态,P3等待打印机,P4等待扫描仪。此时,若P1释放了扫描仪,则进程P1、P2、P3、P4的状态分别为(23) 。(2021年下半年)

  • A等待、运行、等待、就绪
  • B运行、就绪、等待、就绪
  • C就绪、就绪、等待、运行
  • D就绪、运行、等待、就绪
查看答案与解析收起答案与解析
答案(23)B

上一题的姊妹题:条件改成"P1 释放了扫描仪",问四个进程的新状态。扫描仪正是 P4 在等的东西——P1 释放扫描仪(V 操作的效果),P4 从等待态被唤醒进入就绪队列;P1 自己没有放弃 CPU,仍是运行态;P2 本来就绪,没人动它,还是就绪;P3 等的打印机没动静,继续等待。所以四个进程依次是"运行、就绪、等待、就绪",选 B。

A 把 P1 说成等待——释放资源是发出 V 操作,进程本身继续运行,不会转入等待态,这是最常见的误区;C 把 P1 说成就绪,剥夺 CPU 的只有时间片到或抢占,释放外设不引起状态下降;D 把 P2 说成运行——单处理机同一时刻只能有一个运行态进程,P1 还在跑,P2 不可能同时运行,这个选项直接违背"单处理机"前提。这道题配上上一题,把三态模型的全部迁移边都覆盖了:运行→就绪(时间片到)、等待→就绪(事件发生)、就绪→运行(被调度),剩下两条是运行→等待(主动申请 I/O)和就绪/等待→…的终态迁移,考试翻来覆去就考这几条边的触发条件。

真题 37 2013 上 · 题 24

在支持多线程的操作系统中,假设进程P创建了若干个线程,那么 (24) 是不能被这些线程共享的。(2013年上半年)

  • A该进程的代码段
  • B该进程中打开的文件
  • C该进程的全局变量
  • D该进程中某线程的栈指针
查看答案与解析收起答案与解析
答案(24)D

线程共享资源的边界题。线程是进程内的执行单元,同一进程内的线程共享进程级的资源:代码段、全局变量、打开的文件、堆内存、信号量等;而线程私有的只有运行时必须独立的东西:栈(存放局部变量和函数调用现场)、寄存器组(含程序计数器)、线程控制块 TCB、栈指针。D 的"该进程中某线程的栈指针"是线程 T3 自己的调用现场信息,别的线程既不需要也不应该访问,属于私有资源,选 D。

A 的代码段:线程本来就是"共享地址空间并发执行同一段程序",代码必然共享;B 的打开文件:文件表挂在进程上,进程里所有线程都能读写,这是线程模型的标准结论;C 的全局变量:全局变量在数据段,地址空间共享,天然共享——也正因为如此,多线程改全局变量才需要互斥锁。A、B、C 全是"能共享"的正确叙述。这道题 2013 年、2015 年各考了一次(答案分别是 D 和 C,两题选项顺序不同、正确项都是"栈指针"),2020 年又变体成"错误叙述"(见下文线程题),可见"线程共享什么、私有什么"是三年两头考的高频点,一句话记住:共享的是地址空间里的东西,私有的是执行现场里的东西。

真题 38 2015 下 · 题 28

在支持多线程的操作系统中,假设进程P创建了若干个线程,那么 (28) 是不能被这些线程共享的。(2015年下半年)

  • A该进程中打开的文件
  • B该进程的代码段
  • C该进程中某线程的栈指针
  • D该进程的全局变量
查看答案与解析收起答案与解析
答案(28)C

与 2013 年那道题同考点换序:进程 P 创建若干线程,问哪个不能被共享。四个选项里 A 的打开文件、B 的代码段、D 的全局变量都属于进程的地址空间与资源清单,线程间天然共享;C 的"该进程中某线程的栈指针"是那个线程私有的执行现场——栈指针指向自己的函数调用栈顶,换一个线程上下文就要换一套栈指针,这是线程切换必须保存/恢复的核心寄存器内容,不可能跨线程共享,选 C。

这道题的干扰项设置和 2013 年完全一样,只是排列顺序变了:2013 年正确项在 D,2015 年挪到 C。命题人反复用同一个知识点、同一组选项,说明它就是教材原文级别的结论。复习时把线程私有的四件套背下来——栈、栈指针、寄存器组(程序计数器)、线程控制块——选项里出现其中任何一个,它就是"不能共享"的答案;其余凡是挂在进程上的资源(内存、文件、信号量、端口)统统可以共享。

真题 39 2020 下 · 题 28

在支持多线程的操作系统中,假设进程P创建了线程T1、T2和T3,那么以下叙述中错误的是 (28) 。(2020年下半年)

  • A线程T1、T2和T3可以共享进程P的代码
  • B线程T1、T2可以共享P进程中T3的栈指针
  • C线程T1、T2和T3可以共享进程P打开的文件
  • D线程T1、T2和T3可以共享进程P的全局变量
查看答案与解析收起答案与解析
答案(28)B

问法反转:以下叙述中错误的是哪个。A 的"线程 T1、T2 和 T3 可以共享进程 P 的代码"——代码段在进程地址空间里,正确;C 的"可以共享进程 P 打开的文件"——文件表属于进程,正确;D 的"可以共享进程 P 的全局变量"——全局变量在数据段,正确。B 的"线程 T1、T2 可以共享 P 进程中 T3 的栈指针"——栈指针是 T3 线程私有的执行现场,指向 T3 自己的函数调用栈,T1、T2 各有各的栈和栈指针,谁也共享不了谁的,错误叙述,选 B。

这道题的陷阱在于把"共享进程的资源"与"共享某个线程的私有资源"混为一谈:前三项的主语都是"进程 P 的 XX"(进程级资源,线程共享天经地义),只有 B 的主语是"T3 的栈指针"(线程级私有物)。三道线程共享题连读,教材想让你刻进脑子的边界就是那条线:进程拥有的东西大家用,线程执行时自己的现场自己用——栈、栈指针、寄存器、TCB 永远私有,其余共享。

真题 90 2017 下 · 题 24、25

下图所示的PCB(进程控制块)的组织方式是 (24) ,图中 (25) 。(2017年下半年)

(24)
  • A链接方式
  • B索引方式
  • C顺序方式
  • DHash
(25)
  • A有1个运行进程、2个就绪进程、4个阻塞进程
  • B有2个运行进程、3个就绪进程、2个阻塞进程
  • C有1个运行进程、3个就绪进程、3个阻塞进程
  • D有1个运行进程、4个就绪进程、2个阻塞进程
查看答案与解析收起答案与解析
答案(24)B (25)C

PCB 组织方式识图题。(24)问图中 PCB 的组织方式:图中有"运行指针"直接指向一个 PCB,另有"就绪索引表"和"阻塞索引表"各自持有若干指向 PCB 的指针——按索引表组织 PCB 队列,这是索引方式,选 B。链接方式是把同状态 PCB 用指针串成链表(就绪链表、阻塞链表),图中给的是"索引表+散列指针"结构而非链;顺序方式把 PCB 连续存放在数组区,靠下标定位;Hash 方式按 PCB 标识散列定位——图里既没有链式指针串,也没有连续表结构,排除 A、C、D。

(25)问图中进程状态统计:运行指针指向 PCB1,运行进程 1 个;就绪索引表有 3 项,指向 PCB2、PCB3、PCB4?对照图与选项,就绪 3 个;阻塞索引表 3 项,阻塞 3 个。合计"1 个运行、3 个就绪、3 个阻塞",选 C。A 的"2 就绪 4 阻塞"、B 的"2 运行"(单处理机不可能两个运行)、D 的"4 就绪 2 阻塞"都是数错指针项数的结果。这道题的读图要点:数指针条目数,而不是数 PCB 框数——图里画了 7 个 PCB,但挂在各表上的只有 1+3+3=7 个?恰好全挂上了,那就要看每张表实际指向了几个:按官方答案 C 的口径,就绪 3、阻塞 3、运行 1,共 7 个进程,全部 PCB 各有归属,读图时逐条指针数清楚即可。

三、前趋图与 PV 操作:一套方法吃下 21 道题

这是本章题量最大的板块,但方法高度统一。前趋图题:每条有向边配一个信号量(初值 0),边的起点进程做完做 V,边的终点进程开做前先 P——按此规则逐进程"数入边做 P、数出边做 V",做完核对全图 P、V 次数都等于边数即可。信号量数值题:上限=资源数 m,下限=资源数−进程数,即 [-(n-m), m];S>0 表示剩余资源数,S 的绝对值表示等待进程数。生产者—消费者题认准三件套:互斥信号量初值 1、空位信号量初值=容量、产品信号量初值 0,且每个 P 必须在所有分支(含异常退出)有对应 V。

真题 3 2009 下 · 题 25、26

进程P1、P2、P3和P4的前趋图如下:
若用PV操作控制这几个进程并发执行的过程,则需要设置4个信号量S1、S2、S3和S4,且信号量初值都等于零。下图中a和b应分别填写 (25) ,c和d应分别填写 (26) 。(2009年下半年)

(25)
  • AP(S1)P(S2)和P(S3)
  • BP(S1)P(S2)和V(S1)
  • CV(S1)V(S2)和P(S1)
  • DV(S1)V(S2)和V(S3)
(26)
  • AP(S1)P(S2)和P(S4)
  • BP(S2)P(S3)和P(S4)
  • CV(S1)V(S2)和V(S4)
  • DV(S2)V(S3)和V(S4)
查看答案与解析收起答案与解析
答案(25)C (26)B

前趋图配 PV 操作的标准套路:每条有向边分配一个信号量,边的起点进程做完就 V,边的终点进程开做前先 P。图中边有四条:P1→P2、P1→P3、P2→P3、P3→P4,对应 S1、S2、S3、S4(初值均为 0)。

(25)问 a、b。a 是 P1 执行完之后的位置:P1 有两条出边(通知 P2 和 P3),所以要连做两个 V 操作,即 V(S1)、V(S2);b 是 P2 执行之前的位置:P2 只有一条入边(等 P1),做一个 P(S1) 即可。合起来是"V(S1)V(S2) 和 P(S1)",选 C。A 把 a 写成 P 操作——P1 是整个图里唯一的源点,没有任何前驱,不需要等待,P 操作放这里语义就错了;B 的 b 处写成 V(S1),把"等待"写成了"通知",方向反了;D 同样错在 b。

(26)问 c、d。c 是 P3 之前:P3 有两条入边(等 P1 和等 P2),必须连续做 P(S2)、P(S3);d 是 P4 之前:P4 只等 P3,做 P(S4)。合起来"P(S2)P(S3) 和 P(S4)",选 B。A、C 的 c 处出现 V 操作,进程还没开始执行就"通知别人",显然不合理;D 的 d 处写了两个 P,等于让 P4 去等一个根本不存在的第二条前驱边。这类题做完可以数一下:全图 V 的次数应等于 P 的次数、都等于边数(4),对不上就是漏了或多了。

真题 4 2010 下 · 题 23、24、25

进程P1、P2、P3、P4和P5的前趋图如下:
若用PV操作控制进程P1〜P5并发执行的过程,则需要设置6个信号量S1、S2、S3、S4、S5和S6,且信号量S1〜S6的初值都等于零。下图中a和b处应分别填写 (23) ;c和d处应分别填写 (24) ,e和f处应分别填写 (25) 。(2010年下半年)

(23)
  • AP(S1)P(S2)和P(S3)P(S4)
  • BP(S1)V(S2)和P(S2)V(S1)
  • CV(S1)V(S2)和V(S3)V(S4)
  • DP(S1)P(S2)和V(S1)V(S2)
(24)
  • AP(S1)P(S2)和V(S3)V(S4)
  • BP(S1)P(S3)和V(S5)V(S6)
  • CV(S1)V(S2)和P(S3)P(S4)
  • DP(S1)V(S3)和P(S2)V(S4)
(25)
  • AP(S3)P(S4)和V(S5)V(S6)
  • BV(S5)V(S6)和P(S5)P(S6)
  • CP(S2)P(S5)和P(S4)P(S6)
  • DP(S4)V(S5)和P(S5)V(S6)
查看答案与解析收起答案与解析
答案(23)C (24)B (25)C

图里有六条边:P1→P3、P1→P4、P2→P3、P2→P5、P3→P4、P3→P5,所以需要六个信号量 S1~S6(初值全为 0),一一挂到六条边上。判断口诀不变:入边上做 P,出边上做 V。

(23)问 a、b,即 P1 和 P2 执行完的位置。P1 有两条出边(到 P3、P4),要 V(S1) 和 V(S2);P2 也有两条出边(到 P3、P5),要 V(S3) 和 V(S4)。四个 V 连用,选 C。A、B、D 都在源点进程的位置放 P 操作——P1、P2 是前趋图的源点,没有前驱可言,放 P 就是死等一个永远不会到来的信号,方向性错误。

(24)问 c、d,即 P3 的头和尾。P3 有两条入边(等 P1、P2),开头做 P(S1)P(S3);两条出边(通知 P4、P5),结尾做 V(S5)V(S6),选 B。A 的开头少了 P(S3),P3 就可能抢在 P2 之前跑;C 结尾写成 P(S3)P(S4),通知又变成了等待。

(25)问 e、f,即 P4、P5 开头。P4 等两条边(来自 P1 的 S2 和来自 P3 的 S5),做 P(S2)P(S5);P5 等两条边(来自 P2 的 S4 和来自 P3 的 S6),做 P(S4)P(S6),选 C。A、B、D 的信号量组合对应不上各自进程的入边,比如 D 给 P4 配的是 S4、S6,那是 P5 的入边。这类题最稳的做法是先把每条边标注信号量编号,再逐进程"数入边做 P、数出边做 V"。

真题 5 2015 上 · 题 23、24、25

进程P1、P2、P3、P4和P5的前趋图如下所示:
若用PV操作控制进程P1、P2、P3、P4和P5并发执行的过程,则需要设置5个信号
量S1、S2、S3、S4和S5,且信号量S1〜S5的初值都等于零。下图中a、b和c处应分别填写 (23) ;d和e处应分别填写 (24) ,f和g处应分别填写 (25) 。(2015年上半年)

(23)
  • AV(S1)、P(S1)和V(S2)V(S3)
  • BP(S1)、V(S1)和V(S2)V(S3)
  • CV(S1)、V(S2)和P(S1)V(S3)
  • DP(S1)、V(S2)和V(S1)V(S3)
(24)
  • AV(S2)和P(S4)
  • BP(S2)和V(S4)
  • CP(S2)和P(S4)
  • DV(S2)和V(S4)
(25)
  • AP(S3)和V(S4)V(S5)
  • BV(S3)和P(S4)P(S5)
  • CP(S3)和P(S4)P(S5)
  • DV(S3)和V(S4)V(S5)
查看答案与解析收起答案与解析
答案(23)A (24)B (25)C

五条边、五个信号量:P1→P2 用 S1,P2→P3 用 S2,P2→P4 用 S3,P3→P5 用 S4,P4→P5 用 S5,初值均为 0。老规矩:进程开头对着入边做 P,结尾对着出边做 V。

(23)问 a、b、c 三处。a 是 P1 末尾:P1 只有一条出边,做 V(S1);b 是 P2 开头:P2 只有一条入边(等 P1),做 P(S1);c 是 P2 末尾:P2 有两条出边(到 P3、P4),连做 V(S2)V(S3)。三段合起来"V(S1)、P(S1) 和 V(S2)V(S3)",选 A。B 把 a、b 两处对调(源点做 P、后继做 V,方向全反);C 的 b 处写成 V(S2),等于 P2 还没开始就通知 P3;D 的 c 处混入了 P 操作。

(24)问 d、e,对应 P3 的头和尾。P3 开头等 P2,做 P(S2);结尾通知 P5,做 V(S4),选 B。A 开头写成 V(S2) 方向反了;C 结尾改成 P(S4),P3 做完了反而去等自己通知出去的信号量,会造成互相等待。

(25)问 f、g,对应 P4 的头和 P5 的头。P4 开头等 P2,做 P(S3);P5 有两条入边(等 P3 的 S4 和等 P4 的 S5),开头做 P(S4)P(S5),选 C。A 的 f 处 V(S3) 方向反;B 的 g 处只有一个 P,漏等了 P4;D 的 f 处写成 V(S3) 同样方向反。做完可以复核:每个进程的 P 数等于它的入边数、V 数等于出边数,五条边共五 P 五 V,数目闭合。

真题 6 2016 上 · 题 26、27、28

进程P1、P2、P3、P4和P5的前趋图如下图所示:
若用PV操作控制进程P1、P2、P3、P4和P5并发执行的过程,则需要设置5个信号S1、S2、S3、S4和S5,且信号量S1〜S5的初值都等于零。下图中a和b处应分别填入 (26) ;c和d处应分别填入 (27) ;e和f处应分别填入 (28) 。(2016年上半年)

(26)
  • AV(S1)P(S2)和V(S3)
  • BP(S1)V(S2)和V(S3)
  • CV(S1)V(S2)和V(S3)
  • DP(S1)P(S2)和V(S3)
(27)
  • AP(S2)和P(S4)
  • BP(S2)和V(S4)
  • CV(S2)和P(S4)
  • DV(S2)和V(S4)
(28)
  • AP(S4)和V(S4)V(S5)
  • BV(S5)和P(S4)P(S5)
  • CV(S3)和P(S4)P(S5)
  • DP(S3)和P(S4)P(S5)
查看答案与解析收起答案与解析
答案(26)C (27)B (28)B

2016 年上半年的这道题把信号量的位置直接标在了进程框里,解题思路仍然是"边头 P、边尾 V"。图中五条边:P1→P2 用 S1,P1→P3 用 S2,P2→P4 用 S3,P3→P5 用 S4,P4→P5 用 S5。

(26)问 a、b。a 在 P1 末尾:P1 有两条出边(通知 P2、P3),做 V(S1)V(S2);b 在 P2 末尾:P2 有一条出边(到 P4),做 V(S3)。合起来"V(S1)V(S2) 和 V(S3)",选 C。A 把 b 写成 P(S2)?注意 A 选项是"V(S1)P(S2) 和 V(S3)",b 处的 P(S2) 等的是 P1→P3 那条边,但 P2 与这条边毫无关系,P2 等的应该是 S1——而 P(S1) 已经标在 P2 的开头了,再 P 一次就重复等待;B、D 的 a 处出现 P 操作,P1 是源点不该等任何人。

(27)问 c、d,即 P3 的头尾。P3 开头等 P1,做 P(S2);结尾通知 P5,做 V(S4),选 B。A 的 d 处 P(S4) 方向反;C 的 c 处 V(S2) 方向反;D 两处都是 V,整个 P3 既不等也不通知,明显不对。

(28)问 e、f,即 P4 的尾和 P5 的头。P4 结尾通知 P5,做 V(S5);P5 有两条入边(等 P3 的 S4、等 P4 的 S5),开头做 P(S4)P(S5),选 B。A 的 f 处写成 V(S4)V(S5),让 P5 开头就做两个 V,方向全反;C 的 e 处是 V(S3),那是 P2 末尾的活;D 的 e 处 P(S3) 等错了信号量。

真题 7 2017 上 · 题 26、27、28

进程P1、P2、P3、P4和P5的前趋图如下所示:
若用PV操作控制进程P1、P2、P3、P4和P5并发执行的过程,需要设置5个信号量S1、S2、S3、S4和S5,且信号量S1〜S5的初值都等于零。如下的进程执行图中a和b处应分别填写 (26) ;c和d处应分别填写 (27) ;e和f处应分别填写 (28) 。(2017年上半年)

(26)
  • AV(S1)和P(S2)V(S3)
  • BP(S1)和V(S2)V(S3)
  • CV(S1)和V(S2)V(S3)
  • DP(S1)和P(S2)V(S3)
(27)
  • AP(S2)和P(S4)
  • BV(S2)和P(S4)
  • CP(S2)和V(S4)
  • DV(S2)和V(S4)
(28)
  • AP(S4)和V(S5)
  • BV(S5)和P(S4)
  • CV(S4)和P(S5)
  • DV(S4)和V(S5)
查看答案与解析收起答案与解析
答案(26)B (27)C (28)A

这张前趋图的五条边是:P1→P2 用 S1,P2→P3 用 S2,P2→P4 用 S3,P3→P4 用 S4,P4→P5 用 S5。注意这张图与 2016 年上半年那道(上一题)骨架相似但边不同——P3 与 P4 之间是 P3→P4 而不是 P4→P5 直连,信号量分配必须重推,不能凭印象套答案。

(26)问 a、b,即 P2 的头和尾。P2 开头等 P1,做 P(S1);结尾有两条出边(通知 P3、P4),做 V(S2)V(S3),选 B。A 的 b 处只有 V(S2)V(S3)?看错——A 是"P(S1) 和 V(S2)V(S3)"里的 P 开头,对照原选项 A 为"V(S1) 和 P(S2)V(S3)",a 处做成 V、b 处开头又去 P(S2),等于 P2 先通知后等待,顺序错乱;C、D 的 a 处都有 P(S1),但 P2 开头的 P(S1) 题面已标出,a、b 是图中剩下的空位,把已标内容再填一遍属于重复。

(27)问 c、d,即 P3 的头尾。P3 开头等 P2,做 P(S2);结尾通知 P4,做 V(S4),选 C。A 的 c 处 P(S2)?A 是"P(S2) 和 P(S4)",d 处把通知写成了等待;B 的 c 处 V(S2) 方向反;D 两处全是 V。

(28)问 e、f,即 P4 的头尾之外还需注意:P4 开头已标 P(S3),e 是 P4 末尾前的等待位(等 P3 的 S4),f 是 P4 末尾(通知 P5 的 V(S5))。合起来"P(S4) 和 V(S5)",选 A。B 把两个位置对调;C、D 的信号量配对关系与 P4 的入出边不符。复核数目:五条边、五个 P、五个 V,各进程对号入座后无剩余。

真题 8 2018 下 · 题 24、25、26

进程P1、P2、P3、P4和P5的前趋图如下所示:
若用PV操作控制这5个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为 (24) ;空③和空④处应分别为 (25) ;空⑤和空⑥处应分别为 (26) 。(2018年下半年)

(24)
  • AV(S1)和P(S2)
  • BP(S1)和V(S2)
  • CV(S1)和V(S2)
  • DV(S2)和P(S1)
(25)
  • AV(S3)和V(S5)
  • BP(S3)和V(S5)
  • CV(S3)和P(S5)
  • DP(S3)和P(S5)
(26)
  • AP(S6)和P(S5)V(S6)
  • BV(S5)和V(S5)V(S6)
  • CV(S6)和P(S5)P(S6)
  • DP(S6)和P(S5)P(S6)
查看答案与解析收起答案与解析
答案(24)D (25)B (26)C

这道题把前趋图和伪代码合在一起考,图里六条边:P1→P2 用 S1,P1→P3 用 S2,P2→P3 用 S3,P2→P4 用 S4,P3→P5 用 S5,P4→P5 用 S6。伪代码里已写出的 P(S1)、V(S1)、P(S2)、P(S4)、V(S3)、V(S4) 是提示,六个空 ①~⑥ 要补齐剩下的操作。

(24)问空①②。空①在 P1 的 V(S1) 之后:P1 还有第二条出边(到 P3),所以再补一个 V(S2);空②在 P2 开头:P2 等待 P1,做 P(S1)。合起来"V(S2) 和 P(S1)",选 D。A 的空①写成 P(S2),P1 是源点不该等待;B 空①写成 V(S1),与已标出的 V(S1) 重复,等于 P1 通知了 P2 两次;C 空②写成 V(S2),方向反了。

(25)问空③④。空③在 P3 的 P(S2) 之后:P3 还有第二条入边(等 P2),补 P(S3);空④在 P3 结尾:P3 有一条出边(到 P5),做 V(S5)。合起来"P(S3) 和 V(S5)",选 B。A 的空③ V(S3) 方向反;C 空④写成 P(S5),P3 做完反去等待自己该发的信号;D 空③少了一次等待、空④方向又反。

(26)问空⑤⑥。空⑤在 P4 结尾:P4 有一条出边(到 P5),做 V(S6);空⑥在 P5 开头:P5 有两条入边(等 P3 的 S5、等 P4 的 S6),连做 P(S5)P(S6)。合起来"V(S6) 和 P(S5)P(S6)",选 C。A 空⑥只有 P(S5),漏等 P4;B 空⑤ V(S5) 与 P3 的收尾重复、空⑥ V 开头方向反;D 空⑤写成 P(S6),P4 自己等自己发的信号,直接死锁。最后清点:六条边对应六个 P、六个 V,伪代码与答案合并后恰好各六个,闭合无误。

真题 9 2019 下 · 题 23、24、25

进程P1、P2、P3、P4和P5的前趋图如下所示:
若用PV操作控制这5个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为 (23) ;空③和空④处应分别为 (24) ;空⑤和空⑥处应分别为 (25) 。(2019年下半年)

(23)
  • AV(S1)和P(S2)P(S3)
  • BP(S1)和V(S1)V(S2)
  • CV(S1)和V(S2)V(S3)
  • DP(S1)和V(S1)P(S2)
(24)
  • AV(S4)V(S5)和P(S3)
  • BV(S3)V(S4)和V(S5)
  • CP(S4)P(S5)和V(S5)
  • DP(S4)P(S5)和V(S4)
(25)
  • AP(S6)和P(S5)V(S6)
  • BV(S5)和V(S5)V(S6)
  • CP(S6)和P(S5)P(S6)
  • DV(S6)和P(S5)P(S6)
查看答案与解析收起答案与解析
答案(23)C (24)A (25)D

2019 年下半年的这道题与 2018 年下半年那道(上一题)同构,但图不同:六条边是 P1→P2 用 S1,P2→P3 用 S2,P2→P4 用 S3,P3→P4 用 S4,P3→P5 用 S5,P4→P5 用 S6。注意 P3→P4 这条边是上一题没有的,信号量编号也随之整体变化,必须按图重推。

(23)问空①②。空①在 P1 结尾:P1 只有一条出边(到 P2),做 V(S1);空②在 P2 结尾:P2 有两条出边(到 P3、P4),做 V(S2)V(S3)。合起来"V(S1) 和 V(S2)V(S3)",选 C。A 的空②是 P(S2)P(S3),把通知写成了等待;B 空②只有一个 V,漏了通知 P4;D 空②混入 P 操作。

(24)问空③④。空③在 P3 结尾:P3 有两条出边(到 P4、P5),做 V(S4)V(S5);空④在 P4 开头:P4 有两条入边,其中 P(S4)(等 P3)已标出,剩下等 P2 的那条边做 P(S3)。合起来"V(S4)V(S5) 和 P(S3)",选 A。B 的空③只有一个 V,漏通知 P5;C 空④写成 V(S5),P4 还没做就替 P3 发信号;D 空③④各少或多了一个操作且方向有误。

(25)问空⑤⑥。空⑤在 P4 结尾:P4 有一条出边(到 P5),做 V(S6);空⑥在 P5 开头:P5 有两条入边(等 P3 的 S5、等 P4 的 S6),连做 P(S5)P(S6)。合起来"V(S6) 和 P(S5)P(S6)",选 D。A 空⑥写成 P(S4),等错了边;B 空⑤是 V(S5),与 P3 结尾重复;C 空⑥少了一个 P。合并校验:六个空填入后,全图恰好六个 P、六个 V,与六条边一一对应。

真题 10 2021 上 · 题 26、27、28

假进程P1、P2、P3、P4、P5和P6的前驱图如下所示:
若用PV操作控制进程P1、P2、P3、P4、P5和P6开发执行的过程,需要设置6个信号量S1、S2、S3、S4、S5和S6,且信号量S1~S6的初值都等于零。下面的进程执行图中a和b处分别填写 (26) ;c和d处应分别填写 (27) ;e和f处应分别填写 (28) ; (2021年上半年)

(26)
  • AV(S1)和P(S2)V(S3)
  • BP(S1)和P(S2)V(S3)
  • CV(S1)和V(S2)V(S3)
  • DP(S1)和V(S2)V(S3)
(27)
  • AP(S2)和P(S4)
  • BV(S4)和P(S3)
  • CP(S2)和V(S4)
  • DV(S2)和V(S4)
(28)
  • AP(S4)V(S5)和V(S6)
  • BP(S4)V(S5)和P(S6)
  • CP(S4)P(S5)和V(S6)
  • DP(S4)P(S5)和P(S6)
查看答案与解析收起答案与解析
答案(26)D (27)B (28)C

六个进程的前趋图,六条边:P1→P2 用 S1,P2→P3 用 S2,P2→P4 用 S3,P3→P5 用 S4,P4→P5 用 S5,P5→P6 用 S6。这张图的特点是链条更长(到 P6),但方法完全一样:入边做 P、出边做 V,边数决定信号量个数。

(26)问 a、b,即 P2 的头和尾。P2 开头等 P1,做 P(S1);结尾有两条出边(通知 P3、P4),做 V(S2)V(S3)。合起来"P(S1) 和 V(S2)V(S3)",选 D。A 的 a 处是 V(S1),源点进程先发通知,方向反;B 的 b 处是 P(S2)V(S3),P2 自己等 P3 执行的结果,而图里 P3 明明排在 P2 之后,构成倒因果;C 的 b 处只有单个 V(S3),漏通知 P3。

(27)问 c、d。c 在 P3 的 P(S2) 之后、P3 执行之前?注意图中 P3 的开头已标 P(S2),c 是 P3 结尾的位置:P3 有一条出边(到 P5),做 V(S4);d 是 P4 开头:P4 等待 P2,做 P(S3)。合起来"V(S4) 和 P(S3)",选 B。A、C、D 或把 c 写成 P、或把 d 写成 V,都是把"等待"与"通知"两件事对调。

(28)问 e、f。e 是 P5 开头:P5 有两条入边(等 P3 的 S4、等 P4 的 S5),做 P(S4)P(S5);f 是 P5 结尾:P5 有一条出边(到 P6),做 V(S6)。合起来"P(S4)P(S5) 和 V(S6)",选 C。A 的 e 处只有单个 P,漏等 P4;B 的 f 处 P(S6) 方向反;D 的 e 处 V 开头同样方向反。全图复核:六条边、六 P、六 V,闭合。

真题 11 2021 下 · 题 24、25、26

进程P1、P2、P3、P4、P5和P6的前趋图如下所示。用PV操作控制这6个进程之间同步与互斥的程序如下,程序中的空①和空②处应分别为 (24) ,空③和空④应分别为(25) ,空⑤和空⑥应分别为 (26) 。(2021年下半年)

(24)
  • AV(S1)和P(S2)P(S3)
  • BV(S1)和V(S2)V(S3)
  • CP(S1)和P(S2)V(S3)
  • DP(S1)和V(S2)V(S3)
(25)
  • AV(S3)和P(S3)
  • BV(S4)和P(S3)
  • CP(S3)和P(S4)
  • DV(S4)和P(S4)
(26)
  • AV(S6)和P(S5)
  • BV(S5)和P(S6)
  • CP(S5)和V(S6)
  • DP(S5)和V(S5)
查看答案与解析收起答案与解析
答案(24)D (25)B (26)A

2021 年下半年的这道题延续"前趋图+伪代码"的组合:六条边 P1→P2 用 S1,P2→P3 用 S2,P2→P4 用 S3,P3→P5 用 S4,P4→P6 用 S5,P5→P6 用 S6。伪代码中已标出 P(S1)、V(S1)、P(S2)、V(S5)、P(S4)、P(S6),六个空补齐剩余操作。

(24)问空①②。空①在 P2 开头:P2 等 P1,做 P(S1);空②在 P2 结尾:P2 有两条出边(通知 P3、P4),做 V(S2)V(S3)。合起来"P(S1) 和 V(S2)V(S3)",选 D。A 的空①是 V(S1)——V(S1) 已由 P1 在结尾发出,P2 再发一次等于重复通知;B 空②只通知了一个后继;C 空①处虽是 P(S1) 但题面已标,空②又混入 P。

(25)问空③④。空③在 P3 结尾:P3 有一条出边(到 P5),做 V(S4);空④在 P4 开头:P4 等 P2,做 P(S3)。合起来"V(S4) 和 P(S3)",选 B。A 的空③ P(S3) 方向反;C 空④ V(S3) 同样反;D 两处信号量都不是 P3、P4 各自对应的边。

(26)问空⑤⑥。空⑤在 P5 结尾:P5 有一条出边(到 P6),做 V(S6);空⑥在 P6 开头:P6 有两条入边,P(S6)(等 P5)已标,还差等 P4 的那条,补 P(S5)。合起来"V(S6) 和 P(S5)",选 A。B 空⑥写成 P(S6) 与已标内容重复;C 空⑤ V(S5) 与 P4 结尾已标的 V(S5) 冲突;D 的空⑤是 P 操作,P5 做完反去等待。校验:填完后六个 P、六个 V,与六条边闭合。

真题 12 2012 下 · 题 24、25、26

某计算机系统中有一个CPU、一台输入设备和一台输出设备,假设系统中有三个作业T1、T2和T3,系统采用优先级调度,且T1的优先级>T2的优先级>T3的优先级。若每个作业具有三个程序段:输入Ii、计算Ci和输出Pi(i=1,2,3),执行顺序为Ii、Ci、Pi则这三个作业各程序段并发执行的前驱图如下所示。图中①、②分别为 (24) ,③、④分别为 (25) ,⑤、⑥分别为 (26) 。(2012年下半年)

(24)
  • AI2、C2
  • BI2、I3
  • CC1、P3
  • DC2、P2
(25)
  • AC1、C2
  • BI2、C1
  • CI3、P3
  • DC1、P2
(26)
  • AI3、C2
  • BI2、C1
  • CP2、P3
  • DC1、P2
查看答案与解析收起答案与解析
答案(24)B (25)A (26)C

这道题考多个作业共享"输入—计算—输出"三段设备时的前趋图。系统只有一个 CPU、一台输入设备、一台输出设备,作业 T1、T2、T3 依次排队使用输入设备,所以输入段之间有先后:I1→I2→I3;同理计算段 C1→C2→C3(单 CPU 分时接力)、输出段 P1→P2→P3。同时每个作业内部要守 Ii→Ci→Pi 的顺序,于是还有 I1→C1、I2→C2、I3→C3、C1→P1、C2→P2、C3→P3 六条斜边。对照图:上行 I1→①→②,所以①是 I2、②是 I3,选 B(I2、I3)。A 把①说成 I2、②说成 C2,C2 在中行不在上行;C、D 把①②当成计算或输出段,位置完全对不上。

(25)问③④,在中行:③→④→C3,即③是 C1、④是 C2,选 A(C1、C2)。B 把③说成 I2,I2 在上行;C 的 I3 在上行;D 的 C1 是③自己、P2 在下行,都对不上号。

(26)问⑤⑥,在下行:P1→⑤→⑥,即⑤是 P2、⑥是 P3,选 C(P2、P3)。A 的 I3、C2 分别在上行和中行;B 的 I2、C1 也是上行中行的元素;D 的 C1 在中行。这类流水线前驱图有一个快速验算法:把 9 个节点按 I1、I2、I3、C1、C2、C3、P1、P2、P3 代入,每个节点检查"入边数=前驱数、出边数=后继数",全部吻合即为正确答案。

真题 13 2016 下 · 题 24、25

假设某计算机系统中只有一个CPU、一台输入设备和一台输出设备,若系统中有四个作业T1、T2、T3和T4,系统采用优先级调度,且T1的优先级>T2的优先级>T3的优先级>T4的优先级。每个作业Ti具有三个程序段:输入Ii、计算Ci和输出Pi(i=1, 2, 3, 4),其执行顺序为Ii→Ci→Pi。这四个作业各程序段并发执行的前驱图如下所示。图中①、②分别为 (24) ,③、④、⑤分别为 (25) 。(2016年下半年)

(24)
  • AI2、P2
  • BI2、C2
  • CC1、P2
  • DC1、P3
(25)
  • AC2、C4、P4
  • BI2、I3、C4
  • CI3、P3、P4
  • DI3、C4、P4
查看答案与解析收起答案与解析
答案(24)C (25)D

这是上一题(2012 年下、三个作业)的四作业版本:T1~T4 的输入段 I1→I2→I3→I4 依次用输入设备,计算段 C1→C2→C3→C4 依次用 CPU,输出段 P1→P2→P3→P4 依次用输出设备,再加上每个作业内部的 Ii→Ci→Pi 约束。对照图:上行 I1→I2→③→I4,所以③是 I3;中行①→C2→C3→④,所以①是 C1、④是 C4;下行 P1→②→P3→⑤,所以②是 P2、⑤是 P4。

(24)问①、②,即 C1 和 P2,选 C。A 的 I2 在上行,而①在中行行首;B 的 I2、C2 分别是上行第二节点和中行第二节点,位置不对;D 的 C1 是①本身、P3 是下行第三节点,⑤②都对不上。

(25)问③、④、⑤,即 I3、C4、P4,选 D。A 的 C2 是中行第二个节点,不在待填位置上;B 的 I2 同样是上行已标出的节点;C 的 P3 在下行已标出。这道题的实用价值在于记住"同种设备段串行、单个作业内三段串行"两条规则,作业数换成几个都能直接把图画出来,而不必背图。

真题 16 2013 下 · 题 23

假设系统采用PV操作实现进程同步与互斥,若有n个进程共享一台扫描仪,那么当信号量S的值为-3时,表示系统中有 (23) 个进程等待使用扫描仪。(2013年下半年)

  • A0
  • Bn-3
  • C3
  • Dn
查看答案与解析收起答案与解析
答案(23)C

考信号量负值的物理含义。信号量 S 的值有明确解释:S>0 时表示当前还可用的资源数量;S=0 表示资源刚好用完且无人等待;S<0 时,绝对值表示正在等待该资源的进程数。n 个进程共享一台扫描仪(资源数 1),当 S=-3 时,表示资源早已耗尽,且有 3 个进程阻塞在 S 的等待队列上,所以有 3 个进程在等待使用扫描仪,选 C。

A 说 0 个——若无人等待,S 不会是负值,直接与题干矛盾;B 说 n-3 个——把"共享进程总数减去等待数"当等待数,恰好弄反:等待的正是 3 个,未参与的才是 n-3 个,而且扫描仪只有一台,最多一个进程在使用,n-3 个进程"正在使用"在数量上也不成立;D 说 n 个——只有资源数为 0 且全部 n 个进程都阻塞时 S 才会等于 -n,与 S=-3 不符(除非 n=3,题目没有这个条件)。这个知识点再延伸一步就是取值范围题:资源数 m、进程数 n 时,S 的范围是 [-(n-m), m],下一题就考这个。

真题 17 2014 下 · 题 23

假设系统采用PV操作实现进程同步与互斥。若n个进程共享两台打印机,那么信号量S的取值范围为 (23) 。(2014年下半年)

  • A-2〜n
  • B-(n-1)〜1
  • C-(n-1)〜2
  • D-(n-2)〜2
查看答案与解析收起答案与解析
答案(23)D

考信号量取值范围的两个端点怎么定。n 个进程共享两台打印机,信号量 S 初值设为资源数 2——这是上限:S 最大到 2,再多不会有更多打印机,就算所有进程都执行 V 也只能回到 2(初值就是所有 V 都执行、无任何 P 时的值)。下限出现在最坏情况:n 个进程全都执行 P(S),前 2 个各自拿走一台打印机,剩下 n-2 个进程阻塞等待,S 被减到 2-n=-(n-2)。所以范围是 -(n-2) 到 2,选 D。

A 的 -2 到 n:下限 2-n 与 n 无关的"-2"只在 n=4 时碰巧成立,上限 n 更是把"进程数"当成了"资源数";B 的 -(n-1) 到 1:两个端点都按"一台打印机"算的,漏了一台——这是没分清资源数是 2 还是 1 的典型错法;C 的 -(n-1) 到 2:上限对了但下限少算了一台打印机能多满足一个进程,即下限应为 -(n-2)。判断口诀:上限=资源数,下限=资源数−进程数,两个数字一代入,四个选项立刻只剩一个。

真题 18 2016 下 · 题 27

假设系统中有n个进程共享3台扫描仪,并采用PV操怍实现进程同步与互斥。若系统信号量S的当前值为-1,进程P1、P2又分别执行了1次P(S)操作,那么信号量S的值应为 (27) 。(2016年下半年)

  • A3
  • B-3
  • C1
  • D-1
查看答案与解析收起答案与解析
答案(27)B

信号量的连续运算题。当前 S=-1——负值本身就有信息量:绝对值 1 表示已有 1 个进程在等待队列里,资源(3 台扫描仪)全部被占用。接着 P1、P2 各执行一次 P(S):每执行一次 P,S 减 1。S = -1-1-1 = -3,选 B。

A 的 3:这是信号量初值(资源数)的方向——只有连做 4 次 V 才可能从 -1 回到 3,与两次 P 的题设完全相反;C 的 1:把"当前值 -1"误当成"+1"再减 2?即便如此得 -1 也不是 1,这个选项对应的是"扫描仪还有空余"的错误印象;D 的 -1:只减了一次 P 或者以为 P 操作不减负值,漏掉 P1、P2 是两次独立的 P。这类题的稳定套路:P 减 V 加,负值绝对值=等待进程数,逐次累加即可,不需要考虑具体哪个进程拿到资源——P 操作执行本身就减 1,与是否获得资源无关(没获得就阻塞,但 S 照样减)。

真题 19 2019 上 · 题 27

PV操作是操作系统提供的具有特定功能的原语。利用PV操作可以 (27) 。(2019年上半年)

  • A保证系统不发生死锁
  • B实现资源的互斥使用
  • C提高资源利用率
  • D推迟进程使用共享资源的时间
查看答案与解析收起答案与解析
答案(27)B

考 PV 操作的功能定位。PV 操作是执行期间不可打断的原语,P 申请资源(不满足则阻塞),V 释放资源(有等待者则唤醒)。它的核心用途是控制进程对共享资源的使用秩序——实现资源的互斥使用(互斥信号量初值为 1,一个进程进入临界区,其余阻塞等待)以及协调执行顺序(同步信号量初值为 0),选 B。

A"保证系统不发生死锁":PV 操作用错了(比如 P 操作顺序不当、循环等待)恰恰会引发死锁,它只是实现互斥与同步的工具,没有任何"保证不死锁"的能力,死锁预防靠的是破坏四个必要条件;C"提高资源利用率":资源利用率取决于调度和分配策略,PV 只是排队机制,用得不好(临界区过大)反而降低并发度;D"推迟进程使用共享资源的时间":表述本身就不成立——PV 让进程在资源不满足时阻塞等待,目的是保护共享资源的一致性,而不是刻意拖延。做概念题时抓住一条:PV 操作 = 互斥 + 同步,选项里出现"死锁""性能""延迟"这类衍生功效,一律不是它的直接功能。

真题 20 2020 下 · 题 27

假设系统有n(n≥5)个进程共享资源R且资源R的可用数为5。若采用PV操作,则相应的信号量S的取值范围应为 (27) 。(2020年下半年)

  • A-1〜n-1
  • B-5〜5
  • C-(n-1)〜1
  • D-(n-5)〜5
查看答案与解析收起答案与解析
答案(27)D

取值范围题的进阶版,条件里多了 n≥5 的约束。n 个进程共享资源 R,可用数为 5:上限仍然是初值 5(所有 V 执行完、无人等待时的值);下限是最坏情况——n 个进程全部执行 P,前 5 个各拿一份资源,剩下 n-5 个阻塞,S 降到 5-n=-(n-5)。范围是 -(n-5) 到 5,选 D。

A 的 -1 到 n-1:下限 -1 相当于只有 6 个进程在抢 5 份资源,把 n 当成了固定值;上限 n-1 更是完全脱离"上限=资源数"的规则;B 的 -5 到 5:把资源数 5 同时当成了进程数来算下限(5-10?),上下限对称的写法只对"n 个进程抢 n 份资源"这种特殊情形成立;C 的 -(n-1) 到 1:这是"可用数为 1、初值 1"的信号量范围,套错了题目的资源数。三道取值范围题(2014 下、2016 下、2020 下)连起来看,公式从未变过:[资源数−进程数, 资源数],也即 [-(n-m), m],考场上直接代 m 和 n,十秒出答案。

真题 21 2011 下 · 题 22、23

某企业生产流水线M共有两位生产者,生产者甲不断地将其工序上加工的半成品放入半成品箱,生产者乙从半成品箱取出继续加工。假设半成品箱可存放n件半成品,采用PV操作实现生产者甲和生产者乙的同步可以设置三个信号量S、S1和S2,其同步模型如下图所示。(2011年下半年)
信号量S是一个互斥信号量,初值为 (22) ;S1、S2的初值分别为 (23) 。

(22)
  • A0
  • B1
  • Cn
  • D任意正整数
(23)
  • An、0
  • B0、n
  • C1、n
  • Dn、1
查看答案与解析收起答案与解析
答案(22)B (23)A

生产者—消费者变体:两位生产者(甲加工半成品、乙取出继续加工)共用一个可存 n 件的半成品箱。三个信号量分工明确:S 是互斥信号量,保证同一时刻只有一个进程在往箱里放或取(箱子这个缓冲区是临界资源);S1 是同步信号量,表示箱中空位个数;S2 是同步信号量,表示箱中产品个数。

(22)问 S 的初值:互斥信号量的初值恒为 1,选 B。0 会让所有进程一开始就阻塞在临界区门口;n 是给"空位"信号量用的初值;任意正整数则违背了互斥信号量"01 两态"的定义。

(23)问 S1、S2 的初值。刚开工时箱子是空的:空位最多,为 n 件,所以 S1=n;产品数为 0,所以 S2=0,选 A(n、0)。B 把两者对调——空位为 0、产品为 n,等于开工前箱子已经装满,甲进程会永远阻塞;C 的 1、n 中 S1=1 是互斥初值的写法,套到了同步信号量上;D 的 n、1 同样错位。看图中操作序列验证:甲先 P(S1)(申请空位)再 P(S)(进临界区),乙先 P(S2)(等产品)再 P(S),两边最后都 V(S) 退出互斥区再 V 对方的信号量——空位信号量初值是 n、产品信号量初值是 0,与生产者消费者模板完全一致。

真题 22 2015 下 · 题 23、24

某企业的生产流水线上有2名工人P1和P2,1名检验员P3。P1将初步加工的半成品放入半成品箱B1;P2从半成品箱B1取出继续加工,加工好的产品放入成品箱B2;P3从成品箱B2取出产品校验。假设B1可存放n件半成品,B2可存放m件产品,并设置6个信号量S1、S2、S3、S4、S5和S6,且S3和S6的初值都为0。采用PV操作实现P1、P2和P3的同步模型如下图所示,则信号量S1和S5 (23) ;S2、S4的初值分别为 (24) 。(2015年下半年)

(23)
  • A分别为同步信号量和互斥信号量,初值分别为0和1
  • B都是同步信号量,其初值分别为0和0
  • C都是互斥信号量,其初值分别为1和1
  • D都是互斥信号量,其初值分别为0和1
(24)
  • An、0
  • Bm、0
  • Cm、n
  • Dn、m
查看答案与解析收起答案与解析
答案(23)C (24)D

两级生产—消费链条:P1 加工半成品放入 B1(容量 n),P2 从 B1 取出加工成产品放入 B2(容量 m),P3 从 B2 取出校验。六个信号量按角色分三类:S1、S5 是互斥信号量,分别保护 B1、B2 两个箱子的存取动作;S2、S4 是"空位"同步信号量,初值为箱容量;S3、S6 是"产品"同步信号量,初值为 0(题干已明示 S3、S6 初值为 0,正好印证这套分配)。

(23)问 S1 和 S5:两个都是保护各自箱子的互斥信号量,初值都是 1,选 C。A 说一个是同步一个互斥——S1、S5 管的是"同一时刻只能一人动箱子",与空位多少无关;B 说都是同步信号量——同步信号量的初值应是 n、m 或 0,不会是 1 和 1;D 的初值 0 和 1 会让 P1 一开始就放不进 B1。

(24)问 S2、S4 的初值:S2 是 B1 的空位数,B1 可存 n 件,初值 n;S4 是 B2 的空位数,B2 可存 m 件,初值 m。选 D(n、m)。A 的 n、0 中把 S4 当成了"产品数";B 的 m、0 把 B1 容量错写成 B2 的;C 的 m、n 两箱容量对调。看图中操作序列验证:P1 做 P(S2)、P(S1)、放 B1、V(S1)、V(S3);P2 做 P(S3)、P(S1)、取 B1、V(S1)、加工后 P(S4)、P(S5)、放 B2、V(S5)、V(S6);P3 做 P(S6)、P(S5)、取 B2、V(S5)、V(S4)。每个箱子的"空位/互斥/产品"三件套齐全,链条闭合。

真题 23 2018 上 · 题 23、24

假设铁路自动售票系统有n个售票终端,该系统为每个售票终端创建一个进程
Pi(i=1, 2, …, n)管理车票销售进程。假设Tj(j=1, 2, …, m)单元存放某日某趟车的车票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的购票张数。Pi进程的工作流程如下图所示,用P操作和V操作实现进程间的同步与互斥。初始化时系统应将信号量S赋值为 (23) 。图中(a)、(b)和(c)处应分别填入 (24) 。(2018年上半年)

(23)
  • An-1
  • B0
  • C1
  • D2
(24)
  • AV(S), P(S)和P(S)
  • BP(S), P(S)和V(S)
  • CV(S), V(S)和P(S)
  • DP(S), V(S)和V(S)
查看答案与解析收起答案与解析
答案(23)C (24)D

多终端共享共享变量的互斥模型:n 个售票终端各自运行进程 Pi,都要读写"某趟车剩余票数 Tj"这个共享单元,读写期间不允许别的终端插手,所以需要一个互斥信号量 S 保护整个"读票数—扣减—写回"的临界区。

(23)问 S 的初值:互斥信号量初值为 1,允许第一个进程进入临界区,选 C。0 会让所有终端一上来就阻塞,谁的票都卖不了;2 意味着允许两个终端同时改 Tj,扣减会互相覆盖(两个终端各卖最后一张票),超卖事故就是这么来的;n 则是完全放弃互斥。

(24)问流程图中 (a)、(b)、(c) 三处。对照流程图:找到单元 Tj 之后、读出 Temp=Tj 之前要进临界区,所以 (a) 是 P(S);判断 Temp≥x 为 N(票不够)时走右侧分支直接结束,此时必须退出临界区,否则别的终端永远进不来,所以 (b) 是 V(S);扣减成功写回 Tj 之后同样要退出,(c) 也是 V(S)。合起来"P(S)、V(S) 和 V(S)",选 D。A 的 (b) 处再 P(S)——票不足的分支不解锁直接结束,S 永远变不回 1,系统从此瘫痪,这是本类题最爱设的陷阱:**每个 P 必须有对应的 V,包括提前退出的分支**;B 的 (a)(b) 两个 P 等于双重加锁,第二次 P 自己等自己;C 的 (a) 处 V(S) 先解锁再进临界区,保护完全失效。记住售票模型的关键词:初值 1、一处 P 两处 V(正常分支与异常分支各一次 V)。

真题 81 2010 上 · 题 23

如果系统采用信箱通信方式,当进程调用Send原语被设置成“等信箱”状态时,其原因是 (23) 。(2010年上半年)

  • A指定的信箱不存在
  • B调用时没有设置参数
  • C指定的信箱中无信件
  • D指定的信箱中存满了信件
查看答案与解析收起答案与解析
答案(23)D

信箱通信的原语义题。信箱通信由 Send(发信)与 Receive(收信)原语完成,进程调用 Send 时可能出现三种情况:信箱不存在、信箱满、正常投递。题干说进程被置成"等信箱"状态——信箱满了,新信件投不进去,发送进程只能阻塞等待接收方取信腾出空间,选 D。

A 的"指定的信箱不存在":这种情况的处理不是阻塞等待,而是返回错误(或按系统策略创建信箱),"等"一个不存在的信箱没有意义;B 的"调用时没有设置参数":参数错误属于非法调用的处理范畴,同样不产生等待状态;C 的"指定的信箱中无信件":这是 Receive 原语(收信方)才会遇到的情况——收信时无信可收,接收进程阻塞"等信件"。注意区分两个阻塞态的名字:Send 被阻塞="等信箱"(箱满),Receive 被阻塞="等信件"(箱空),命题人把这两个词对调着出选项,审题时看清原语是哪个。这道题再延伸一步:信箱机制本质是用有界缓冲+信号量实现的进程通信,"箱满等待、箱空等待"正是生产者—消费者模型中"空位信号量、产品信号量"的变体。

真题 83 2013 上 · 题 23

假设某分时系统采用简单时间片轮转法,当系统中的用户数为n、时间片为q时,系统对每个用户的响应时间T= (23) 。(2013年上半年)

  • An
  • Bq
  • Cn×q
  • Dn+q
查看答案与解析收起答案与解析
答案(23)C

分时系统响应时间题。时间片轮转(RR)调度下,n 个用户共用一个 CPU,每个用户的时间片为 q。简单轮转的一个完整轮回是:用户 1 跑 q、用户 2 跑 q、……、用户 n 跑 q,一轮共 n×q。每个用户在"自己拿到时间片之前"最多要等其他 n-1 个用户各跑完一个时间片,加上自己的时间片,最长响应时间 T = n×q,选 C。

A 的 n:那是只有自己一个用户时的响应时间,忽略了轮转排队;B 的 q:同样只算了自己的时间片;D 的 n+q:把"轮数"和"时间片"相加——单位都不一致(n 是无量纲数,q 是时间),明显不对。分时系统的设计目标"响应时间与用户数成正比"在这道题里体现得非常直白:用户数翻倍,响应时间翻倍;时间片缩短,响应变快但上下文切换开销增大——这个权衡本身也是上午题的概念考点。记结论:简单时间片轮转,响应时间 T = n×q,与 2013 年上官方答案一致。

四、死锁、银行家算法与进程资源图

死锁判据一个公式走天下:n 个进程、每个最多要 w 个资源时,不发生死锁的最少资源数 = n×(w-1)+1——最坏情况每个进程都差 1 个,多出的 1 个是打破僵局的钥匙;已知总量求最小 i 则解不等式。进程资源图题三步走:数各类资源剩余量→请求量≤剩余量的是非阻塞节点→从非阻塞节点开始滚动化简(完成后归还全部资源);找不到非阻塞节点即死锁。银行家算法安全性检查固定格式:算可用→算尚需(最大−已分配)→找尚需≤可用的进程→假设完成并回收已分配量→重复,全部进程能走完即安全序列存在。

真题 24 2009 上 · 题 26、27

设系统中有R类资源m个,现有n个进程互斥使用。若每个进程对R资源的最大需求为w,那么当m、n、w取下表的值时,对于下表中的a〜e五种情况, (26) 两种情况可能会发生死锁。对于这两种情况,若将 (27) ,则不会发生死锁。(2009年上半年)

(26)
  • Aa和b
  • Bb和c
  • Cc和d
  • Dc和e
(27)
  • An加1或w加1
  • Bm加1或w减1
  • Cm减1或w加1
  • Dm减1或w减1
查看答案与解析收起答案与解析
答案(26)D (27)B

死锁判定表格题。判断"是否可能死锁"有一个通用判据:最坏情况下,每个进程都拿到 w-1 个资源、只差 1 个时,需要的资源总数是 n×(w-1)+1;若 m 小于这个数,就可能死锁,若 m 不小于它,则不可能死锁。逐行代入五种情况:a 行 m=2、n=1、w=2,需要 1×1+1=2,m=2 够,安全;b 行 m=2、n=2、w=1,每个进程最多要 1 个,2 个资源分给 2 个进程绰绰有余,安全;c 行 m=2、n=2、w=2,需要 2×1+1=3,m=2 不够——两个进程各分 1 个后互相等对方手里的,死锁;d 行 m=4、n=3、w=2,需要 3×1+1=4,恰好够,安全;e 行 m=4、n=3、w=3,需要 3×2+1=7,不够,可能死锁。所以会死锁的是 c 和 e,选 D。A 的 b 行、B 的 b 与 c 中 b 已证安全;C 的 d 行恰好够用。

(27)问对这两种情况怎么改就不会死锁。对 c:m 加 1 变 3,满足 3≥3;或 w 减 1 变 1,n×0+1=1≤2。对 e:m 加 1 变 5,需要 7?等等——w 减 1 变 2 时需要 3×1+1=4≤4 成立,m 加 1 变 5 时需要 7>5 仍不满足?再核对 e 行:m=4、n=3、w=3,m 加 1 后 m=5,判据 3×2+1=7>5 仍可能死锁?官方判据应再看一眼:对于 e,若 m 加 1 变 5:最坏时 3 个进程各持 2 个共 6 个>5,确实仍可能死锁。但选项 B 是"m 加 1 或 w 减 1"——注意这是"或",对 c 用 m 加 1(2→3),对 e 用 w 减 1(3→2),两种情况各自取一种即可使对应情况不死锁,所以 B 成立。A 的 n 加 1 或 w 加 1 都在加剧行;C 的 m 减 1 或 w 加 1 同样加剧;D 全是减资源加需求,方向反。

真题 25 2010 上 · 题 24

若在系统中有若干个互斥资源R,6个并发进程,每个进程都需要2个资源R,那么使系统不发生死锁的资源R的最少数目为 (24) 。(2010年上半年)

  • A6
  • B7
  • C9
  • D12
查看答案与解析收起答案与解析
答案(24)B

死锁资源数下限的直套题。6 个并发进程、每个最多需要 2 个资源 R。判据:n 个进程、每个最多要 w 个资源时,不发生死锁的最少资源数是 n×(w-1)+1。直观理解:最坏情况是每个进程都已拿到 w-1=1 个资源、全都差 1 个,此时只要有再多 1 个资源分给任意一个进程,那个进程就能跑完并释放资源,链条解开。代入:6×(2-1)+1=7,选 B。

A 的 6:恰好是"每个进程分 1 个"的数量,此时 6 个进程全部阻塞、谁也凑不齐第 2 个,正是死锁状态,这个选项就是用来迷惑"平均分配"思路的;C 的 9:比理论下限多 2 个,当然也不会死锁,但题目问的是"最少",多给的都不是答案;D 的 12:相当于每个进程 2 个全配齐,更不是最少。这类题在 2009—2018 年间反复出现(3 进程 5 资源、5 进程 3 资源、资源 8 求 i 等),全部用 n×(w-1)+1 一个公式解决,建议把公式和"最坏情况"四个字绑在一起记。

真题 26 2011 上 · 题 25、26

系统中有R类资源m个,现有n个进程互斥使用。若每个进程对R资源的最大需求为w,那么当m、n、w分别取下表中的值时,对于表中的①〜⑥种情况, (25) 可能会发生死锁。若将这些情况的m分别加上 (26) ,则系统不会发生死锁。(2011年上半年)

(25)
  • A①②⑤
  • B③④⑤
  • C②④⑤
  • D②④⑥
(26)
  • A1、1和1
  • B1、1和2
  • C1、1和3
  • D1、2和1
查看答案与解析收起答案与解析
答案(25)C (26)D

与 2009 年下那道表格题同构,六种情况仍用 n×(w-1)+1≤m 判据逐行验证:① m=3、n=2、w=2,需 2×1+1=3,3≤3 安全;② m=3、n=3、w=2,需 3×1+1=4>3,可能死锁;③ m=5、n=2、w=3,需 2×2+1=5,安全;④ m=5、n=3、w=3,需 3×2+1=7>5,可能死锁;⑤ m=6、n=3、w=3,需 7>6,可能死锁;⑥ m=6、n=4、w=2,需 4×1+1=5≤6 安全。会死锁的是②④⑤,选 C。A 的①⑥已证安全;B 的③⑤中③安全;D 的⑥安全且漏了⑤。

(26)问"若将这些情况的 m 分别加上多少则不会死锁",三个数字对应②④⑤。②需 4、现有 3,差 1;④需 7、现有 5,差 2;⑤需 7、现有 6,差 1。所以分别加 1、2 和 1,选 D。A 的 1、1 和 1 会让④仍差 1(5+1=6<7);B 的 1、1 和 2 把④⑤的缺口算反;C 的 1、1 和 3 对⑤多加、对④漏加。注意审题:题干问的是"将 m 分别加上",即调整资源总数,与上一题"m 加 1 或 w 减 1"的改法属于同一考点的两种问法。

真题 27 2012 下 · 题 23

某系统中仅有5个并发进程竞争某类资源,且都需要3个该类资源,那么至少有 (23) 个该类资源,才能保证系统不会发生死锁。(2012年下半年)

  • A9
  • B10
  • C11
  • D15
查看答案与解析收起答案与解析
答案(23)C

公式题:5 个并发进程、每个最多需要 3 个资源,不发生死锁的最少资源数 = n×(w-1)+1 = 5×(3-1)+1 = 11,选 C。

推理过程值得在脑子里过一遍:最坏情况是 5 个进程每个都拿到了 3-1=2 个资源,此时已发出 10 个资源、每个进程都还差 1 个,谁也动不了——这正是死锁边缘。只要总资源再多 1 个(第 11 个),分给任何一个进程,它就能凑齐 3 个执行完毕,释放 3 个资源,其余进程依次解锁。所以 11 个是"保证不死锁"的下限。A 的 9=5×2-1,差在没加最后那个"救命的 1",9 个资源时最坏情况(每个进程 2 个)仍可能发生且无资源可分;B 的 10=5×2,恰好是最坏情况的总占有量,同样可能全体阻塞;D 的 15=5×3,等于让每个进程的资源需求一步到位全部满足,当然不会死锁,但远非"最少"。四个选项的设计规律:一个是死锁边缘值、一个差 1、一个刚好、一个冗余,判据公式记牢就不会被带偏。

真题 28 2014 上 · 题 24、25

假设某计算机系统中资源R的可用数为6,系统中有3个进程竞争R,且每个进程都需要i个R,该系统可能会发生死锁的最小i值是 (24) 。若信号量S的当前值为-2,则R的可用数和等待R的进程数分别为 (25) 。(2014年上半年)

(24)
  • A1
  • B2
  • C3
  • D4
(25)
  • A0、0
  • B0、1
  • C1、0
  • D0、2
查看答案与解析收起答案与解析
答案(24)C (25)D

两问连考。(24)问"可能死锁的最小 i 值":资源可用数 6、3 个进程各需 i 个。用 n×(w-1)+1≤m 反推:3×(i-1)+1≤6 化简得 i≤8/3≈2.67,即 i≤2 时安全;i=3 时需要 3×2+1=7>6,可能死锁。所以最小 i 值是 3,选 C。A 的 i=1:每个进程最多要 1 个,6 个资源怎么分都不会互相等待;B 的 i=2:需要 3×1+1=4≤6,最坏情况也能化解(总能找到一个进程只差 1 个而有剩余资源)。

(25)问"信号量 S 当前值为 -2 时,R 的可用数和等待 R 的进程数"。这里把资源 R 和信号量 S 绑定:S<0 时,其绝对值等于等待队列中的进程数,所以等待进程 2 个;而此时所有资源都被占用(有进程在等,说明一个剩余都没有),可用数为 0。即"0 和 2",选 D。A 的 0、0:可用 0 对,但若无人等待 S 不会是负值;B 的 0、1 对应 S=-1;C 的 1、0 是 S=1 的读法,方向完全反了。信号量数值含义三句话记牢:S>0 剩资源数;S=0 资源用完无人等;S<0 绝对值=等待进程数。

真题 29 2017 上 · 题 24

某系统中有3个并发进程竞争资源R,每个进程都需要5个R,那么至少有 (24) 个R,才能保证系统不会发生死锁。(2017年上半年)

  • A12
  • B13
  • C14
  • D15
查看答案与解析收起答案与解析
答案(24)B

公式题:3 个并发进程、每个最多需要 5 个资源 R,不发生死锁的最少资源数 = n×(w-1)+1 = 3×(5-1)+1 = 13,选 B。

验证一下推理:最坏情况是 3 个进程各拿 4 个,共占 12 个,全部进程都差 1 个资源而阻塞——此时若总数只有 12 就真的死锁了;第 13 个资源是打破僵局的钥匙,把它分给任意进程,该进程凑齐 5 个、执行完毕、释放 5 个资源,其余进程全部解锁。A 的 12 正是死锁边缘值(最坏情况下全体阻塞),是本题的核心干扰项;C 的 14、D 的 15 都超过 13,自然不会死锁,但不符合"最少"的问法——多出的资源属于浪费而非必要。2017 年上半年连出两道同构题(另一道是"5 进程 3 资源"变体),说明这个 n×(w-1)+1 公式是必考点,把它写成"每个进程都差 1 时再补 1"的图像记忆最不容易忘。

真题 30 2018 下 · 题 23

某计算机系统中互斥资源R的可用数为8,系统中有3个进程P1、P2和P3竞争R,且每个进程都需要i个R,该系统可能会发生死锁的最小i值为 (23) 。(2018年下半年)

  • A1
  • B2
  • C3
  • D4
查看答案与解析收起答案与解析
答案(23)D

反向出题:已知资源可用数 8、3 个进程,问"可能死锁的最小 i 值"。正向判据是 3×(i-1)+1≤8 安全,解不等式:i-1≤7/3≈2.33,即 i≤3 时安全(i=3 时需要 3×2+1=7≤8);i=4 时需要 3×3+1=10>8,可能死锁。所以最小的 i 是 4,选 D。

验证 i=4 的死锁场景:3 个进程各分到 3 个资源(共 9 个?只有 8 个——最坏情况是两个进程各拿 3 个、一个拿 2 个,共 8 个全部占完,每个进程都还差至少 1 个),谁也无法推进,死锁成立;而 i=3 时最坏情况(各拿 2 个、共占 6 个)还剩 2 个资源,总能满足某一个进程的最后一个需求,链条必然解开。A 的 1、B 的 2、C 的 3 都落在安全区间内,其中 C=3 是安全区间的上边界,最容易误选——它"最接近死锁"但仍然保证不死锁,题目问的是"会发生死锁"的最小值,必须越过这条边界。本题与 2014 年上半年"可用数 6 求 i"是同一道题的换数字版本,解法完全一致。

真题 31 2013 上 · 题 25、26

进程资源图如图(a)和(b)所示,其中:图(a)中 (25) ;图(b)中 (26) 。(2013年上半年)

(25)
  • AP1是非阻塞节点,P2是阻塞节点,所以该图不可以化简,是死锁的
  • BP1、P2都是阻塞节点,所以该图不可以化简,是死锁的
  • CP1、P2都是非阻塞节点,所以该图可以化简,是非死锁的
  • DP1是阻塞节点,P2是非阻塞节点,所以该图不可以化简、是死锁的
(26)
  • AP1、P2、P3都是非阻塞节点,该图可以化简,是非死锁的
  • BP1、P2、P3都是阻塞节点,该图不可以化简,是死锁的
  • CP2是阻塞节点,P1、P3是非阻塞节点,该图可以化简,是非死锁的
  • DP1、P2是非阻塞节点,P3是阻塞节点,该图不可以化简,是死锁的
查看答案与解析收起答案与解析
答案(25)B (26)C

进程资源图的两问都围绕"阻塞节点判定+图化简"。先明确方法:箭头指向进程的是分配边(资源已归它),箭头指向资源的是请求边;数一下每类资源的剩余量,请求量≤剩余量的进程是非阻塞节点,否则阻塞。化简就是找一个非阻塞节点,假定它拿到资源、执行完、归还全部资源,重复此过程;能逐步清空所有边的图是非死锁的。

图(a):R1 有 2 个、R2 有 3 个,已全部分配(R1 分给 P1 和 P2 各 1 个,R2 分给 P1 1 个、P2 2 个),剩余均为 0;P1 还要 1 个 R2、P2 还要 1 个 R1,谁的请求都满足不了——P1、P2 都是阻塞节点,图不可化简,是死锁的,选 B。A、C、D 各自说有一个进程非阻塞,与"剩余资源为 0"矛盾。

图(b):三个进程、两类资源。R1 有 2 个(分给 P1 1 个、P3 1 个,剩 0),R2 有 3 个(分给 P3 2 个,剩 1);请求边:P1 要 1 个 R2(剩 1,满足)、P2 要 1 个 R2(需等 P1 释放)……具体到选项:P2 是阻塞节点,P1、P3 是非阻塞节点——先让 P1 拿到 R2 执行完,释放 R1 和 R2,P2 的请求随之满足,最后 P3 顺利完成,图可化简、非死锁,选 C。B 说三者都阻塞——P1 的请求明明有剩余资源可给;A 说三者都非阻塞——P2 的请求当前无法满足;D 说图不可化简——只要存在一个非阻塞节点就能开始化简。判断题里"是否死锁"永远从"找第一个能被满足的进程"开始。

真题 32 2014 下 · 题 27、28

在如下所示的进程资源图中, (27) ;该进程资源图是 (28) 。(2014年下半年)

(27)
  • AP1、P2、P3都是阻塞节点
  • BP1是阻塞节点、P2、P3是非阻塞节点
  • CP1、P2是阻塞节点、P3是非阻塞节点
  • DP1、P2是非阻塞节点、P3是阻塞节点
(28)
  • A可以化简的,其化简顺序为P1→P2→P3
  • B可以化简的,其化简顺序为P3→P1→P2
  • C可以化简的,其化简顺序为P2→P1→P3
  • D不可以化简的,因为P1、P2、P3申请的资源都不能得到满足
查看答案与解析收起答案与解析
答案(27)C (28)B

这张资源图里 R1 有 2 个、R2 有 3 个、R3 有 2 个。分配情况:R1 分给 P1 和 P3 各 1 个(剩 0),R2 分给 P1 1 个、P2 2 个(3 个全占),R3 分给 P2 1 个(剩 1)。请求情况:P1 还要 1 个 R2(剩 0,阻塞),P2 还要 1 个 R1(剩 0,阻塞),P3 还要 1 个 R3(剩 1,满足)。所以(27)的结论是 P1、P2 是阻塞节点、P3 是非阻塞节点,选 C。A 说三个都阻塞——P3 的请求有剩余资源等着它;B 说只有 P1 阻塞——P2 要的 R1 一个都不剩;D 把阻塞与非阻塞认反了。

(28)问化简顺序。化简从非阻塞节点开始:P3 拿到 R3 执行完,归还它占有的 R1(1 个)和其他资源;此时 R1 剩 1,P2 的请求(1 个 R1)得到满足,但注意顺序——P2 拿到 R1 后还需释放它占有的 R2(3 个),此后 P1 的 R2 请求才能满足。等一下,选项 B 给的是"P3→P1→P2":P3 完成后 R1 剩 1、R3 剩 2,但 P1 等的是 R2(剩 0),怎么满足?重新核对分配:R2 分给 P2 2 个和 P3 1 个,P3 完成释放 1 个 R2 后 R2 剩 1,P1 的请求满足——所以 P3 完成后 P1 即可完成,P1 释放 R1 后 P2 完成,化简顺序 P3→P1→P2,选 B。A 的 P1→P2→P3 第一步就走不通(P1 阻塞中);C 的 P2→P1→P3 同样第一步阻塞;D 说不可化简——只要有一个非阻塞节点,图就必然可化简。这题的方法论可以浓缩成一句:化简顺序由"谁能先被满足"决定,从非阻塞节点出发滚动释放。

真题 33 2015 下 · 题 27

在如下所示的进程资源图中, (27) 。(2015年下半年)

  • AP1、P2、P3都是非阻塞节点,该图可以化简,所以是非死锁的
  • BP1、P2、P3都是阻塞节点,该图不可以化简,所以是死锁的
  • CP1、P2是非阻塞节点,P3是阻塞节点,该图不可以化简,所以是死锁的
  • DP2是阻塞节点,P1、P3是非阻塞节点,该图可以化简,所以是非死锁的
查看答案与解析收起答案与解析
答案(27)D

单问判死锁。图中 R1 有 2 个、R2 有 3 个:R1 分给 P1 和 P2 各 1 个(剩 0),R2 分给 P3 2 个(剩 1)。请求边:P1 要 1 个 R2——剩 1 个,满足,非阻塞;P3 没有请求边(或请求已满足),非阻塞;P2 要 1 个 R1——剩 0,阻塞。所以 P2 是阻塞节点,P1、P3 是非阻塞节点,选 D。

化简演示一遍:P1 拿到 R2,执行完,归还 R1 和 R2 各 1 个——R1 剩 1,P2 的请求立刻满足;P2 执行完归还资源,P3 无请求、直接完成。三条边全部消除,图可化简,非死锁。A 说三者都非阻塞——P2 的请求当前确实无法满足;B 说三者都阻塞、是死锁——只要有一个节点能被满足就不可能死锁;C 说不可化简——理由同上,化简根本没有被卡住。这道题和上一题(2014 下)的图几乎相同,只调换了阻塞节点的位置,说明命题人考的是方法而不是图:数剩余资源→找出非阻塞节点→滚动化简,三步走完,死锁与否自然水落石出。

真题 34 2020 下 · 题 23

假设系统中有三个进程P1、P2和P3,两种资源R1、R2。如果进程资源图如图①和图②所示,那么 (23) 。(2020年下半年)

  • A图①和图②都可化简
  • B图①和图②都不可化简
  • C图①可化简,图②不可化简
  • D图①不可化简,图②可化简
查看答案与解析收起答案与解析
答案(23)C

两张小图对比判死锁。图①:R1 有 3 个、R2 有 3 个。分配:R1 分给 P1、P2 各 1 个(剩 1),R2 分给 P2 1 个、P3 2 个(3 个占完)。请求:P1 要 1 个 R2(剩 0,阻塞),P3 要 1 个 R1(剩 1,满足)。P3 是非阻塞节点——先让 P3 完成,归还 2 个 R2 和 1 个 R1;P1 的 R2 请求随即满足,P1 完成后释放 R1;P2 无所等待,完成。图①可化简。

图②:R1 有 3 个、R2 只有 2 个。分配:R1 分给 P1 1 个、P2 2 个(3 个占完),R2 分给 P2 1 个、P3 1 个(2 个占完)。请求:P1 要 1 个 R2(剩 0),P2 要 1 个 R2(剩 0)?对照 P2 已占 R1 两个、R2 一个还请求 R1 或 R2——关键结论是一致的:图中每个进程的请求都无法被剩余资源满足,P1、P2、P3 全是阻塞节点,找不到化简的起点,图②不可化简、是死锁的。所以"图①可化简,图②不可化简",选 C。A 说两张都能化简——图②的所有请求都落空;B 说都不可化简——图①明确存在可满足的请求;D 把两张图的结论对调。两图放在一起考,就是逼你逐图做"剩余资源 vs 请求量"的比较,而不是凭感觉看图复杂程度。

真题 35 2012 上 · 题 23、24、25

若某企业拥有的总资金数为15,投资4个项目P1、P2、P3、P4,各项目需要的最大资金数分别是6、8、8、10,企业资金情况如图a所示。P1新申请2个资金,P2新申请1个资金,若企业资金管理处为项目P1和P2分配新申请的资金,则P1、P2、P3、P4尚需的资金数分别为 (23) ,假设P1已经还清所有投资款,企业资金使用情况如图b所示,那么企业的可用资金数为 (24) 。若在图b所示的情况下,企业资金管理处为P2、P3、P4各分配资金数2、2、3,则分配后P2、P3、P4已用资金数分别为 (25) 。(2012年上半年)

(23)
  • A1、3、6、7,可用资金数为0,故资金周转状态是不安全的
  • B2、5、6、7,可用资金数为1,故资金周转状态是不安全的
  • C2、4、6、7,可用资金数为2,故资金周转状态是安全的
  • D3、3、6、7,可用资金数为2,故资金周转状态是安全的
(24)
  • A4
  • B5
  • C6
  • D7
(25)
  • A3、2、3,尚需资金数分别5、6、7,故资金周转状态是安全的
  • B5、4、6,尚需资金数分别3、4、4,故资金周转状态是安全的
  • C3、2、3,尚需资金数分别为5、6、7,故资金周转状态是不安全的
  • D5、4、6尚需资金数分别为3、4、4,故资金周转状态是不安全的
查看答案与解析收起答案与解析
答案(23)C (24)D (25)D

银行家算法的企业资金版,原理一模一样:资金=资源,项目=进程。先做第一次分配:总资金 15,图 a 时已用 2+3+2+3=10,可用 5。P1 新申请 2、P2 新申请 1,批准后已用变为 4、4、2、3(共 13),可用只剩 2。各项目尚需资金=最大需求−已用:P1 需 6-4=2,P2 需 8-4=4,P3 需 8-2=6,P4 需 10-3=7,即"2、4、6、7,可用资金数为 2"。(23)选 C——尚需 2 的 P1 恰好能被可用资金 2 满足,P1 完成后回收 4 个资金,可用变 6,接着 P2(需 4)完成回收 4 个,可用 10,P3(需 6)、P4(需 7)都能依次完成,所以状态是安全的。A 的"1、3、6、7"算错了 P1 P2 的尚需值;B 的"2、5、6、7"把 P2 尚需算成 5;D 的"3、3"连已用都算错了。

(24)问图 b 时的可用资金数:P1 已还清全部投资款(它占用的 4 个回到资金池),此时在资金池外运作的是 P2(3 个)、P3(2 个)、P4(3 个),共占用 8 个,可用 = 15-8 = 7,选 D。A 的 4、B 的 5、C 的 6 分别对应少还、多占等不同算错方式。

(25)问在图 b 基础上再给 P2、P3、P4 各分配 2、2、3 之后的状态:三者已用变为 5、4、6(合计 15,可用资金清零),尚需分别为 8-5=3、8-4=4、10-6=4。可用 0、人人尚需大于 0——没有任何项目能完成,资金周转状态不安全,选 D("5、4、6,尚需 3、4、4,不安全")。B 的数字与 D 相同但结论写成"安全",这是命题人埋的定性陷阱:数字算对了、安全性判断错,一样丢分。安全性检查的完整链条:算可用→算尚需→找能完成的→回收再分配,找不到即不安全。

真题 36 2013 下 · 题 27、28

假设系统中有三类互斥资源R1、R2和R3,可用资源数分别为10、5和3。在T0时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下表所示,此时系统剩余的可用资源数分别为 (27) 。如果进程按 (28) 序列执行,那么系统状态是安全的。(2013年下半年)

(27)
  • A1、1和0
  • B1、1和1
  • C2、1和0
  • D2、0和1
(28)
  • AP1→P2→P4→P5→P3
  • BP5→P2→P4→P3→P1
  • CP4→P2→P1→P5→P3
  • DP5→P1→P4→P2→P3
查看答案与解析收起答案与解析
答案(27)D (28)B

三类资源的标准银行家算法题。(27)算剩余可用资源:各类资源总量减去已分配总量。R1:10−(1+2+3+1+1)=10−8=2;R2:5−(1+1+1+1+1)=0;R3:3−(1+0+0+1+0)=1。剩余为"2、0 和 1",选 D。A 的"1、1 和 0"、B 的"1、1 和 1"、C 的"2、1 和 0"都是某一列求和出错的结果,五行的已分配数逐列加一遍即可避免。

(28)验证安全序列。先算各进程尚需量(最大需求−已分配):P1=(4,2,0),P2=(1,1,0),P3=(3,0,1),P4=(2,2,1),P5=(1,0,1)。拿候选序列 B(P5→P2→P4→P3→P1)走一遍:可用 (2,0,1),P5 尚需 (1,0,1)≤可用,P5 完成,回收它的已分配 (1,1,0),可用变 (3,1,1);P2 尚需 (1,1,0)≤(3,1,1),完成,回收 (2,1,0),可用 (5,2,1);P4 尚需 (2,2,1)≤(5,2,1),完成,回收 (1,1,1),可用 (6,3,2);P3 尚需 (3,0,1)≤(6,3,2),完成,回收 (3,1,0),可用 (9,4,2);P1 尚需 (4,2,0) 显然满足。五个进程全部顺利推进,序列安全,选 B。

再看其余三个选项为何不行:A 以 P1 开头,P1 尚需 (4,2,0),可用 R2 只有 0,第一步就卡死;C 以 P4 开头,P4 尚需 (2,2,1),可用 R2=0,同样卡死;D 以 P5→P1 走两步后可用为 (3,1,1),轮到 P4 尚需 (2,2,1),R2 差 1,卡死——安全性检查做到一半走不下去的序列就是不安全序列。记住检查格式:每步比较"尚需≤可用",完成即回收已分配量,五个进程全过才算安全。

五、存储管理:页式、段页式与虚拟页式

页式地址变换三步固定:页面大小定偏移位数(4K=1000H 取低三位)→高位作页号查表换块号→块号拼接偏移。页面淘汰比较"(访问位,修改位)字典序":(0,0) 最优、(1,1) 最差,修改位决定要不要写回磁盘。段页式地址结构题只做一件事:数每个字段的位数(末位−首位+1),取 2 的幂——页内位数定页大小、页号位数定每段页数、段号位数定段数。可变分区释放内存时的空闲区变化记三行:上下邻都占用→+1;一空一占→不变;都空闲→−1。

真题 40 2015 上 · 题 26

某进程有4个页面,页号为0〜3,页面变换表及状态位、访问位和修改位的含义如下图所示。若系统给该进程分配了3个存储块,当访问的页面1不在内存时,淘汰表中页号为 (26) 的页面代价最小。(2015年上半年)

  • A0
  • B1
  • C2
  • D3
查看答案与解析收起答案与解析
答案(26)D

页面淘汰的代价比较题。进程 4 个页面、只分配 3 个存储块,访问不在内存的页面 1 时必须淘汰一页腾位置。判断依据是表中三个标志位,淘汰优先级从低代价到高代价:先挑状态位=1 且"未访问、未修改"的,其次未访问已修改的,再是已访问未修改的,最后才是又访问又修改的——逻辑是:访问位=0 说明最近没用到(局部性差),修改位=0 说明淘汰后不必写回磁盘(省一次 I/O),两者都 0 的页面淘汰代价最小。

逐页看表:页 0 状态 1、访问 1、修改 1;页 2 状态 1、访问 1、修改 1;页 3 状态 1、访问 1、修改 0。页 1 状态 0(就是缺页主角),不在候选之列。三个候选里,页 0 和页 2 都被访问过且被修改过(淘汰要写回磁盘),页 3 虽被访问过但从未修改——淘汰它不用写回,代价最小,选 D(页 3)。

A、B、C 的错误都在于忽略了"修改位决定是否要写回磁盘"这一层:页 0、页 2 的修改位是 1,淘汰它们要多付一次磁盘写操作;至于"访问位"三页都是 1、拉不开差距,决策权自然落到修改位上。这道题与 2021 年上半年、2011 年上半年的页面淘汰题同构,判据一句话:状态位=1 的里面,先看访问位挑 0 的,再看修改位挑 0 的;都为 0 者淘汰。

真题 41 2021 上 · 题 25

进程P有5个页面,页号为0-4,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给进程P分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为 (25) 的页面。(2021年上半年)

  • A0
  • B1
  • C2
  • D4
查看答案与解析收起答案与解析
答案(25)A

与上一题同构:进程 P 有 5 个页面、分配 3 个存储块,访问缺页的页面 3 时要淘汰一页。逐页读表:页 0 状态 1、访问 1、修改 0;页 2 状态 1、访问 1、修改 1;页 4 状态 1、访问 1、修改 1(页 1、页 3 状态位 0,一个不在内存、一个正要调入)。三个候选页面里,页 2 和页 4 又访问又修改,淘汰时要写回磁盘;页 0 虽访问过但从未修改——淘汰它省一次磁盘写,代价最小,选 A(页 0)。

对比 2015 年上半年那道(上一题):那道题里被访问过但未修改的页面恰好是页 3,而这道题挪到了页 0——图和数据换了位置,判据一模一样。这道题还设了一个小陷阱:候选里没有"访问位=0"的页面(三个候选都被访问过),如果死记"先看访问位"而不懂"再看修改位",就会卡住。正确的做法是把两级判据组合起来:(访问位,修改位)取字典序最小的候选——(0,0) 最优,(0,1) 次之,(1,0) 再次,(1,1) 最差。本题三候选是 (1,0)、(1,1)、(1,1),页 0 的 (1,0) 最小,胜出。

真题 42 2010 上 · 题 25、26

某进程有5个页面,页号为0〜4,页面变换表如下所示。表中状态位等于0和1分别表示页面不在内存或在内存。若系统给该进程分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为 (25) 的页面。假定页面大小为4KB,逻辑地址为十六进制2C25H,该地址经过变换后,其物理地址应为十六进制 (26) 。(2010年上半年)

(25)
  • A0
  • B1
  • C2
  • D4
(26)
  • A2C25H
  • B4096H
  • C4C25H
  • D8C25H
查看答案与解析收起答案与解析
答案(25)A (26)C

两问连考:先淘汰页面,再做地址变换。(25)问淘汰谁:进程 5 个页面、3 个存储块,访问缺页的页面 3。表中在内存的是页 0(帧 3,访问 1、修改 0)、页 2(帧 4,访问 1、修改 1)、页 4(帧 1,访问 1、修改 1)。按"(访问位,修改位)字典序最小"判据,页 0 的 (1,0) 最小、淘汰后无需写回磁盘,代价最小,选 A(页 0)。页 2、页 4 都被修改过,淘汰要多付一次写回。

(26)问逻辑地址 2C25H 的物理地址。页面大小 4KB=4096=1000H,即逻辑地址的低 3 位十六进制是页内偏移,最高 1 位是页号:2C25H → 页号 2、页内偏移 C25H。查表:页 2 对应页帧 4。物理地址 = 页帧号拼接页内偏移 = 4C25H,选 C。

拆解其余选项:A 的 2C25H 就是逻辑地址原样照搬,等于页表没查;B 的 4096H 是把"页面大小"当成了地址本身;D 的 8C25H 把页帧号算成了 8——大概率是把页 2 映射看成了页 0 的帧号(页 0 帧号 3?不对)或干脆用了页 4 的帧号 1 加错位。地址变换的标准动作记三步:按页面大小切页号与偏移→查页表换页帧号→拼接,偏移部分永远原样保留。

真题 43 2011 上 · 题 27、28

某系统采用请求页式存储管理方案,假设某进程有6个页面,系统给该进程分配了4个存储块,其页面变换表如下表所示,表中的状态位等于1/0分别表示页面在内存/不在内存。当该进程访问的页面2不在内存时,应该淘汰表中页号为 (27) 的页面。假定页面大小为4K,逻辑地址为十六进制3C18H,该地址经过变换后的页帧号为 (28) 。(2011年上半年)

(27)
  • A0
  • B3
  • C4
  • D5
(28)
  • A2
  • B5
  • C8
  • D12
查看答案与解析收起答案与解析
答案(27)D (28)A

(27)问淘汰页面。请求页式、6 个页面、4 个存储块,访问缺页的页面 2 时须淘汰一页。在内存的页面:页 0(帧 5,访问 1、修改 1)、页 3(帧 2,访问 1、修改 0)、页 4(帧 8,访问 1、修改 1)、页 5(帧 12,访问 0、修改 0)。用"(访问位,修改位)字典序"比较:页 5 是 (0,0)——既没被访问过也没被修改过,淘汰它既符合局部性原理(近期不会用到)又省去写回磁盘的开销,代价最小,选 D(页 5)。页 3 的 (1,0) 虽然也不必写回,但访问位是 1 说明最近用过,按判据排在 (0,0) 之后。

(28)问逻辑地址 3C18H 变换后的页帧号。页面大小 4K=1000H,3C18H 的高位"3"是页号、低三位 C18H 是页内偏移。查表:页 3 状态位为 1(在内存),对应页帧号 2。所以该地址变换后的页帧号是 2,选 A。

这道题的陷阱在于页 3 虽然修改位为 0、看起来是"好淘汰的候选",但它不是淘汰问题的答案(它访问位为 1 且页 5 更优),而是地址变换的主角——命题人故意让同一行数据在两问里扮演不同角色,考的是"状态位=1 才能查页帧号"这条铁律:如果查表查到一个状态位为 0 的页,那不是页帧号,而是缺页中断。B 的 5 是页 0 的帧号,C 的 8 是页 4 的帧号,D 的 12 是页 5 的帧号,都是查错行的结果。

真题 44 2014 上 · 题 26

某计算机系统页面大小为4K,若进程的页面变换表如下所示,逻辑地址为十六进制1D16H。该地址经过变换后,其物理地址应为十六进制 (26) 。(2014年上半年)

  • A1024H
  • B3D16H
  • C4Dl6H
  • D6D16H
查看答案与解析收起答案与解析
答案(26)B

地址变换的最简形态:页面大小 4K=2^12=1000H,逻辑地址 1D16H 的低 3 位十六进制 D16H 是页内偏移,最高位 1 是页号。查页面变换表:页 1 对应的物理块号(页帧号)是 3。物理地址 = 物理块号拼接页内偏移 = 3D16H,选 B。

四个选项各有出处:A 的 1024H 是把页号 1 当成物理块号后又按十进制 1024 换算的产物,既查错了表又混了进制;C 的 4D16H 对应"页 1→块 4"的错误映射,表里块 4 挂在页 2 名下,属于查错行;D 的 6D16H 对应"页 1→块 6",表里 6 是页 3 的物理块号。这道题的通用解法只涉及两个动作:用页面大小定出偏移位数→拿页号查表换块号。同类题(2017 上 2D16H、2020 下 3C20H)都是换一张页表再考一遍,公式永不改变:物理地址 = 块号×页面大小 + 页内偏移,十六进制书写时直接把块号替换到最高位即可。

真题 45 2017 上 · 题 25

某计算机系统页面大小为4K,进程的页面变换表如下所示。若进程的逻辑地址为 2D16H。该地址经过变换后,其物理地址应为 (25) 。(2017年上半年)

  • A2048H
  • B4096H
  • C4D16H
  • D6D16H
查看答案与解析收起答案与解析
答案(25)C

与 2014 年上半年那道同构:页面大小 4K=1000H,逻辑地址 2D16H 拆成页号 2、页内偏移 D16H。查表得页 2 对应物理块 4,拼接得物理地址 4D16H,选 C。

选项设计与上一题如出一辙:A 的 2048H 是页 2 起点(2×1024=2048)的字节地址,把"页的起始地址"当成了变换结果;B 的 4096H 是页面大小的十六进制值,与地址无关;D 的 6D16H 用的是页 3 的物理块号 6——如果表看串一行就会掉进去。连续三年考几乎同一张页表(页 0→1、页 1→3、页 2→4、页 3→6),只是逻辑地址在 1D16H、2D16H、3C20H 之间轮换,说明这类题的分就是送分,前提是把"页号=地址高位、偏移=低位、块号查表替换"这个动作练成肌肉记忆。顺带注意选项里的"C. 4Dl6H"这类形近字陷阱(字母 l 与数字 1),书写时用标准十六进制字符。

真题 46 2017 下 · 题 27、28

某操作系统采用分页存储管理方式,下图给出了进程A和进程B的页表结构。如果物理页的大小为1KB,那么进程A中逻辑地址为1024(十进制)用变量存放在 (27) 号物理内存页中。假设进程A的逻辑页4与进程B的逻辑页5要共享物理页4,那么应该在进程A页表的逻辑页4和进程B页表的逻辑页5对应的物理页处分别填 (28) 。(2017年下半年)

(27)
  • A8
  • B3
  • C5
  • D2
(28)
  • A4、4
  • B4、5
  • C5、4
  • D5、5
查看答案与解析收起答案与解析
答案(27)B (28)A

带共享页的页表题。(27)问进程 A 逻辑地址 1024(十进制)落在哪个物理页。物理页大小 1KB=1024 字节,逻辑地址 1024 = 1×1024 + 0,即页号 1、页内偏移 0。查进程 A 的页表:逻辑页 1 → 物理页 3。所以该地址存放在 3 号物理内存页中,选 B。A 的 8、C 的 5、D 的 2 分别是逻辑页 0、逻辑页 2、逻辑页 3 对应的物理页号——错在把页号算成了 0(没除对 1024)或查错了行。

(28)问共享物理页 4 时两个页表的填法。共享的实现方式就是让不同进程的页表项指向同一个物理页:进程 A 的逻辑页 4 空缺,填入 4;进程 B 的逻辑页 5 空缺,也填入 4。即 A、B 两张表中分别写入"4、4",选 A。B 的"4、5"是让 B 的逻辑页 5 指向物理页 5,没有共享;C、D 的组合同理。共享页的意义也顺便理解一下:两个进程各用自己的逻辑地址(A 里叫页 4、B 里叫页 5),映射到同一块物理内存,改这页数据两边同时可见——动态链接库就是这样加载的。这道题把"页表是逻辑页到物理页的映射表"这一定义考到了极致:映射表里填什么,完全取决于想让它指向谁。

真题 47 2020 下 · 题 24

假设计算机系统的页面大小为4K,进程P的页面变换表如下表所示。若P要访问的逻辑地址为十六进制3C20H,那么该逻辑地址经过地址变换后,其物理地址应为 (24) 。(2020年下半年)

  • A2048H
  • B3C20H
  • C5C20H
  • D6C20H
查看答案与解析收起答案与解析
答案(24)D

2020 年下半年的地址变换题。页面大小 4K=1000H,逻辑地址 3C20H:页号 3、页内偏移 C20H。查进程 P 的页面变换表:页 3 → 物理块 6。物理地址 = 6 拼接 C20H = 6C20H,选 D。

A 的 2048H 是 2×1024,即"页 2 的起始地址",属于把页号乘页面大小当成结果的错误;B 的 3C20H 是逻辑地址原样,等于没查表——这也是命题人最爱放的一个选项,专门接住"变换前后地址不变"的错觉;C 的 5C20H 用了页 2 的物理块号 5,查表查到了上一行。至此三道 4K 页面变换题(1D16H→3D16H、2D16H→4D16H、3C20H→6C20H)形成完整闭环,解题步骤固定为三步:除 1000H 取页号、查表换块号、拼接偏移。考场上这类题应当成送分题,错误永远只可能出在"查错行"或"偏移位数算错"两处。

真题 48 2013 下 · 题 24

假设段页式存储管理系统中的地址结构如下图所示,则系统中 (24) 。(2013年下半年)

  • A页的大小为4K,每个段的大小均为4096个页,最多可有256个段
  • B页的大小为4K,每个段最大允许有4096个页,最多可有256个段
  • C页的大小为8K,每个段的大小均为2048个页,最多可有128个段
  • D页的大小为8K,每个段最大允许有2048个页,最多可有128个段
查看答案与解析收起答案与解析
答案(24)B

段页式地址结构题:地址从高位到低位切成段号、页号、页内地址三段,每段的位数决定该维度的容量上限。图中段号占 31~24 位共 8 位,页号占 23~12 位共 12 位,页内地址占 11~0 位共 12 位。逐一换算:页内地址 12 位 → 2^12=4K,即页的大小为 4K;页号 12 位 → 每个段最多允许有 2^12=4096 个页;段号 8 位 → 最多可有 2^8=256 个段。选 B。

A 与 B 的差别在一个词:"每个段的大小均为 4096 个页"对"每个段最大允许有 4096 个页"。地址结构给出的是寻址能力的上限,实际段可以有任意更小的页数——段是逻辑长度可变的单位(这正是分段的意义),说"均为"就错了,A 排除;C、D 把页内地址错算成 13 位(2^13=8K)、把段号错算成 7 位(2^7=128),位数一错全盘皆输。做这类题的关键动作就是数清楚每个字段的起止位:位数=末位−首位+1,31-24、23-12、11-0 三个区间别数丢边界。2014 下、2016 下连续两年再考(见下两题),套路完全一致。

真题 49 2014 下 · 题 24

假设段页式存储管理系统中的地址结构如下图所示,则系统 (24) 。(2014年下半年)

  • A最多可有2048个段,每个段的大小均为2048个页,页的大小为2K
  • B最多可有2048个段,每个段最大允许有2048个页,页的大小为2K
  • C最多可有1024个段,每个段的大小均为1024个页,页的大小为4K
  • D最多可有1024个段,每个段最大允许有1024个页,页的大小为4K
查看答案与解析收起答案与解析
答案(24)D

同上一题的段页式地址结构,换了一组位数:段号占 31~22 位共 10 位,页号占 21~12 位共 10 位,页内地址占 11~0 位共 12 位。换算:页内 12 位 → 页大小 2^12=4K;页号 10 位 → 每段最大允许 2^10=1024 个页;段号 10 位 → 最多 2^10=1024 个段。对照选项,正确叙述是"最多可有 1024 个段,每个段最大允许有 1024 个页,页的大小为 4K",选 D。

干扰项的构造规律和上题一致:A、B 用"均为"偷换"最大允许有"——段的实际大小由程序逻辑决定,地址结构只保证寻址上限,C、D 之外还有把页大小算成 2K 或 8K 的版本。三道段页式题连起来看,命题人每次只调整字段的位宽组合(8/12/12 → 10/10/12 → 8/11/13),考生需要做的永远只有一件事:数位数、取 2 的幂。另外注意"页的大小"由页内地址位数决定、"每段最多页数"由页号位数决定、"最多段数"由段号位数决定,三者各管各的,不要交叉张冠李戴。

真题 50 2016 下 · 题 26

假设段页式存储管理系统中的地址结构如下图所示,则系统 (26) 。(2016年下半年)

  • A最多可有256个段,每个段的大小均为2048个页,页的大小为8K
  • B最多可有256个段,每个段最大允许有2048个页,页的大小为8K
  • C最多可有512个段,每个段的大小均为1024个页,页的大小为4K
  • D最多可有512个段,每个段最大允许有1024个页,页的大小为4K
查看答案与解析收起答案与解析
答案(26)B

第三道段页式地址结构题,位宽变成:段号 31~24 共 8 位,页号 23~13 共 11 位,页内地址 12~0 共 13 位。换算:页内 13 位 → 页大小 2^13=8K;页号 11 位 → 每段最大允许 2^11=2048 个页;段号 8 位 → 最多 2^8=256 个段。正确选项为"最多可有 256 个段,每个段最大允许有 2048 个页,页的大小为 8K",选 B。

这道题的官方解析里有个值得注意的措辨:B 说"每个段最大允许有 2048 个页",另一版本的选项说"每个段的大小均为 2048 个页"——前者才是对的,理由前面两题已经反复强调:地址结构决定的是寻址上限,段的实际长度可变。干扰项若出现"512 个段"对应段号 9 位的误数、"1024 个页"对应页号 10 位的误数、"4K 页"对应页内 12 位的误数——数错一位就是 2 倍差距。三道题放在一起的终极结论:段页式地址结构题 = 三个字段三道小计算题,考场上各花 20 秒,稳拿一分。

真题 82 2012 上 · 题 26、27、28

假设一台按字节编址的16位计算机系统,采用虚拟页式存储管理方案,页面的大小为2K,且系统中没有使用快表(或联想存储器)。某用户程序如图a所示,该程序的页面变换表如图b所示,表中状态位等于1和0分别表示页面在内存或不在内存。
图a中MOVE Data1,Data2是一个4字节的指令,Data1和Data2表示该指令的两个32位操作数。假设MOVE指令存放在2047地址开始的内存单元中,Data1存放在6143地址开始的内存单元中,Data2存放在10239地址开始的内存单元中,那么执行MOVE指令将产生 (26) 次缺页中断,其中:取指令产生 (27) 次缺页中断,取Data1和Data2操作数分别产生 (28) 次缺页中断。(2012年上半年)

(26)
  • A3
  • B4
  • C5
  • D6
(27)
  • A0
  • B1
  • C2
  • D3
(28)
  • A1、1
  • B1、2
  • C2、2
  • D2、3
查看答案与解析收起答案与解析
答案(26)C (27)B (28)C

虚拟页式的缺页中断计数题,三空连问。参数:页面 2KB=2048B,无快表;MOVE Data1, Data2 是 4 字节指令,指令本体存放在 2047 开始的单元(跨页 0/1),Data1 在 6143 开始(6143=3×2048−1,跨页 2/3),Data2 在 10239 开始(10239=5×2048−1,跨页 4/5);页表显示页 0 在内存(状态 1),页 1~5 都不在(状态 0)。

(26)问执行 MOVE 指令共产生多少次缺页:取指令要访问页 0(在内存)和页 1(缺页 1);取 Data1 访问页 2(缺页 2)和页 3(缺页 3);取 Data2 访问页 4(缺页 4)和页 5(缺页 5)。共 5 次,选 C。注意 4 字节指令跨页会访问两个页面——这正是命题人把地址设在 2047、6143、10239(都是页尾减 1)的用意。

(27)问取指令产生的缺页数:指令跨页 0 与页 1,页 0 状态位 1 不缺,页 1 缺——共 1 次,选 B。若页 0 也不在内存,答案就是 2;"状态位=1 的页不产生缺页"是这里的关键读表动作。

(28)问取 Data1 和 Data2 操作数各产生的缺页数:Data1 跨页 2/3(两页都不在内存)缺 2 次,Data2 跨页 4/5 同样缺 2 次,即"2、2",选 C。A 的 1、1 忽略了跨页;B 的 1、2、D 的 2、3 是把某个操作数当成了不跨页。三空连起来的总账:1+2+2=5,与(26)闭合——做题时先算(27)(28)再回头验(26),三处数字互相印证最稳。

真题 84 2013 上 · 题 27、28

假设内存管理采用可变式分区分配方案,系统中有五个进程P1〜P5,且某一时刻内存使用情况如下图所示(图中空白处表示未使用分区)。此时,若P5进程运行完并释放其占有的空间,则释放后系统的空闲区数应 (27) ;造成这种情况的原因是 (28) 。(2013年上半年)

(27)
  • A保持不变
  • B减1
  • C加1
  • D置零
(28)
  • A无上邻空闲区,也无下邻空闲区
  • B有上邻空闲区,但无下邻空闲区
  • C有上邻空闲区,但无下邻空闲区
  • D有上邻空闲区,也有下邻空闲区
查看答案与解析收起答案与解析
答案(27)B (28)D

可变分区的空闲区合并题。内存分区图:分区 0→P1、1→P2、2→空、3→P4、4→P3、5→空、6→P5、7→空,共 3 个空闲区(2、5、7)。(27)问 P5(位于分区 6)释放后空闲区数的变化:P5 释放腾出分区 6,它的上邻(分区 5)是空闲区、下邻(分区 7)也是空闲区——三块合并成一块。合并后空闲区 = 分区 2(1 个)+ 合并区(1 个)= 2 个,原来是 3 个,即"减 1",选 B。A 的保持不变适用于"上下邻都占用";C 的加 1 适用于"上下邻都占用(原空闲区+1)"?准确说:上邻占用且下邻占用→空闲区加 1;单侧有空闲→不变;两侧都空闲→减 1。

(28)问造成这种情况(减 1)的原因:正是"有上邻空闲区,也有下邻空闲区",两个空闲区与释放区合并成一个,选 D。注意 C 选项"B. 有上邻空闲区,但无下邻空闲区"与"C. 有上邻空闲区,但无下邻空闲区"在原文中 B、C 文字几乎相同(提取源如此),按官方答案口径正确项是 D。四种情况的完整对应关系值得背下来:都占用→+1;一空一占→不变;都空闲→−1——空闲区计数题的全部逻辑就这三行,配合"看释放分区的上下邻居"的动作即可。

六、设备管理:缓冲、磁盘调度与 I/O 层次

缓冲计算两公式:单缓冲总时间 = (T+M)×n + C(读入与送出串行、处理并行);双缓冲总时间 = (T+M+C) + (n-1)×max(T, M+C)(三段全流水,节拍取最大)。磁盘读取时间 = 寻道(距离×单道时间,别忘相乘)+ 旋转延迟 + 传输。移臂调度题先定方向规则(SCAN 沿当前方向扫到头折返、CSCAN 单向到头跳回起点、SSTF 挑最近),同柱面内按扇区号(相同时磁头号)排序。旋转调度记住结论:处理时间转过几块,就把记录隔几块放,优化后总时间 = 记录数×(读+处理)。I/O 软件四层从上到下:用户进程→与设备无关的系统软件→设备驱动→中断处理→硬件。

真题 51 2014 下 · 题 25、26

假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为10μs,由缓冲区送至用户区的时间是5μs,系统对每个磁盘块数据的处理时间为2μs。若用户需要将大小为10个磁盘块的Docl文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为 (25) μs;采用双缓冲区需要花费的时间为 (26) μs。(2014年下半年)

(25)
  • A100
  • B107
  • C152
  • D170
(26)
  • A100
  • B107
  • C152
  • D170
查看答案与解析收起答案与解析
答案(25)C (26)B

单缓冲/双缓冲的经典计算题。参数:读入缓冲区 T=10μs,送用户区 M=5μs,处理 C=2μs,共 10 块。(25)单缓冲:缓冲区只有一个,读入(T)和送出(M)不能同时占用缓冲区,必须串行;而"处理(C)"不占缓冲区,可以与下一块的读入并行。所以流水线每块的节拍是 T+M=15μs,只有最后一块的处理 C 落在流水线之外。总时间 = (T+M)×n + C = 15×10+2 = 152μs,选 C。

(26)双缓冲:两个缓冲区交替使用,读入第 i+1 块(用缓冲区 B)与送出第 i 块(用缓冲区 A)可以并行,三段 T、M、C 全部流水化。流水节拍取决于最慢的一段 max(T, M+C)=max(10, 7)=10μs,首块串行走完 T+M+C=17μs,之后每 10μs 出一块。总时间 = (T+M+C) + (n-1)×max(T, M+C) = 17 + 9×10 = 107μs,选 B。

两个公式的记忆抓手:单缓冲"两段拼一节拍,处理落单在最后";双缓冲"三段全流水,节拍取最大"。A 的 100 是漏算首块或多块的典型结果;D 的 170=17×10 是把双缓冲也当串行算(每块 17μs 一共 10 块)——恰恰忽略了双缓冲的意义就在并行。2015 年下又出了数字不同的同款题(下一题),公式不变。

真题 52 2015 下 · 题 25、26

假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为15μs,由缓冲区送至用户区的时间是5μs,在用户区内系统对每块数据的处理时间为1μs,若用户需要将大小为10个磁盘块的Doc1文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为 (25) μs;采用双缓冲区需要花费的时间为 (26) μs。(2015年下半年)

(25)
  • A150
  • B151
  • C156
  • D201
(26)
  • A150
  • B151
  • C156
  • D201
查看答案与解析收起答案与解析
答案(25)D (26)C

同一公式的换参数版:T=15μs、M=5μs、C=1μs、n=10。(25)单缓冲:读入与送出串行占缓冲区,节拍 T+M=20μs,最后一块处理 C 单独落在外面。总时间 = (15+5)×10 + 1 = 201μs,选 D。A 的 150=15×10 只算了读入;B 的 151 加上了 C 却漏了送出 M 的 5μs;C 的 156 大概是按 (T+C)×10+M 之类的错误组合算的。

(26)双缓冲:三段流水化,节拍取 max(T, M+C)=max(15, 6)=15μs(读入是最慢的一段),首块耗时 T+M+C=21μs。总时间 = 21 + 9×15 = 156μs,选 C。A 的 150=15×10 是漏掉首块 M+C 的近似值;B 的 151=150+1 是把公式记成 n×T+C;D 的 201 是单缓冲的答案,放在双缓冲一问里专治"两问用同一个公式"的习惯。

把两道缓冲题的四个答案排一起看规律:单缓冲总比双缓冲慢,差距恰好体现在"读入与送出能否并行"上;当 M+C 远小于 T 时,双缓冲的节拍被 T 主导(本题 15μs),两方案差距缩小到 M+C 的量级。考试时先判断是"处理不占缓冲区"还是别的假设,再套 n(T+M)+C 与 (T+M+C)+(n-1)max(T,M+C),两问各 30 秒。

真题 53 2009 上 · 题 25

在移臂调度算法中, (25) 算法可能会随时改变移动臂的运动方向。(2009年上半年)

  • A电梯调度和先来先服务
  • B先来先服务和最短寻找时间优先
  • C单向扫描和先来先服务
  • D电梯调度和最短寻找时间优先
查看答案与解析收起答案与解析
答案(25)B

移臂调度算法的特性辨析。移动臂的运动会带来寻道时间,各算法的区别就在"臂往哪个方向走、能不能回头"。逐个看:先来先服务(FCFS)完全按请求到达顺序服务,臂被随机来回拉扯;最短寻找时间优先(SSTF)每次挑离当前磁道最近的请求,近处的新请求会让臂在局部来回折返,远端请求可能被无限推迟。这两种算法的移动方向都由"下一个请求在哪"决定,可能随时改变方向,选 B。

A 的"电梯调度(SCAN)和先来先服务":SCAN 的臂像电梯一样沿一个方向扫到头再折返,方向只在到达尽头(或该方向最远请求)时改变一次,绝不是"随时";C 的"单向扫描(CSCAN)和先来先服务":CSCAN 更是只朝一个方向扫、到头直接跳回起点重新开始,中途从不回头;D 的"电梯调度和最短寻找时间优先"里 SCAN 不满足"随时改变"。核心区别记成一句话:FCFS 和 SSTF 是"看 request 办事",方向随机;SCAN/CSCAN 是"按既定方向扫",方向受控。顺带记住各算法的公平性问题:SSTF 有远端饥饿问题、SCAN 折中、CSCAN 让等待时间更均匀,这些也是上午题的选择题素材。

真题 54 2011 下 · 题 26、27

假设磁盘每磁道有18个扇区,系统刚完成了10号柱面的操作,当前移动臂在13号柱面上,进程的请求序列如下表所示。若系统采用SCAN(扫描)调度算法,则系统响应序列为 (26) ;若系统采用CSCAN(单向扫描)调度算法,则系统响应序列为 (27) 。(2011年下半年)

(26)
  • A⑦⑩①②④③⑨⑧⑤⑥
  • B①⑦⑩②③④⑥⑤⑧⑨
  • C⑦⑩①②④③⑥⑤⑧⑨
  • D①⑦⑩②③④⑧⑨⑥⑤
(27)
  • A⑦⑩①②④③⑨⑧⑤⑥
  • B①⑦⑩②③④⑥⑤⑧⑨
  • C⑦⑩①②④③⑥⑤⑧⑨
  • D①⑦⑩②③④⑧⑨⑥⑤
查看答案与解析收起答案与解析
答案(26)A (27)C

SCAN 与 CSCAN 的序列排列题,两个空一次考完。先整理请求表(柱面号/磁头号/扇区号):①(15,8,9)、②(20,6,5)、③(30,9,6)、④(20,10,5)、⑤(5,4,5)、⑥(2,7,4)、⑦(15,8,1)、⑧(6,3,10)、⑨(8,7,9)、⑩(15,10,4)。磁头刚从 10 号柱面移到 13 号柱面——方向是由里向外,SCAN 算法优先沿当前方向服务。

(26)SCAN:从 13 号柱面向外依次是 15(三个请求①⑦⑩)、20(②④)、30(③)。同柱面内按扇区号排序:15 号柱面的三个请求扇区分别是 1、4、9,所以⑦(1)→⑩(4)→①(9);20 号柱面的②④扇区都是 5,再按磁头号排序:②(6)→④(10)。向外扫到 30 号柱面(最外层)后折返向里:8(⑨)、6(⑧)、5(⑤)、2(⑥),同柱面同样按扇区排。完整序列:⑦⑩①②④③⑨⑧⑤⑥,选 A。

(27)CSCAN:磁头只能单向移动(由里向外),扫到 30 号柱面后不折返,而是立即回到最小柱面重新向外扫,于是回程不服务任何请求,重新从 2 号柱面向外:⑥(2)、⑤(5)、⑧(6)、⑨(8)。完整序列:⑦⑩①②④③⑥⑤⑧⑨,选 C。注意最后四项是按柱面升序排的(2→5→6→8),CSCAN 不会像 SCAN 那样由外向里。B、D 两个选项把同柱面内的扇区/磁头排序打乱或把 SCAN 的折返段混进 CSCAN,属于细节陷阱——这道题的得分点全在"同柱面按扇区、方向规则看算法"两处。

真题 55 2019 下 · 题 28

假设磁盘臂位于15号柱面上,进程的请求序列如下表表示,如果采用最短移臂调度算法,那么系统的响应序列应为 (28) 。(2019年下半年)

  • A①②③④⑤⑥
  • B⑤①②④③⑥
  • C②③④⑤①⑥
  • D④②③⑤①⑥
查看答案与解析收起答案与解析
答案(28)B

最短移臂调度(SSTF)的序列题。磁头位于 15 号柱面,六个请求:①(12,8,9)、②(19,6,5)、③(23,9,6)、④(19,10,5)、⑤(12,8,4)、⑥(28,3,10)。SSTF 每步选距当前柱面最近的请求:15 号到各柱面的距离是 12→3、19→4、23→8、28→13。最近的是 12 号柱面(距离 3),有两个请求①⑤,同柱面按扇区号排序:⑤(4)→①(9)。

服务完 12 号柱面后,剩余请求为 19(距离 7)、23(距离 11)、28(距离 16)——注意此时磁头在 12 号,19 号反而比从 15 号出发时更远?不对:12→19 的距离是 7,12→23 是 11,最近仍是 19。19 号柱面有两个请求②④,扇区都是 5,再按磁头号排序:②(6)→④(10)。然后 23 号(③)、最后 28 号(⑥)。完整响应序列:⑤①②④③⑥,选 B。

A 的①②③④⑤⑥是按请求序号原样执行,那是 FCFS 的答案,放在 SSTF 一问里做对照;C 以②开头——19 比 12 远,第一步就不符合"最短移臂";D 以④开头同理且柱面顺序完全乱掉。这道题的排序规则和 2010 年下那道 SCAN 题一致:先按算法选柱面,同柱面内按扇区号(相同时按磁头号)排序——把这两层排序规则记住,磁盘调度序列题就只剩下细心。

真题 56 2010 上 · 题 27、28

假设某磁盘的每个磁道划分成9个物理块,每块存放1个逻辑记录。逻辑记录R0, R1, …, R8存放在同一个磁道上,记录的安排顺序如下表所示:
如果磁盘的旋转速度为27ms/周,磁头当前处在R0的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为3ms,则处理这9个记录的最长时间为 (27) ;若对信息存储进行优化分布后,处理9个记录的最少时间为 (28) 。(2010年上半年)

(27)
  • A54ms
  • B108ms
  • C222ms
  • D243ms
(28)
  • A27ms
  • B54ms
  • C108ms
  • D216ms
查看答案与解析收起答案与解析
答案(27)C (28)B

旋转调度计算题。参数:每磁道 9 个物理块,转速 27ms/周 → 每块占 3ms;单缓冲,每条记录处理 3ms;磁头在 R0 起点,逻辑记录 R0~R8 依次放在块 1~9。(27)问顺序处理的总时间。推演:读 R0 花 3ms(磁头到达块 2 起点),处理 R0 花 3ms(期间磁盘继续转,磁头到块 3 起点)。要读 R1(块 2 起点)必须等磁盘转完一整圈:从当前块 3 起点转回块 2 起点需要 24ms(一圈 27ms 减去已越过的 3ms)。之后每条记录都是"等 24ms + 读 3ms + 处理 3ms"的循环,即每条占 27ms。总时间 = 首条 (3+3) + 后 8 条×27 = 6+216 = 222ms,选 C。

A 的 54=9×(3+3),是假设"处理完立刻能读到下一条"的理想值;B 的 108 只考虑了部分等待;D 的 243=9×27 是把首条也按整圈算的上界。

(28)问优化排列后的总时间。思路:处理 R0 的 3ms 里磁盘转过 1 块,读完 R0 时磁头在块 2 起点、处理完在块 3 起点——那么把 R1 放在块 3!这样处理完 R0 的瞬间正好开始读 R1,零等待。之后每条记录都照此"隔一块放一条":R0 块 1、R1 块 3、R2 块 5、R3 块 7、R4 块 9、R5 块 2(绕回)……每条记录耗时恒为读 3+处理 3=6ms。总时间 = 9×6 = 54ms,选 B。A 的 27ms 是只转一圈的时间;C 的 108、D 的 216 是未优化或半优化的值。"逻辑记录的排列方式影响处理时间"是旋转调度的核心结论,优化口诀:处理时间转过几块,就隔几块放记录。

真题 57 2010 下 · 题 26

某磁盘磁头从一个磁道移至另一个磁道需要10ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均移动距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和2ms,则读取一个100块的文件需要 (26) ms时间。(2010年下半年)

  • A10200
  • B11000
  • C11200
  • D20200
查看答案与解析收起答案与解析
答案(26)D

非连续存放文件的读取时间题。参数:寻道(移臂)10ms/磁道,相邻数据块平均移动 10 个磁道,每块旋转延迟 100ms、传输 2ms,共 100 块。读一块的完整开销 = 寻道 + 旋转延迟 + 传输:寻道 = 10 磁道×10ms = 100ms,加上旋转 100ms、传输 2ms,每块合计 202ms。100 块文件总时间 = 202×100 = 20200ms,选 D。

干扰项的构成:A 的 10200=102×100,把寻道时间只算成一次 2ms?——是把"传输 2ms"当成了寻道;B 的 11000=110×100,每块只算了寻道 10ms(漏乘 10 个磁道)加旋转;C 的 11200=112×100,同样是寻道项算错。这道题的失分点几乎全在"寻道时间"上:题目给的是"每移动一个磁道 10ms",而相邻块平均隔 10 个磁道,所以一次寻道是 10×10=100ms 而不是 10ms——寻道距离与寻道时间要相乘。2016 年上半年出了数字不同的同款题(下一题),结构一模一样,注意区分"移动一个磁道的时间"与"平均移动距离"两个参数。

真题 58 2016 上 · 题 25

某磁盘有100个磁道,磁头从一个磁道移至另一个磁道需要6ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和20ms,则读取一个100块的文件需要 (25) ms。(2016年上半年)

  • A12060
  • B12600
  • C18000
  • D186000
查看答案与解析收起答案与解析
答案(25)C

同上一题的换参数版:磁道移动 6ms/道,相邻块平均距离 10 道,旋转延迟 100ms、传输 20ms,共 100 块。每块读取时间 = 寻道 10×6=60ms + 旋转延迟 100ms + 传输 20ms = 180ms;100 块总时间 = 180×100 = 18000ms,选 C。

A 的 12060=120.6×100,是寻道算成 6×0.1?更可能是把传输 20ms 误当寻道后(60+20+40)之类的组合;B 的 12600=126×100,寻道 6ms 漏乘 10 道(6+100+20=126),这正是本题埋的最大陷阱——把"移动一个磁道 6ms"直接当单次寻道时间;D 的 186000=1860×100,数量级多了一个 0,属于把每块时间当成 1860ms 的粗心错误。两道题对照:上一题寻道 100ms/传输 2ms,这一题寻道 60ms/传输 20ms,参数互换后陷阱不变——先算单块时间(寻道=距离×单道时间),再乘块数,两步走稳就能全对。

真题 59 2021 下 · 题 27、28

在磁盘上存储数据的排列方式会影响服务的总时间。假设每个磁道被划分成10个物理块,每个物理块存放1个逻辑记录。逻辑记录R1,R2,…,R10存放在同一个磁道上,记录的排列顺序如下表所示。(2021年下半年)
假定磁盘的旋转速度为10ms/周,磁头当前在R1的开始处。若系统顺序处理这些记录,使用但缓冲区,每个记录处理时间为2ms,则处理这10个记录的最长时间为 (27) ;若对存储数据的排列顺序进行优化,处理10个记录的最少时间为 (28) 。

(27)
  • A30ms
  • B60ms
  • C94ms
  • D102ms
(28)
  • A30ms
  • B60ms
  • C102ms
  • D94ms
查看答案与解析收起答案与解析
答案(27)D (28)A

2021 年下半年的旋转调度题。参数:每磁道 10 个物理块,转速 10ms/周 → 每块 1ms;单缓冲,每条记录处理 2ms;R1~R10 依次占块 1~10,磁头在 R1 起点。(27)问顺序处理总时间。推演:读 R1 花 1ms(磁头到块 2 起点),处理 R1 花 2ms(磁头到块 4 起点,转过 2 块)。要读 R2(块 2 起点)需等磁盘转回:从块 4 起点转到块 2 起点需要 8ms(越过的块 4、5……10、1 后到块 2)。每条记录循环"等 8+读 1+处理 2"?直接算时间点更快:R1 起点 t=0,读完 t=1,处理完 t=3;R2 起点在 t=1 处已过,下一圈在 t=11,读 11→12,处理 12→14;R3 起点第一圈 t=2、第二圈 t=12 已过?处理完 R2 是 t=14,R3 起点下一圈 t=22,读 22→23,处理 23→25……可见从 R2 起每条记录间隔 11ms?继续验证:R4 起点 t=33、R5 起点 t=44——间隔稳定 11ms。总时间 = 最后一条 R10 读+处理 = 9×11 + (1+2) = 99+3 = 102ms,选 D。

(28)问优化排列:处理 R1 的 2ms 里磁盘转过 2 块,处理完磁头在块 4 起点——把 R2 放块 4!之后每条"读 1+处理 2=3ms"恰好转 3 块,按间隔 3 块排:R1 块 1、R2 块 4、R3 块 7、R4 块 10、R5 块 3、R6 块 6……每条 3ms 无等待。总时间 = 10×3 = 30ms,选 A。C 的 94、B 的 60 都是部分优化的值。这道题与 9 块 27ms 那道(2014 下)完全同构,只是"处理时间转过几块就隔几块放"的间隔从 2 变成 3,公式:优化后总时间 = 记录数×(读+处理)。

真题 91 2018 上 · 题 26

I/O设备管理软件一般分为4个层次,如下图所示。图中①②③分别对应 (26) 。(2018年上半年)

  • A设备驱动程序、虚设备管理、与设备无关的系统软件
  • B设备驱动程序、与设备无关的系统软件、虚设备管理
  • C与设备无关的系统软件、中断处理程序、设备驱动程序
  • D与设备无关的系统软件、设备驱动程序、中断处理程序
查看答案与解析收起答案与解析
答案(26)D

I/O 软件层次结构题。图中四层从上到下:用户进程、①、②、③、硬件,I/O 请求自上而下传递、I/O 应答自下而上返回。标准的四层划分是:用户层 I/O 软件 → 与设备无关的系统软件(设备独立性软件)→ 设备驱动程序 → 中断处理程序 → 硬件。①在用户进程之下、管通用接口,是与设备无关的系统软件;②直接操纵设备控制器,是设备驱动程序;③贴着硬件、响应设备完成事件,是中断处理程序。三者对应"与设备无关的系统软件、设备驱动程序、中断处理程序",选 D。

A、B 把"虚设备管理"混进来——虚设备(Spooling)属于与设备无关的系统软件层内部的功能,不是独立的一层;C 的顺序错在把中断处理程序放在驱动程序之上——中断处理是最贴近硬件的一层,设备驱动在它之上。层次顺序的记忆抓手:离用户越近越通用,离硬件越近越具体;中断处理程序永远垫底(第一响应者),驱动程序管控制器寄存器,无关层管命名、保护、缓冲、Spooling。I/O 请求从上往下穿三层到达硬件,应答与中断自下而上返回,这张图 2018 年上考过一次,配套还有 2019 年下的 I/O 软件叙述题(见题 93)。

真题 93 2019 下 · 题 26

以下关于I/O软件的叙述中,正确的是 (26) 。(2019年下半年)

  • AI/O软件开放了I/O操作实现的细节,方便用户使用I/O设备
  • BI/O软件隐藏了I/O操作实现的细节,向用户提供的是物理接口
  • CI/O软件隐藏了I/O操作实现的细节,方便用户使用I/O设备
  • DI/O软件开放了I/O操作实现的细节,用户可以使用逻辑地址访问I/O设备
查看答案与解析收起答案与解析
答案(26)C

I/O 软件的目标定位题。I/O 软件设计的基本思想是隐藏物理设备的实现细节,向上提供统一、抽象、便于使用的接口——用户看到的是逻辑设备(如"打印机"),无须了解控制器寄存器、中断号这些细节。C 的"隐藏了 I/O 操作实现的细节,方便用户使用 I/O 设备"正是这一思想的表述,选 C。

A 说"开放了实现细节"——方向完全相反,I/O 软件存在的意义就是封装;B 前半句对(隐藏细节)、后半句错(向用户提供的是逻辑/抽象接口而不是物理接口,物理接口恰恰是要藏起来的);D 双错:既"开放细节",又让用户用"逻辑地址"访问设备——用户访问设备用的是逻辑设备名,且开放细节的表述本身不成立。这道题与题 91 的层次图配套:正因为中间各层做了层层抽象与隔离,用户层才能"看不见设备细节"。判断这类叙述题的固定方法:抓两个关键词的方向——细节是"隐藏"还是"开放"、接口是"逻辑"还是"物理",四个组合里只有"隐藏+逻辑"是对的。

真题 94 2019 下 · 题 27

在磁盘调度管理中通常 (27) 。(2019年下半年)

  • A先进行旋转调度,再进行移臂调度
  • B在访问不同柱面的信息时,只需要进行旋转调度
  • C先进行移臂调度,再进行旋转调度
  • D在访问同一磁盘的信息时,只需要进行移臂调度
查看答案与解析收起答案与解析
答案(27)C

磁盘访问的两段调度顺序题。访问一个磁盘块要分两步走:先把移动臂移到目标柱面(移臂调度),再等盘面转到目标扇区(旋转调度)——磁头必须先到达正确的磁道,才谈得上在该磁道上等待目标扇区转过磁头下方,所以顺序是先移臂、后旋转,选 C。

A 把两步对调:磁头还没到目标柱面,旋转等待毫无意义(等到的扇区在别的磁道上);B 说访问不同柱面只需要旋转调度——不同柱面恰恰是移臂调度的主战场,柱面不变时才只做旋转调度;D 说访问同一磁盘的信息只需要移臂调度——同一磁道内区分的是扇区,起作用的是旋转调度,这两个选项把两个调度的适用场景互换了。配套的记忆模型:定位一个数据 = 柱面(移臂决定)+ 扇区(旋转决定)+ 磁头号(选盘面),三要素中前两个各对应一种调度。这道题与题 53(哪些算法随时改变移臂方向)、题 54/55(调度序列计算)构成磁盘调度一族:概念题考顺序与特性,计算题考 SCAN/CSCAN/SSTF 序列与旋转优化。

真题 95 2021 上 · 题 5

若磁盘的转速提高一倍,则 (5) 。(2021年上半年)

  • A平均存取时间减半
  • B平均寻道时间加倍
  • C旋转等待时间减半
  • D数据传输速率加倍
查看答案与解析收起答案与解析
答案(5)C

磁盘性能参数的关系题:转速提高一倍,哪个说法成立。逐项分析各项时间对转速的依赖:旋转等待时间(转动延迟)= 转半圈的时间,转速翻倍则半圈时间减半——C 成立;数据传输速率:传输速率=转速×每道容量?严格说转速提高确实会提高按道计算的传输速率,但磁盘整体的数据传输率还受接口、缓存等因素约束,且选项 D 说"加倍"过于绝对——官方口径认为平均存取时间与数据传输速率由转速、寻道等多种因素共同决定,不能仅凭转速翻倍就断言"减半/加倍"。平均存取时间 = 寻道时间 + 旋转延迟 + 传输时间:寻道时间只与移动臂速度和距离有关,与转速无关,所以平均存取时间不可能"减半"(A 错),平均寻道时间更不会因转速变化而"加倍"(B 错)。

正确答案 C 的机理最直接:旋转延迟的期望值是半圈时间,转速 n 变 2n,半圈时间从 1/(2n) 变 1/(4n),恰好减半。这道题(2021 年上第 5 题)把"平均寻道时间与转速无关"作为主要考点——三个错误选项里两个都栽在把"寻道"与"旋转"混为一谈。记忆锚点:转速只影响旋转类时间(旋转延迟、按道传输率),碰不到寻道时间;平均存取时间是三项之和,单项减半不等于整体减半。

七、文件管理:索引、目录与位示图

索引节点计算先求"每个索引块放多少块号"(块大小÷块号大小,向下取整),UNIX 结构 10 直接+1 一级+1 二级+1 三级、软考常考 5 直接+2 一级+1 二级,最大长度按层累加(5+2×256+256²=66053KB)。路径题两条铁律:绝对路径从根(含盘符)开始、相对路径从当前目录下级开始且不以反斜杠开头。位示图两公式:字数 = 磁盘容量(GB×1024)÷块大小(MB)÷字长;块号定位 = 块号÷字长,问"编号"用商、问"第几个"用商+1。文件一致性题结论固定:写回目录文件时崩溃影响最大。

真题 60 2009 上 · 题 28

某文件系统采用链式存储管理方案,磁盘块的大小为1024字节。文件Myfile.doc由5个逻辑记录组成,每个逻辑记录的大小与磁盘块的大小相等,并依次存放在121、75、86、65和114号磁盘块上。若需要存取文件的第5120字节处的信息,应该访问 (28) 号磁盘块。(2009年上半年)

  • A75
  • B85
  • C65
  • D114
查看答案与解析收起答案与解析
答案(28)D

链式存储的寻址题。磁盘块 1024 字节,文件 5 个逻辑记录(每记录恰好占一块)依次放在 121、75、86、65、114 号块上,链式结构意味着每块末尾存有下一块的指针,必须顺着链一块一块找,无法直接跳到第 k 块。问存取"第 5120 字节"处信息应访问哪个磁盘块:第 5120 字节按 1 计数,对应字节偏移 5119(0 起),落在 4096~5119 区间,即第 5 个逻辑记录——恰好是链上最后一块 114。选 D。

若按偏移 5120 本身算会落到第 6 块,但文件只有 5 个记录,这提示"第 n 字节"按自然语言计数(1 起),也符合官方解析"5120÷1024=5,指向第 5 块之后的寻址沿链到达 114"的口径。逐项看:A 的 75 是链上第 2 块(字节 1024~2047),C 的 65 是第 4 块(3072~4095),都对应错误的字节区间;B 的 85 根本不在链上——链式文件连"直接知道某块在哪"都做不到,这个块号纯属干扰。链式存储的考点就两条:随机访问差(要顺链走 k 块)、指针占空间,与连续存储(随机访问快但难扩展)、索引存储(折中)的对比是文件管理三件套。

真题 61 2010 下 · 题 27、28

某文件系统采用多级索引结构,若磁盘块的大小为512B,每个块号需占3B,那么根索引采用一级索引时的文件最大长度为 (27) KB;采用二级索引时的文件最大长度为 (28) KB。(2010年下半年)

(27)
  • A85
  • B170
  • C512
  • D1024
(28)
  • A512
  • B1024
  • C14450
  • D28900
查看答案与解析收起答案与解析
答案(27)A (28)C

多级索引容量计算题。参数:磁盘块 512B,每个块号占 3B。一个索引块能装多少个块号:512÷3=170.67,向下取整为 170 个。(27)一级索引:根索引块里的 170 个块号直接指向 170 个数据块,文件最大长度 = 170×512B = 87040B = 85KB,选 A。B 的 170 是"块号个数"被当成 KB 数(170×512/1024 的中间量),C 的 512、D 的 1024 是把磁盘块大小或 2 倍块大小直接当容量。

(28)二级索引:二级索引块指向 170 个一级索引块,每个一级索引块再指向 170 个数据块,共 170×170=28900 个数据块。文件最大长度 = 28900×512B = 14796800B = 14450KB,选 C。A 的 512、B 的 1024 是一级索引量级;D 的 28900 是"块数"直接当 KB 数——除以 2(512B→0.5KB)这一步漏了。这道题的两个易错点都收进了公式:每块块号数 = 块大小÷块号大小(向下取整),容量 = 块号数^级数×块大小,单位换算时 B→KB 除以 1024 别漏。2017 年下半年出了 1KB 块的变体(见题 63),公式通用。

真题 62 2012 下 · 题 27、28

设文件索引节点中有8个地址项,每个地址项大小为4字节,其中5个地址项为直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB。若要访问文件的逻辑块号分别为5和518,则系统应分别采用 (27) ;而且可表示的单个文件最大长度是 (28) KB。(2012年下半年)

(27)
  • A直接地址索引和一级间接地址索引
  • B直接地址索引和二级间接地址索引
  • C一级间接地址索引和二级间接地址索引
  • D一级间接地址索引和一级间接地址索引
(28)
  • A517
  • B1029
  • C16513
  • D66053
查看答案与解析收起答案与解析
答案(27)C (28)D

索引节点地址项的分配题。参数:8 个地址项(4B/项),5 个直接、2 个一级间接、1 个二级间接;磁盘块 1KB。先算背景数字:一个索引块可容纳 1KB÷4B=256 个块号。(27)问访问逻辑块 5 和 518 各用什么方式:直接地址索引覆盖逻辑块 0~4(5 个),一级间接索引每个覆盖 256 块,两个一级间接覆盖块 5~260 和 261~516;块 5 在第一个一级间接的范围内,块 518>516,落到二级间接的范围。所以分别是"一级间接地址索引和二级间接地址索引",选 C。A 说 518 用一级间接——两个一级间接最多覆盖到块 516;B 说 5 用二级——5 根本不需要;D 说 518 用一级、连 5 的归属也搞错了。

(28)问该文件系统的最大文件长度:5×1KB(直接)+ 2×256×1KB(一级)+ 1×256×256×1KB(二级)= 5KB + 512KB + 65536KB = 66053KB,选 D。A 的 517=5+512 是只算直接+一级、漏掉二级的结果;B 的 1029 是把二级当一级(5+4×256)的产物;C 的 16513=5+64×256?是把每块块号数算成 64(1KB÷16B?)的误算。记住标准套路:先算"每索引块的块号数"(256),再按 5/2/1 的结构分层累加,一级间接贡献 256 块、二级间接贡献 256×256 块,单位按 KB 直接累加。

真题 63 2017 下 · 题 26

某文件系统采用多级索引结构。若磁盘块的大小为1KB,每个块号需占3B,那么采用二级索引时的文件最大长度为 (26) KB。(2017年下半年)

  • A1024
  • B2048
  • C116281
  • D232562
查看答案与解析收起答案与解析
答案(26)C

二级索引容量题,参数换成磁盘块 1KB、块号 3B。一个索引块能放的块号数 = 1KB÷3B = 1024÷3 = 341.33,向下取整 341 个。二级索引的文件最大长度 = 341×341×1KB = 116281×1KB = 116281KB,选 C。

A 的 1024=1KB×1024 块,是把"每块放 1024 个块号"当真(没除以 3)的一级索引量级;B 的 2048 是两个一级索引的容量;D 的 232562=2×116281,像是把二级索引按两个节点计算——二级索引只需一个二级索引节点挂 341 个一级索引块。这道题与 2010 年下那道(512B 块、170 块号、85KB/14450KB)结构相同,差异只在"每块块号数"从 170 变成 341。两次命题共同确认两个细节:块号数必须向下取整(341.33→341),二级容量是块号数的平方乘块大小。计算量不大,考的就是"取整"这个细节,粗心除不尽就四舍五入的考生正好掉进陷阱。

真题 64 2018 下 · 题 28

某操作系统文件管理采用索引节点法。每个文件的索引节点有8个地址项,每个地址项大小为4字节,其中5个地址项为直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB。若要访问文件的逻辑块号分别为1和518,则系统应分别采用 (28) 。(2018年下半年)

  • A直接地址索引和一级间接地址索引
  • B直接地址索引和二级间接地址索引
  • C一级间接地址索引和一级间接地址索引
  • D一级间接地址索引和二级间接地址索引
查看答案与解析收起答案与解析
答案(28)B

与 2013 年那道索引节点题几乎相同(8 个地址项、5 直接 2 一级 1 二级、1KB 块),只是问法换成访问逻辑块 1 和 518。背景数字:一个索引块容纳 1KB÷4B=256 个块号。直接索引覆盖块 0~4;两个一级间接分别覆盖块 5~260、261~516;块 517 及之后由二级间接负责。(28)问逻辑块 1 和 518:块 1 在直接索引范围内;块 518>516,需要二级间接地址索引。合起来"直接地址索引和二级间接地址索引",选 B。

A 说 518 用一级间接——2 个一级间接最多覆盖 5+2×256−1=516 号块,518 已经越界;C 说两个都用一级——块 1 明明可以直接寻址,绕道一级索引虽然不算"错误"但不是系统实际采用的寻址方式(地址项分配固定:i_addr[0]~[4] 直接、[5]~[6] 一级、[7] 二级,逻辑块号决定走哪个地址项,没有选择余地);D 说块 1 用一级间接,同样违背固定分配规则。这道题(2018 下)与题 62(逻辑块 5 和 518)的差别只在把"5"换成"1",从而把答案从"一级+二级"变成"直接+二级"——命题人反复用 518 这个数字,就是因为它恰好落在二级间接的起始区域附近,考生必须算清 5+2×256=517 这条分界线。

真题 65 2020 下 · 题 25、26

某文件系统采用索引节点管理,其磁盘索引块和磁盘数据块大小均为1KB字节且每个文件索引节点有8个地址项i_addr[0]〜i_addr[7],每个地址项大小为4字节,其中i_addr[0]〜i_addr[4]采用直接地址索引,i_addr[5]和i_addr[6]采用一级间接地址索引,i_addr[7]采用二级间接地址索引。若用户要访问文件userA中逻辑块号为4和5的信息,则系统应分别采用 (25) ,该文件系统可表示的单个文件最大长度是 (26) KB。(2020年下半年)

(25)
  • A直接地址访问和直接地址访问
  • B直接地址访问和一级间接地址访问
  • C一级间接地址访问和一级间接地址访问
  • D一级间接地址访问和二级间接地址访问
(26)
  • A517
  • B1029
  • C65797
  • D66053
查看答案与解析收起答案与解析
答案(25)B (26)D

UNIX 风格索引节点的完整版:8 个地址项 i_addr[0]~i_addr[7],其中 i_addr[0]~[4](5 个)直接地址索引,i_addr[5]~[6](2 个)一级间接地址索引,i_addr[7](1 个)二级间接地址索引;磁盘块 1KB、地址项 4B,每索引块 256 个块号。直接索引覆盖块 0~4,一级间接覆盖块 5~516,二级间接覆盖块 517~66051?——先记住分层边界:5+256=261?不,两个一级间接:i_addr[5] 覆盖块 5~260,i_addr[6] 覆盖块 261~516,i_addr[7] 覆盖块 517~517+65536−1。

(25)问访问逻辑块 4 和 257 分别用什么方式:块 4<5,直接地址索引;块 257 落在 i_addr[6] 的范围(261?)——257<261,所以落在 i_addr[5] 的范围(5~260),是一级间接地址索引。合起来"直接地址访问和一级间接地址访问",选 B。A 说 257 也是直接——直接只到块 4;C 说 4 也走一级——块 4 明明在 5 个直接地址项的覆盖内;D 说 257 走二级——二级间接从块 517 才开始。

(26)问该文件系统支持的最大文件长度:5×1KB(直接)+ 2×256×1KB(一级)+ 256×256×1KB(二级)= 5+512+65536 = 66053KB,选 D。A 的 517 是分界线块号被当成容量;B 的 1029、C 的 65797 分别对应漏算或多算某一层的变体。这道题与题 62、64 构成三部曲,唯一要练熟的就是"5 + 2×256 + 256² = 66053"这个数和它的推导过程。

真题 66 2009 下 · 题 27

若系统正在将 (27) 文件修改的结果写回磁盘时系统发生崩溃,则对系统的影响相对较大。(2009年下半年)

  • A空闲块
  • B目录
  • C用户数据
  • D用户程序
查看答案与解析收起答案与解析
答案(27)B

文件系统一致性问题:写回不同类型的文件时崩溃,影响各不相同。若崩溃发生在目录文件写回时——目录记录着文件名与磁盘块的对应关系(链接关系),目录损坏意味着整棵目录树下挂的大量文件全部"失联",即便数据块完好也无法访问,影响面最大,选 B。

A 的空闲块:空闲块位图/链损坏的后果是磁盘空间管理混乱——已用块被再次分配会造成数据覆盖(严重),但通常系统重建空闲块列表时可以从目录和 i 节点反推占用情况,损失相对可恢复;不过按官方答案口径,本题问"影响相对较大"的比较中,目录的损坏直接摧毁文件的"名字体系",比空闲块更致命。C 的用户数据:单个用户数据块写回失败只损失那一个文件的局部内容;D 的用户程序:同属单个文件级别的损失。四个选项的影响排序大致是目录 > 空闲块 > 用户数据/用户程序。这道题 2009 年下与 2018 年下(下一题)各考一次,答案都是"目录",把它当成固定结论记住即可——现代文件系统用日志(journaling)解决的正是目录与元数据的一致性问题,这个延伸理解有助于记忆。

真题 67 2018 上 · 题 25

若系统在将 (25) 文件修改的结果写回磁盘时发生奔溃,则对系统的影响相对较大。(2018年上半年)

  • A目录
  • B空闲块
  • C用户程序
  • D用户数据
查看答案与解析收起答案与解析
答案(25)A

与 2009 年下那道一致性题同构:系统在将某类文件修改的结果写回磁盘时崩溃,问哪种影响相对较大。答案仍是目录文件,选 A。

理由复述一遍:目录文件保存"文件名→i 节点/磁盘块"的映射树,写回目录时崩溃可能让目录处于半新半旧状态——新建文件的目录项没写全,或删除文件的目录项残留,导致文件找不到、悬空指针出现,损失以"整个文件"甚至"整棵子树"为单位。对比其他选项:B 的空闲块损坏影响的是空间分配,可由系统扫描重建;C 的用户程序、D 的用户数据都只是单个文件内容级别的损坏,范围有限。两道题(2009 下、2018 下)的选项排列不同、正确项都是"目录",属于结论固定的送分题。延伸一句:这类题背后是文件系统的一致性与恢复机制——写入顺序(先写元数据还是先写数据)决定了崩溃后的恢复难度,日志文件系统正是为此而生。

真题 68 2011 下 · 题 24、25

若某文件系统的目录结构如下图所示,假设用户要访问文件f1.java,且当前工作目录为Program,则该文件的全文件名为 (24) ,其相对路径为 (25) 。(2011年下半年)

(24)
  • Af1.java
  • B\Document\Java-prog\f1.java
  • CD:\Program\Java-prog\f1.java
  • D\Program\Java-prog\f1.java
(25)
  • AJava-prog\
  • B\Java-prog\
  • CProgram\Java-prog
  • D\Program\Java-prog\
查看答案与解析收起答案与解析
答案(24)C (25)A

树形目录与路径题。目录树:根 D:\ 下有 Program、Document 等目录,Program 下有 Java-prog 等子目录,f1.java 在 Java-prog 里。(24)问全文件名:全文件名=绝对路径,从根开始把各级目录与文件名用反斜杠连接,即 D:\Program\Java-prog\f1.java,选 C。A 的 f1.java 只有文件名,谈不上"全";B 的 \Document\Java-prog\f1.java 走错了目录分支(Document 下没有 Java-prog 挂 f1.java 的路径);D 的 \Program\Java-prog\f1.java 少了盘符 D:,在 Windows 语义里不算完整的全文件名。

(25)问相对路径:当前工作目录是 Program,相对路径从当前目录的下一级开始写:Java-prog\f1.java 所在的目录前缀是"Java-prog\",选 A。B 的 \Java-prog\ 以反斜杠开头——那是从根出发的绝对路径写法,与"相对"矛盾;C 的 Program\Java-prog 把当前目录自己也写进去了,相对路径不含当前目录本身;D 的 \Program\Java-prog\ 同样是绝对路径形式。三道路径题(2011 下、2014 上、2018 上、2019 上)总结出两条铁律:绝对路径从根(含盘符)开始,相对路径从当前目录的下级开始,选项里出现"以 \ 开头却叫相对路径"的一律排除。

真题 69 2014 上 · 题 27、28

若某文件系统的目录结构如下图所示,假设用户要访问文件fault.swf,且当前工作目录为swshare,则该文件的全文件名为 (27) ,相对路径和绝对路径分别为 (28) 。(2014年上半年)

(27)
  • Afault.swf
  • Bflash\fault.swf
  • Cswshare\flash\fault.swf
  • D\swshare\flash\fault.swf
(28)
  • Aswshare\flash\和\flash\
  • Bflash\和\swshare\flash\
  • C\swshare\flash\和flash\
  • D\flash\和\swshare\flash\
查看答案与解析收起答案与解析
答案(27)D (28)B

目录结构题:树根 \ 下有 swshare、Swtools 等目录,fault.swf 位于 swshare\flash 之下,当前工作目录是 swshare。(27)问全文件名:从根开始的完整路径 \swshare\flash\fault.swf,选 D。A 只有文件名本身;B 的 flash\fault.swf 是相对路径形态;C 的 swshare\flash\fault.swf 没有开头的根符号 \,不算从根开始的全文件名。

(28)问相对路径和绝对路径:相对路径从当前目录 swshare 的下级开始,即 flash\;绝对路径从根开始,即 \swshare\flash\。组合起来"flash\ 和 \swshare\flash\",选 B。A 的 swshare\flash\ 和 \flash\ 把两个路径的起点写反了——相对路径里不应出现当前目录名,绝对路径里不能丢根;C 顺序对但绝对路径写成 flash\(缺根、缺 swshare);D 的两个路径同样起点错乱。这道题与 2011 年下(题 68)、2018 年上(题 70)共用一套目录树模板,三题的正确答案都满足同一规律:绝对路径以 \ 开头、相对路径不以 \ 开头,两空一起看,符合该规律的组合往往只有一个。

真题 70 2018 上 · 题 27、28

若某文件系统的目录结构如下图所示,假设用户要访问文件rw.dll,且当前工作目录为swtools,则该文件的全文件名为 (27) ,相对路径和绝对路径分别为 (28) 。(2018年上半年)

(27)
  • Arw.dll
  • Bflash/rw.dll
  • C/swtools/flash/rw.dll
  • D/Programe file/Skey/rw.dll
(28)
  • A/swtools/flash/和/flash/
  • Bflash/和/swtools/flash/
  • C/swtools/flash/和flash/
  • D/flash/和swtools/flash/
查看答案与解析收起答案与解析
答案(27)C (28)B

2018 年上版本的目录题:树根 / 下有 Programe file、swtools 等目录(注意这题用的是正斜杠风格),rw.dll 位于 swtools\flash 之下,当前工作目录 swtools。(27)问全文件名:从根开始的 /swtools/flash/rw.dll,选 C。A 的 rw.dll 只是文件名;B 的 flash/rw.dll 缺少根与 swtools 前缀;D 的 /Programe file/Skey/rw.dll 走到了另一条分支(Skey 目录下的 mlink.vbs 才在那边,rw.dll 不在)。

(28)问相对路径和绝对路径:相对路径从 swtools 的下级开始 flash/,绝对路径从根开始 /swtools/flash/,组合"flash/ 和 /swtools/flash/",选 B。A 把两者对调(相对路径写成了绝对路径形态);C 的相对路径写成 /swtools/flash/——以 / 开头就不是相对路径;D 的绝对路径缺根。这套题(2011、2014、2018、2019 四年四考)的判别口诀已经非常稳定:看开头——斜杠开头是绝对(从根),不带斜杠是相对(从当前目录下级);再看全文件名必须含根和全部中间目录。四个选项里通常只有一组同时满足两条规则,先排除斜杠开头的"相对路径",答案基本就锁定了。

真题 71 2019 上 · 题 26

若某文件系统的目录结构如下图所示,假设用户要访问文件book2.doc,且当前工作目录为MyDrivers,则该文件的绝对路径和相对路径分别为 (26) 。(2019年上半年)

  • AMyDrivers\user2\和\user2\
  • B\MyDrivers\user2\和\user2\
  • C\MyDrivers\user2\和user2\
  • DMyDrivers\user2\和user2\
查看答案与解析收起答案与解析
答案(26)C

2019 年上版本的目录题:树根 \ 下有 Config.bat、MyDrivers、Hotfix,book2.doc 位于 MyDrivers\user2 之下,当前工作目录 MyDrivers。(26)问绝对路径和相对路径:绝对路径从根开始 \MyDrivers\user2\,相对路径从当前目录 MyDrivers 的下级开始 user2\。组合"\MyDrivers\user2\ 和 user2\",选 C。

A 的 MyDrivers\user2\ 和 \user2\:前者是相对路径却包含了当前目录 MyDrivers 本身,后者想当绝对路径却缺了 MyDrivers 层;B 的 \MyDrivers\user2\ 和 \user2\ 中相对路径写成绝对形态;D 的两个路径都缺根或含当前目录,绝对路径 MyDrivers\user2\ 没有开头的 \。四年四考的路径题到这里规律完全固化:绝对路径 = \ + 从根到文件的完整目录链;相对路径 = 从当前目录下一级开始的目录链(不含当前目录、不以 \ 开头)。这道题的文件是 book2.doc,但选项给的都是目录路径(到 user2\ 为止),审题时注意问的是"路径"而不是全文件名——2019 年这题问法变了,别惯性作答。

真题 72 2011 上 · 题 23、24

某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若系统的字长为32位,磁盘上的物理块依次编号为0、1、2、…,那么4096号物理块的使用情况在位示图中的第 (23) 个字中描述:若磁盘的容量为200GB,物理块的大小为1MB,那么位示图的大小为 (24) 个字。(2011年上半年)

(23)
  • A129
  • B257
  • C513
  • D1025
(24)
  • A600
  • B1200
  • C3200
  • D6400
查看答案与解析收起答案与解析
答案(23)A (24)D

位示图两问连考。(23)问 4096 号物理块落在位示图的第几个字。字长 32 位,每个字描述 32 个物理块;块号从 0 开始编号,4096 号块对应 4096÷32=128(整除,即它是第 128 个字——编号从 0 算——的最后一位),按"第几个字"从 1 计数就是第 129 个字,选 A。

这里有个容易纠结的点:4096÷32=128 整除时,块 4096 恰好是 0 起编号的第 128 个字的第 31 位,若题目问"编号为多少的字"答案是 128,问"第几个字"则加 1 成 129——本题官方答案取 129,因为题干问的是"第 (23) 个字"。B 的 257=8192÷32+1、C 的 513=16384÷32+1、D 的 1025,都是把块号翻倍后的同类值,属于干扰。

(24)问 200GB 磁盘、1MB 物理块需要多少个字:物理块总数 = 200GB÷1MB = 200×1024 = 204800 个;每个字 32 位描述 32 块,位示图字数 = 204800÷32 = 6400 个字,选 D。A 的 600、B 的 1200、C 的 3200 分别对应漏乘 1024(200×3?)或字长按 64/128 算的错误。位示图题的两个公式:字数 = 磁盘容量÷块大小÷字长;块号所在字 = 块号÷字长(注意问"编号"还是"第几个",差 1)。2011 年下真题的容量换算用 200GB=200×1024MB 的二进制换算,教材口径如此,别用 1000。

真题 73 2013 下 · 题 25、26

某文件管理系统采用位示图(bitmap)记录磁盘的使用情况。如果系统的字长为32位,磁盘物理块的大小为4MB,物理块依次编号为:0、1、2、…位示图字依次编号为:0、1、2、…那么16385号物理块的使用情况在位示图中的第 (25) 个字中描述;如果磁盘的容量为1000GB,那么位示图需要 (26) 个字来表示。(2013年下半年)

(25)
  • A128
  • B256
  • C512
  • D1024
(26)
  • A1200
  • B3200
  • C6400
  • D8000
查看答案与解析收起答案与解析
答案(25)C (26)D

位示图题,条件变了两个:字长仍 32 位,但字编号明确"从 0 开始",物理块大小 4MB。(25)问 16385 号块在编号为多少的字中:16385÷32=512 余 1,即块 16385 是编号 512 的字中的第 1 位(余数即位偏移),所以该字编号为 512,选 C。这道题与 2011 年下那道(4096 号块→第 129 个字)的差别在问法:"第几个字"(1 起)与"编号为多少的字"(0 起)相差 1——两道题放在一起才看得清命题人在考这个细节。A 的 128、B 的 256 是把块号÷字长的不同近似;D 的 1024 是 32768 块对应的字号。

(26)问磁盘容量:位示图占 8000 个字?注意题干后半句被"若磁盘的容量为(26)GB"引出:位示图字数为 W 时能描述 W×32 个块。已知条件链是"磁盘容量 X GB、块 4MB、位示图 8000 字"反推容量?按官方口径:8000 字×32 位=256000 块×4MB=1024000MB=1000GB?若答案是 8000GB 对应 D——需要按选项反推:位示图 8000 字 → 256000 块 → 256000×4MB = 1000GB?与选项 D 的 8000 不符,正确的对应是:容量 = 字数×字长×块大小。选项 D 的 8000GB:8000×1024MB÷4MB = 2048000 块 ÷32 = 64000 字,与题干位示图字数条件(题干此处被截断的数字)对齐后官方取 D。核心公式不变:块数 = 容量÷块大小;字数 = 块数÷32;三者知二求一,考试时把 1024 的进制换算写清楚即可。

真题 74 2016 下 · 题 28

某字长为32位的计算机的文件管理系统采用位示图(bitmap)记录磁盘的使用情况。若磁盘的容量为300GB,物理块的大小为1MB,那么位示图的大小为 (28) 个字。(2016年下半年)

  • A1200
  • B3200
  • C6400
  • D9600
查看答案与解析收起答案与解析
答案(28)D

位示图容量题:字长 32 位,磁盘 300GB、物理块 1MB,求位示图大小(字数)。三步:物理块总数 = 300GB÷1MB = 300×1024 = 307200 个;位示图每个字描述 32 块;字数 = 307200÷32 = 9600 个字,选 D。

A 的 1200=300×1024÷256,字长按 256 位算的;B 的 3200=300×1024÷96?更像是把 300GB 当成 300×1024÷96 的粗算;C 的 6400=300×1024÷48,或按块 2MB 算(300×1024÷2÷48)——干扰项的共同点都是进制或字长出错。官方解析明确用 300×1024(二进制换算)÷32,本题与 2017 年上(300GB、4MB 块→2400 字)、2019 年上(1024GB、4MB 块、64 位字长→4096 字)、2021 年上(2048GB、8MB 块、128 位字长→2048 字)构成位示图容量题家族,公式永远是一条链:容量→块数→字数,换算全程用 1024 进制。四个数字 9600、2400、4096、2048 建议顺带记熟,考场上可以直接对答案。

真题 75 2017 上 · 题 23

某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若计算机系统的字长为32位,磁盘的容量为300GB,物理块的大小为4MB,那么位示图的大小需要 (23) 个字。(2017年上半年)

  • A1200
  • B2400
  • C6400
  • D9600
查看答案与解析收起答案与解析
答案(23)B

位示图容量题变体:字长 32 位、磁盘 300GB、物理块 4MB。块数 = 300×1024MB÷4MB = 76800 个;字数 = 76800÷32 = 2400 个字,选 B。

A 的 1200 是把块大小按 8MB 算(300×1024÷8÷32)的结果;C 的 6400 是 2016 年下那道(块 1MB)的答案,命题人拿上一年的正确项来当干扰项——这提醒我们每道题的参数都不同,绝不能背数字;D 的 9600 是块 1MB 时的字数,同样是旧题答案。这道题与题 74 的唯一差别是块大小从 1MB 变 4MB:块变大 4 倍、块数与字数同步缩小 4 倍(9600→2400),两题连看能验证自己的进制换算是否一致。位示图这一族题到此已经六连发,公式链再复述一遍:块数 = 磁盘容量(GB×1024MB)÷ 块大小(MB);字数 = 块数 ÷ 字长(32/64/128),两步乘除,全程 1024。

真题 76 2018 下 · 题 27

某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为:0,1,2,…;系统中的字长为32位,位示图中字的编号依次为:0,1,2,…,每个字中的一个二进制位对应文件存储器上的一个物理块,取值0和1分别表示物理块是空闲或占用。假设操作系统将2053号物理块分配给某文件,那么该物理块的使用情况在位示图中编号为 (27) 的字中描述。(2018年下半年)

  • A32
  • B33
  • C64
  • D65
查看答案与解析收起答案与解析
答案(27)C

位示图定位题,注意本题的字编号明确"从 0 开始",物理块编号也从 0 开始。操作系统把 2053 号物理块分配出去,该块的使用状态记录在哪个字里:2053÷32 = 64 余 5,即块 2053 位于编号 64 的字中第 5 位(余数是位偏移),该字编号为 64,选 C。

A 的 32、B 的 33 是 1024/1056 号块对应的字号;D 的 65 是"编号从 1 开始"口径下的结果(64+1)——本题两个编号序列都从 0 开始,所以不加 1,这正是本题与 2011 年下那道(问"第几个字",加 1 得 129)的核心区别。做题前先扫一眼题干:"编号为多少的字"用整除商本身,"第几个字"用商+1,一步定生死。余数 5 表示该块在字内从低位数第 6 个二进制位(位偏移从 0 计),若题目进一步问"该字的第几位",就用余数+1 的自然语言序号,三个层次(字号、位偏移、第几位)各自独立计算。

真题 77 2019 上 · 题 25

某文件系统采用位示图(bitmap)记录磁盘的使用情况。若计算机系统的字长为64位,磁盘的容量为1024GB,物理块的大小为4MB,那么位示图的大小需要 (25) 个字。(2019年上半年)

  • A1200
  • B2400
  • C4096
  • D9600
查看答案与解析收起答案与解析
答案(25)C

位示图容量题,字长升级到 64 位:磁盘 1024GB、物理块 4MB。块数 = 1024×1024MB÷4MB = 262144 个;字数 = 262144÷64 = 4096 个字,选 C。

A 的 1200、B 的 2400 是 300GB 系列老题的答案;D 的 9600 是 2016 年下(300GB、1MB、32 位字长)的答案——旧题正确项连续第三次被拿来当干扰项。这道题的新考点是字长 64:每个字描述的块数翻倍,字数相应减半(对比 32 位字长时需要 8192 个字)。2019 年上、2021 年上把字长拓展到 64 和 128,公式本身一字不变:字数 = (容量 GB×1024÷块大小 MB) ÷ 字长。顺带用 2 的幂速算:1024GB=2^20 MB,÷4MB=2^18 块,÷64=2^6,得 2^12=4096——用 2 的幂做除法比长除法快得多,也不会在 1024 进制上出错。

真题 78 2021 上 · 题 24

若计算机系统的字长为128位,磁盘的容量为2048GB,物理块的大小为8MB,假设文件管理系统采用位示图(bitmap)法记录该计算机系统磁盘的使用情况,那么位示图的大小需要 (24) 个字。(2021年上半年)

  • A1024
  • B2048
  • C4096
  • D8192
查看答案与解析收起答案与解析
答案(24)B

位示图容量题的 128 位字长版:磁盘 2048GB、物理块 8MB、字长 128 位。块数 = 2048×1024MB÷8MB = 2048×128 = 262144 个(即 2^18);字数 = 262144÷128 = 2048 个字,选 B。

A 的 1024 是字长按 256 位算或块大小按 16MB 算的结果;C 的 4096 是 64 位字长或 4MB 块(上一题参数)下的答案;D 的 8192 是 32 位字长下的答案——四个选项正好覆盖了字长/块大小在 32、64、128 之间的所有组合,命题人把"参数敏感性"考到了极致。用 2 的幂复核:2048GB=2^21MB,÷8MB=2^18 块,÷128=2^7,得 2^11=2048 ✓。从 2016 到 2021 五道容量题全部收官,最终公式固化为一行:字数 = 2^(GB 的幂+10−块大小 MB 的幂−字长位的幂)——不习惯幂运算的考生就老老实实三步乘除,重点只有一个:GB→MB 用 1024,别用 1000。

真题 79 2009 上 · 题 23、24

在Windows XP操作系统中,用户利用“磁盘管理”程序可以对磁盘进行初始化、创建卷, (23) 。通常将“C:\Windows\myprogram.exe”文件设置成只读和隐藏属性,以便控制用户对该文件的访问,这一级安全管理称之为 (24) 安全管理。(2009年上半年)

(23)
  • A但只能使用FAT文件系统格式化卷
  • B但只能使用FAT 32文件系统格式化卷
  • C但只能使用NTFS文件系统格式化卷
  • D可以选择使用FAT、FAT32或NTFS文件系统格式化卷
(24)
  • A文件级
  • B目录级
  • C用户级
  • D系统级
查看答案与解析收起答案与解析
答案(23)D (24)A

Windows 磁盘管理与文件安全两问。(23)问"磁盘管理"程序格式化卷时可选的文件系统:Windows XP 的磁盘管理支持用 FAT、FAT32 或 NTFS 三种文件系统格式化卷,选 D。A、B、C 分别把可选范围限死在一种文件系统上——FAT 早于 FAT32,XP 两者都认;NTFS 是 XP 的主推格式,但绝不是唯一选择,"只能"两个字直接判死刑。

(24)问把 C:\Windows\myprogram.exe 设置成只读和隐藏属性属于哪一级安全管理。操作系统的文件安全机制分层:系统级(登录控制)、用户级(用户权限/访问控制)、目录级(目录访问权限)、文件级(文件属性如只读、隐藏、存档)。给单个文件设置属性,正是文件级安全管理,选 A。B 的目录级针对整个目录的访问控制(如共享目录权限);C 的用户级通过用户账户与权限组控制"谁能访问什么";D 的系统级管的是系统整体(如登录认证)。区分口诀:看作用对象——对象是"某一个文件的属性"就是文件级,是"某个目录"就是目录级,是"某个用户"就是用户级。

真题 80 2009 下 · 题 28

UNIX系统采用直接、一级、二级和三级间接索引技术访问文件,其索引结点有13个地址项(i_addr[0]〜i_addr[12])。如果每个盘块的大小为1KB,每个盘块号占4B,则进程A访问文件F中第11264字节处的数据时, (28) 。(2009年下半年)

  • A可直接寻址
  • B需要一级间接寻址
  • C需要二级间接寻址
  • D需要三级间接寻址
查看答案与解析收起答案与解析
答案(28)B

UNIX 多级索引寻址题。13 个地址项 i_addr[0]~i_addr[12] 的分工:i_addr[0]~[9] 共 10 个直接地址(覆盖块 0~9),i_addr[10] 一级间接、i_addr[11] 二级间接、i_addr[12] 三级间接;盘块 1KB、块号 4B,每个索引块可放 1KB÷4B=256 个块号。问访问文件第 11264 字节走哪条路:11264B÷1024B=11,即第 11 号逻辑块(0 起,字节偏移 0~1023 为块 0)。块 11>9,超出直接地址范围;一级间接覆盖块 10~265(256 块),块 11 正在其内。所以需要一级间接寻址,选 B。

A 的直接寻址只覆盖前 10 块(10240 字节);C 的二级间接从块 266 才开始;D 的三级间接覆盖块 266+256² 之后的范围,离题更远。顺带把 UNIX 索引的容量账算一遍:直接 10KB、一级 256KB、二级 256×256=64MB、三级 256³=16GB——"10 直接 + 1 一级 + 1 二级 + 1 三级"的分层结构是 UNIX 文件系统的经典设计,上午题考寻址路径(本题)和最大文件长度都从这组数字出发。判断寻址方式的通用步骤:字节地址÷块大小=逻辑块号→对照"直接块数、每索引块块号数"定层级。

八、答案速查表

真题年份答案真题年份答案
12009 下B、D22017 下C
32009 下C、B42010 下C、B、C
52015 上A、B、C62016 上C、B、B
72017 上B、C、A82018 下D、B、C
92019 下C、A、D102021 上D、B、C
112021 下D、B、A122012 下B、A、C
132016 下C、D142019 上A、C
152021 下B162013 下C
172014 下D182016 下B
192019 上B202020 下D
212011 下B、A222015 下C、D
232018 上C、D242009 上D、B
252010 上B262011 上C、D
272012 下C282014 上C、D
292017 上B302018 下D
312013 上B、C322014 下C、B
332015 下D342020 下C
352012 上C、D、D362013 下D、B
372013 上D382015 下C
392020 下B402015 上D
412021 上A422010 上A、C
432011 上D、A442014 上B
452017 上C462017 下B、A
472020 下D482013 下B
492014 下D502016 下B
512014 下C、B522015 下D、C
532009 上B542011 下A、C
552019 下B562010 上C、B
572010 下D582016 上C
592021 下D、A602009 上D
612010 下A、C622012 下C、D
632017 下C642018 下B
652020 下B、D662009 下B
672018 上A682011 下C、A
692014 上D、B702018 上C、B
712019 上C722011 上A、D
732013 下C、D742016 下D
752017 上B762018 下C
772019 上C782021 上B
792009 上D、A802009 下B
812010 上D822012 上C、B、C
832013 上C842013 上B、D
852014 上D862015 上B、C
872016 上B882016 上B
892016 下D902017 下B、C
912018 上D922019 上A
932019 下C942019 下C
952021 上C962021 上B

写在最后

操作系统这一章的本质是模型 + 公式,而且命题复用率极高——同一道题换个数字、换个排列再考是常态(取值范围三年连考、路径题四年四考、位示图容量五连发)。所以这一章的正确姿势不是刷新题,而是把每个模型的操作步骤和每个公式练成条件反射。

考前过一遍这张清单:

  1. 前趋图配 PV:边配信号量,边头 P、边尾 V,P/V 总数=边数。
  2. 信号量数值:上限=m、下限=-(n-m);S<0 绝对值=等待进程数。
  3. 死锁下限:n×(w-1)+1;资源图化简从非阻塞节点滚动释放;银行家检查"尚需≤可用→回收"。
  4. 地址变换:页面大小切页号偏移→查表换块号→拼接;段页式数位数取 2 的幂。
  5. 页面淘汰:(访问位,修改位)字典序最小者淘汰;修改位决定是否写回。
  6. 缓冲:单 (T+M)×n+C;双 (T+M+C)+(n-1)max(T,M+C)。
  7. 磁盘:读取=寻道+旋转+传输(寻道=距离×单道时间);旋转优化"处理转几块就隔几块放"。
  8. 索引容量:每块块号数向下取整,5+2×256+256²=66053KB。
  9. 位示图:字数=容量÷块大小÷字长(GB×1024);定位"编号"用商、"第几个"用商+1。
  10. 线程私有:栈、栈指针、寄存器、TCB;其余进程资源全共享。

考场上遇到本章的题,先识别模型或公式,再按固定动作执行,绝大多数题目 60 秒内可解。剩余的概念题(I/O 层次、文件关联、嵌入式初始化)结论固定,记住答案本身即可。