操作系统期末复习
期末题型
| 题型 | 题量 | 分值 | 答题要求 |
|---|---|---|---|
| 单选 | 10 | 10 | 机读卡,每题 1 分 |
| 判断 | 5 | 5 | 机读卡,每题 1 分 |
| 简答 | 2 | 15 | 纯概念阐述,每题 7-8 分 |
| 综合 | 5 | 70 | 全部含计算,共 85 分主观题 |
期末“必考/必会”核心知识点速查表
| 章节 | 考点 | 最关键要点(背下就能拿分) |
|---|---|---|
| Ch1 概论 | 用户/内核态 | 系统调用、中断、异常→立即进入内核态;普通 C 代码→用户态 |
| 微内核 | 优点:可靠、易扩展;缺点:性能低(多次上下文切换) | |
| 虚拟机 | 优点:隔离、并发运行多 OS;缺点:资源开销大 | |
| Ch2 进程线程 | 进程三态图 | 就绪→运行(被调度);运行→阻塞(等 I/O);阻塞→就绪(I/O 完成) |
| PCB/TCB/JCB/FCB | 分别对应进程/线程/作业/文件——英文与中文必须秒对应 | |
| 同步互斥模型 | 生产者-消费者:empty/full/mutex 三信号量;若缓冲区=1,可省 mutex | |
| PV 最少信号量 | 单缓冲区时 empty+full 已隐含互斥,不必再设 mutex | |
| Ch3 CPU 调度 | 前三算法 | FCFS、SJF(非抢占)、SRTF(抢占)——会画甘特图、算周转/带权周转 |
| 三级调度 | 高级(作业)、中级(内存)、低级(进程)——名称与作用 | |
| Ch4 存储 | 分页地址转换 | 逻辑地址→页号+页内偏移;页号查页表→块号;拼接得物理地址 |
| 页面置换 | FIFO、LRU、OPT 必会手工算“缺页次数”;置换时先画页框时间线 | |
| 二级/多级页表 | 位数拆分公式:页内偏移=页大小 2^n;剩余高位再拆页目录+页号 | |
| Ch5 文件 | 混合索引计算 | 直接块+一级+二级+三级;每块 1 KB、块指针 4 B→一个索引块可指 256 块;公式:8×1 KB + 256×1 KB + 256²×1 KB + 256³×1 KB |
| 目录结构 | 树形 vs 有向无环图——后者支持共享目录,需用“文件链接”实现 | |
| Ch6 I/O | 磁盘调度 | SSTF、SCAN(电梯)会算磁头移动总道数;初始方向影响 SCAN |
| Ch8 死锁 | 银行家算法 | 1. 算 Need=Max-Allocation;2. 找安全序列:Work≥Need 且 Finish=F→T;3. 能列出即安全,不能即不安全 |
| 死锁 4 条件 | 互斥、占有且等待、非抢占、循环等待——缺一不能形成死锁 |
作业计算大题整合

对于最少PV的题就两个要点
- 每个进程最后一定要有V操作用于唤醒其他进程
- 判断是否满足互斥,缓冲区为1则不需要mutex

这张图的右侧这个问题,很显然是可以但没必要。
看到这张图了。右侧的问题是:是否可以改为上图算法(mutex 初值 1)?
这是在问能否用三个信号量(empty、full、mutex)的标准生产者-消费者模型来替代左侧的两信号量模型。
左侧的算法(图2-3的算法框图)采用的是两信号量模型:
- 进程A:P(empty) → 写入信息 → V(full)
- 进程B:P(full) → 读出信息 → V(empty)
这个模型中,empty和full的PV操作已经隐含了互斥关系:
- 当缓冲区=1时,进程A执行P(empty)后,缓冲区被占用
- 进程B必须等待P(full)才能读取
- 两者天然互斥,无需额外的mutex信号量
如果改为三信号量模型(右侧所示):
- 虽然逻辑上可以运行,但会增加不必要的开销
- 多了一个mutex信号量的初始化、P操作、V操作
- 对于单缓冲区的情况,这是冗余的
结论:
对于单缓冲区(容量=1)的情况:
- ✅ 用两信号量模型(empty、full)就足够了
- ❌ 不需要加mutex,因为已经隐含互斥
- ❌ 加mutex会增加系统开销,违反最少信号量原则
这正是”最少PV操作“的核心优化思想。


情况①:环形缓冲区(最多容纳n个信息)
(1) 读写条件
- 输入进程(写):缓冲区未满(有空闲位置)才能写;
- 输出进程(读):缓冲区非空(有信息)才能读;
- 同时需保证读写操作的互斥(避免同时操作同一缓冲区单元)。
(2) P、V操作同步算法
定义3个信号量:
empty:表示缓冲区的空闲单元数,初值为n;full:表示缓冲区的已用单元数,初值为0;mutex:保证读写操作的互斥,初值为1。
输入进程伪码:
1 | while (1) { |
输出进程伪码:
1 | while (1) { |
情况②:无穷大缓冲区
(1) 读写条件
- 输入进程(写):无限制(缓冲区无穷大,永远有空闲位置);
- 输出进程(读):缓冲区非空(有信息)才能读;
- 仍需保证读写操作的互斥。
(2) P、V操作同步算法
定义2个信号量:
full:表示缓冲区的已用单元数,初值为0;mutex:保证读写操作的互斥,初值为1。
输入进程伪码:
1 | while (1) { |
输出进程伪码:
1 | while (1) { |





问题解答
(1) 最大文件长度计算
- 每个地址项长度:4B → 可表示的盘块号数量:(2^{32})(但受盘块大小限制,实际取盘块号对应的物理块)
- 直接地址项:8个 → 对应盘块数:8
- 一级间接地址项:1个 → 对应盘块数:(1KB / 4B = 256)
- 二级间接地址项:1个 → 对应盘块数:(256 × 256 = 256^2)
- 三级间接地址项:1个 → 对应盘块数:(256 × 256 × 256 = 256^3)
最大文件长度(以盘块数计):(8 + 256 + 256^2 + 256^3),换算为字节数:((8 + 256 + 256^2 + 256^3) × 1KB)
(2) 访问时间是否相同
逻辑偏移量5000B对应的盘块号:
盘块大小1KB=1024B,(5000 ÷ 1024 ≈ 4.88) → 对应第5个盘块(从0开始计数则为第4块),属于直接地址项(直接地址项覆盖前8个盘块)。
访问过程:读取索引节点 → 直接从直接地址项中取盘块号 → 访问盘块。逻辑偏移量10000B对应的盘块号:
(10000 ÷ 1024 ≈ 9.77) → 对应第10个盘块(从0开始计数则为第9块),超过直接地址项(8个),属于一级间接地址项。
访问过程:读取索引节点 → 从一级间接地址项取间接块的盘块号 → 读取间接块 → 从间接块中取目标盘块号 → 访问盘块。
因此,两者访问时间不相同:10000B对应的访问需要多读取一次间接块。
(3) 偏移量10000B的块内位移
块内位移 = 逻辑偏移量 % 盘块大小
计算:(10000 % 1024 = 10000 - 9×1024 = 10000 - 9216 = 784)
核心知识点速过
操作系统的特点
- 并发:多个程序同时运行
- 共享:系统资源可被多个程序共同使用
- 异步性:程序执行顺序不确定
- 抽象性:将复杂系统抽象为简单模型
FCB与I节点
文件控制块(FCB) 和 I节点(Inode) 是两种不同的文件管理方式,各有优缺点。
FCB(File Control Block):
- 定义:文件控制块是操作系统为管理文件而设置的数据结构,存储文件的所有属性信息
- 存储位置:通常存储在目录项中或目录区
- 包含信息:文件名、大小、创建时间、修改时间、存储位置(首块号)、访问权限等
- 特点:信息集成化,一个FCB包含文件的全部管理信息
I节点(Inode):
- 定义:I节点是Unix/Linux系统中的文件管理结构,分离了文件名和文件属性
- 存储位置:I节点存储在磁盘的I节点表中,目录项仅存储文件名和I节点号
- 包含信息:文件大小、所有者、访问权限、时间戳、磁盘块指针等(不包含文件名)
- 特点:轻量化设计,目录项简洁,支持文件共享和硬链接
对比表格:
| 对比维度 | FCB方式 | I节点方式 |
|---|---|---|
| 文件名存储 | 在FCB中 | 在目录项中 |
| 文件属性存储 | 在FCB中 | 在I节点表中 |
| 目录项大小 | 较大(包含全部信息) | 较小(仅文件名+I节点号) |
| 目录区空间占用 | 多 | 少 |
| 文件共享 | 困难(需复制FCB) | 容易(多个目录项指向同一I节点) |
| 硬链接支持 | 不支持 | 支持 |
| 典型系统 | DOS、FAT文件系统 | Unix、Linux、ext系列 |
关键优势:
FCB方式的优点:
- 实现简单,文件信息集中管理
- 适合小型文件系统
I节点方式的优点:
- ✅ 目录项小,可存储更多文件
- ✅ 支持文件硬链接(多个目录项指向同一I节点)
- ✅ 支持文件共享(多个用户可共享同一文件)
- ✅ 修改文件属性时无需更新所有目录项
- ✅ 适合大型文件系统
例题:
某文件系统采用I节点方式管理文件,一个目录项占16字节(8字节文件名+8字节I节点号),一个I节点占256字节。若目录区大小为4KB,最多可存储多少个文件?
解析:
- 目录区大小:4KB = 4096字节
- 每个目录项大小:16字节
- 最多目录项数:4096 ÷ 16 = 256个
因此最多可存储256个文件。
若采用FCB方式,每个FCB占256字节,则最多可存储:4096 ÷ 256 = 16个文件。
结论:I节点方式相比FCB方式,在相同目录区大小下,能存储更多文件。
用户态/内核态
下列哪些指令应该只在核心态下执行?
① 屏蔽所有中断
② 读时钟日期
③ 设置时钟日期
④ 改变指令地址寄存器的内容
⑤ 启动打印机
⑥ 清内存
核心态下执行的有:①③⑤⑥
解释:核心态方式下有较高特权,可以执行特权指令,例如:启动I/O、内存清零、修改程序状态字、设置时钟、允许/禁止中断、停机
④ 改变指令地址寄存器的内容, 涉及到修改指令的执行流程。
指令地址寄存器,通常缩写为IAR,是一个专门用来存储即将执行的指令的内存地址的寄存器。
指令地址寄存器即指令计数器PC,允许用户改变内容,以便转入子程序。
用户态程序可通过标准函数调用指令修改PC,但受限于硬件指令集和操作系统权限控制,无法直接操作指令寄存器。
需要结合寄存器的功能与权限属性判断:不同寄存器的操作权限,取决于其是否涉及系统级资源、硬件控制或特权操作。
以下是常见寄存器的权限分类示例:
需核心态执行操作的寄存器:
- 程序状态字寄存器(PSW):存储中断开关、核心态/用户态标志等系统状态,修改需核心态权限。
- I/O地址寄存器/控制寄存器:控制硬件设备(如磁盘、网卡)的读写,操作需核心态。
- 内存管理寄存器(如页表基址寄存器):管理内存地址映射,直接影响系统内存安全,仅核心态可修改。
- 中断向量表寄存器:配置中断处理入口,属于系统级配置,需核心态权限。
用户态可操作的寄存器:
- 通用数据寄存器(如AX、BX):仅存储进程私有数据,用户态可自由读写。
- 栈指针寄存器(SP):仅管理当前进程的栈空间,用户态可修改(需符合进程自身内存范围)。
简单来说:若寄存器关联系统全局资源、硬件控制或特权状态,则其操作仅能在核心态执行;若仅关联进程私有数据/执行流程,则用户态可操作。
微内核
微内核是一种操作系统架构设计,将传统内核的功能分解为多个独立的服务模块。
核心特点:
- 功能最小化:内核仅保留最基本的功能(进程管理、内存管理、中断处理),其他功能(文件系统、设备驱动、网络协议栈)以独立服务进程运行在用户态
- 模块化设计:各服务模块相对独立,通过消息传递进行通信
- 隔离性强:服务进程运行在用户态,故障隔离,一个服务崩溃不会导致整个系统瘫痪
优点:
- ✅ 可靠性高:内核代码量少,bug少;服务进程故障隔离,系统稳定性强
- ✅ 易于扩展:新增功能只需添加新的服务进程,无需修改内核
- ✅ 可移植性好:内核与硬件关联少,易于移植到不同平台
- ✅ 安全性好:服务进程权限受限,恶意代码影响范围小
缺点:
- ❌ 性能开销大:用户态与内核态频繁切换,消息传递开销大,系统调用延迟增加
- ❌ 实现复杂:需要完善的进程间通信(IPC)机制,系统设计复杂
- ❌ 调试困难:分布式架构导致问题诊断困难
对比宏内核:
| 对比维度 | 微内核 | 宏内核 |
|---|---|---|
| 内核大小 | 小(仅基本功能) | 大(集成所有功能) |
| 性能 | 低(频繁上下文切换) | 高(直接函数调用) |
| 可靠性 | 高(故障隔离) | 低(一个模块崩溃影响全系统) |
| 易维护性 | 高(模块独立) | 低(耦合度高) |
| 代表系统 | QNX、MINIX、Mach | Linux、Windows、macOS |
典型应用:
- 实时系统(QNX):需要高可靠性和实时性
- 嵌入式系统:资源受限,需要灵活扩展
- 关键任务系统:故障隔离要求高
死锁
| 算法/概念 | 是否考大题 | 分值定位 | 必须掌握的最简要点 |
|---|---|---|---|
| 银行家算法 | ✅ 一定考 | 14-15 分 | 填 Need、Work 表,写安全序列,判安全状态 |
| 死锁 4 必要条件 | ❌ 只选/判 | 1-2 分 | 互斥、占有且等待、非抢占、循环等待——缺一则不可能死锁 |
| 死锁预防(破 4 条件) | ❌ 只选/简 | 1-3 分 | 破“占有且等待”:一次性分配;破“循环等待”:资源序号法 |
| 死锁避免(含银行家) | ❌ 概念小题 | 1-2 分 | 避免 = 运行时检查,银行家属此类;预防 = 事先破条件 |
| 死锁检测 & 恢复 | ❌ 只选/简 | 0-2 分 | 检测:化简资源分配图;恢复:终止进程/抢占资源 |
死锁四条件
- 互斥:资源不可共享,只能由一个进程使用
- 占有且等待:进程已获得某些资源,又申请新资源
- 非抢占:进程所获得的资源在未使用完之前不能被抢占
- 循环等待:若干进程形成一种头尾相接的循环等待资源关系

资源分配图

银行家算法
银行家算法是避免死锁的算法
银行家算法的核心思想是:在进程申请资源时,先判断系统是否安全,再决定是否分配资源。
先假装备份资源给进程,跑一遍模拟完成序列,若能找到让所有进程都顺利结束的分配方案(安全序列),才允许真正分配;否则拒绝,避免死锁。
安全状态:系统中的所有进程都能按照某种顺序完成,即系统处于安全状态。
申请的总资源数 ≤ 可用资源数 + 已分配资源数
单次申请的资源数 ≤ 进程尚需资源数 ≤ 可用资源数
这道题可以做个引子

要解决这个问题,需利用死锁避免的资源分配原则(银行家算法的核心逻辑):
当每个进程对资源的最大需求为m,系统资源总数为R时,避免死锁的最大进程数N需满足:N × (m-1) < R(让每个进程都差1个资源无法满足,此时系统剩余至少1个资源,可先满足任意一个进程,避免死锁)
解析:
已知:每个进程需求m=3,系统打印机总数R=11。
代入公式:N × (3-1) < 11 → 2N < 11 → N < 5.5。
由于进程数N为整数,因此N不超过5时,系统不会死锁。
答案:5
核心四向量:
Available:可用资源向量,表示系统中每种资源可用的数量Max:最大需求矩阵,表示每个进程对每种资源的最大需求量Allocation:分配矩阵,表示系统当前已分配给每个进程的资源数Need:需求矩阵,表示每个进程尚需的资源数


T1时刻安全吗?

由此可得安全序列 {B, A, C, D}
安全序列并不唯一!!!
{B, D, C ,A} {B,C,D,A} {B, C, A, D}都是可以的!!!
若此时进程A发出请求Request(1, 0, 1),资源分配数据就会变成如下情况。

Available(0,1,1)不能满足任何进程的需要,故进入不安全状态,系统不分配资源。
同步互斥模型与最少PV操作
进程特征
- 动态性:进程是程序的一次执行过程,它是临时的、有生命期的。表现在它由创建而产生,完成任务后被撤消。
- 并发性:进程是可以并发执行的。系统中的各个进程可以按照自己独立的、不可预知的速度推进。
- 调度性:进程是系统进行资源分配和调度的一个独立单位
- 异步性:各进程向前推进的速度不可预知
- 结构性:进程有一定的结构(程序+数据+PCB)
同步互斥模型
- 同步:多个进程按一定顺序执行,前驱关系制约执行顺序(如生产者必须先生产,消费者才能消费)
- 互斥:多个进程对共享资源的访问需互斥进行,同一时刻只有一个进程可访问临界资源
实现工具:信号量机制
- 同步用信号量表示资源/事件状态(如
empty、full) - 互斥用信号量保护临界区(如
mutex)
典型场景:
- 生产者-消费者:需同步(控制生产/消费顺序)+ 互斥(保护缓冲区)
- 读者-写者:需互斥(读写不能同时进行)+ 同步(多读者可并发)
- 哲学家进餐:需互斥(筷子独占)+ 同步(避免死锁的进餐顺序)
最少PV操作
首先需要明确一下PV操作的概念
- P操作(wait):信号量减1,若信号量<0则进程阻塞
- V操作(signal):信号量加1,若有阻塞进程则唤醒一个
生产者-消费者模型中的三信号量:
empty:空缓冲区数量(初值=缓冲区大小)full:满缓冲区数量(初值=0)mutex:互斥信号量(初值=1)
关键优化:若缓冲区容量=1,empty和full的PV操作已隐含互斥关系,可省略mutex信号量
例题1:标准生产者-消费者(缓冲区大小=n)
信号量初值:empty=n, full=0, mutex=1
1 | 生产者进程:{ |
例题2:单缓冲区优化(缓冲区大小=1)
信号量初值:empty=1, full=0(省略mutex)
1 | 生产者进程:{ |
为什么可省mutex? 当缓冲区=1时,生产者P(empty)后缓冲区被占用,消费者必须等待P(full);消费者P(full)后才能取数据,生产者必须等待V(empty)。两者天然互斥,无需额外mutex。
例题3:读者-写者问题(优先级:读者优先)
信号量初值:rw_mutex=1, read_mutex=1, read_count=0
1 | 读者进程:{ |
关键点:read_count记录当前读者数,只有第一个读者才真正P(rw_mutex),最后一个读者才V(rw_mutex),允许多读者并发。
例题4:哲学家进餐(避免死锁)
信号量初值:chopstick[5]={1,1,1,1,1}
1 | 哲学家i进程:{ |
死锁风险:若所有哲学家同时拿左筷子,都在等右筷子→死锁。
解决方案:
- 方案A:最多4个哲学家同时进餐(加一个信号量
dining=4) - 方案B:奇数号哲学家先拿左筷子,偶数号先拿右筷子(破循环等待)
- 方案C:拿筷子前先获得互斥锁(一次性拿两根)
调度算法
高中低级调度
三级调度是操作系统进程管理的核心机制,负责不同粒度的资源分配决策。
| 调度级别 | 调度对象 | 触发时机 | 主要职责 | 批处理系统 | 分时系统 | 实时系统 |
|---|---|---|---|---|---|---|
| 高级调度(作业调度) | 作业 | 作业提交时 | 从后备队列选作业进入内存,创建进程 | ✅ 必须 | ❌ 无 | ❌ 无 |
| 中级调度(内存调度) | 进程 | 内存不足时 | 将进程在内存与外存间对换,控制并发度 | ❌ 无 | ✅ 必须 | ✅ 必须 |
| 低级调度(进程调度) | 进程 | 时间片用尽/I/O等 | 从就绪队列选进程进入CPU执行 | ✅ 必须 | ✅ 必须 | ✅ 必须 |
关键理解:
- 高级调度:只在批处理系统中存在,因为分时/实时系统用户交互式提交,无需后备队列管理
- 中级调度:分时和实时系统必须有,用于虚拟内存管理;批处理系统内存充足,无需对换
- 低级调度:所有系统都必须有,是CPU资源分配的最基本机制
带权周转时间


进程调度算法
- 先来先服务(FCFS):先到先得
- 最短作业优先(SJF):优先执行短作业
- 最短剩余时间优先(SRTN):优先执行
剩余时间最短的作业 - 优先级调度:优先级高的优先执行
- 多级反馈队列:优先级高的队列优先级高,优先级低的队列优先级低
- 时间片轮转(RR):每个进程分配固定时间片,时间片用完后进程被挂起,等待下一轮调度
FCFS(First Come First Serve)


SJF(Shortest Job First)


SRTN(Shortest Remaining Time Next)

优先级调度
优先级算法分为非抢占式有优先级和抢占式有优先级两种。
- 非抢占式有优先级:优先级高(数值小,这是UNIX的表示方式)的进程先执行,优先级低的进程后执行,优先级相同的进程按FCFS执行
- 抢占式有优先级:优先级高的进程可抢占优先级低的进程,优先级相同的进程按FCFS执行
同时优先级又分为两种,一种是静态优先级,一种是动态优先级。
- 静态优先级:优先级在进程创建时确定,且在进程运行期间不会改变
- 动态优先级:优先级在进程运行期间会改变,如进程等待时间越长,优先级越高

时间片轮转
时间片是一个小的时间单位,通常为10~100 ms数量级。
所有就绪进程按先入先出的原则排成一个队列,每次调度时,把CPU分配给队首进程,令其执行一个时间片,时间片用完时,调度程序将该进程送往就绪队列的末尾,再把CPU分配给新的队首进程,让它也执行一个时间片。
时间片选择过大: 当时间片的选择超过任何一个程序所需要的执行时间长度,则完全退化为FCFS
时间片选择过小:则进程切换所用的系统消耗将太多,降低系统效率。


北京信息科技大学 2020 - 2021 学年第一学期
分时操作系统调度方法

答案:D 时间片轮转
解析:
- 分时操作系统的核心是让多个用户逻辑上同时使用系统,需公平分配CPU资源。时间片轮转是其专用调度策略:系统将CPU时间划分为固定时长的“时间片”,按就绪进程的顺序依次分配时间片,时间片耗尽则切换进程,以此保证多用户的响应及时性。
- 其他选项的问题:
- 先进先出/先来先服务(A、B):属于非抢占式调度,无法快速切换进程,不能满足分时系统的多用户响应需求;
- 优先级(C):仅按优先级调度会导致低优先级进程长期等待,无法实现多用户公平共享CPU资源,不符合分时系统的设计目标。
分页系统页面置换算法

答案:B 6μs
解析:
- 基本分页系统中,页面访问需两步主存存取:
- 第一步:访问主存中的页表,获取页对应的物理块号,耗时3μs;
- 第二步:根据物理块号访问主存中的目标页面,耗时3μs。
- 总耗时为两次主存存取的时间之和,即3μs + 3μs = 6μs。
进程三态

答案:B 执行了P操作
解析:
- 进程状态转换逻辑:
- P操作(申请资源):若执行P操作时,信号量的值小于0,进程会因无法获取资源而从运行态转为阻塞态,进入该信号量的等待队列。
- 其他选项分析:
- A V操作(释放资源):会唤醒阻塞态进程,不会使运行态转阻塞态;
- C 时间片用完:进程会从运行态转为就绪态,等待下一次时间片分配;
- D 执行终止:进程会直接结束,并非转为阻塞态。
分页抖动

答案:C 请求分页
解析:
抖动现象的产生条件:抖动(颠簸)是指系统频繁地进行页面换入换出,导致CPU利用率急剧下降的现象,仅出现在请求分页存储管理中。因为请求分页是基于“部分装入”的虚拟存储技术,进程运行时会动态请求页面,若内存中可用帧不足,就会频繁置换页面,引发抖动。
其他选项的排除:
- 固定分区、可变分区:属于连续分配方式,进程需整体装入内存,无页面置换操作,不会产生抖动;
- 基本分页:是实存管理,进程的所有页面需全部装入内存才能运行,也不存在页面换入换出,不会出现抖动。
等待时间

答案:C 等待时间
解析:
- 各选项定义:
- 等待时间:指作业进入后备队列后,等待作业调度程序选中的时间间隔,与题干描述一致;
- 响应时间:通常指从用户提交请求到系统首次产生响应的时间;
- 周转时间:作业从提交到完成的总时间(包括等待、运行等阶段);
- 运行时间:作业在CPU上实际执行的时间。
段式存储管理最大长度

答案:A 2^{24}
解析:
段式存储的地址结构分为“段号”和“段内偏移”两部分:
- 地址总长度为32位,其中8位表示段号,则段内偏移的位数为 (32 - 8 = 24) 位;
- 段内偏移的位数决定了每段的最大长度,24位对应的最大地址空间为 (2^{24}) 字节。
实时操作系统

答案:A 实时性和可靠性
解析:
实时操作系统的核心目标是“在规定时间内完成任务”,因此设计时需优先保证:
- 实时性:系统能对外部事件做出及时响应,满足任务的时间约束;
- 可靠性:实时系统常应用于工业控制、医疗设备等关键场景,必须保证运行稳定、故障影响可控。
其他选项的排除:
- 灵活性、兼容性、共享性并非实时系统的核心需求;
- 并发性是多任务系统的共性特征,并非实时系统的首要设计考量。
缓冲技术

答案:D 缓冲技术
解析:
缓冲技术的核心作用是协调速度不匹配的设备之间的数据传输:
- 当CPU输出数据时,先将数据写入缓冲区,CPU可继续执行其他任务;
- 打印机从缓冲区中逐步读取数据进行打印,无需等待CPU直接传输,从而解决了CPU与打印机的速度差异矛盾。
其他选项的排除:
- 并行技术:用于多个设备同时工作,无法解决速度不匹配问题;
- 中断技术:用于设备完成操作后通知CPU,不能缓冲数据以协调速度;
- 共享技术:是资源复用的方式,与速度协调无关。
缓冲技术 vs 中断技术对比
| 对比维度 | 缓冲技术 | 中断技术 |
|---|---|---|
| 核心作用 | 协调速度不匹配的设备间的数据传输 | 设备完成操作后通知CPU进行处理 |
| 解决问题 | CPU与I/O设备速度差异(如CPU快、打印机慢) | CPU与设备的异步通信问题 |
| 工作原理 | 数据先写入缓冲区,设备从缓冲区读取,CPU无需等待 | 设备完成操作后发送中断信号,CPU响应中断进行处理 |
| CPU效率 | ✅ 高(CPU可继续执行其他任务) | ✅ 高(CPU无需轮询查询设备状态) |
| 数据存储 | ✅ 有(缓冲区存储数据) | ❌ 无(仅通知机制) |
| 典型场景 | 打印机输出、磁盘读写、网络数据传输 | 键盘输入、鼠标点击、设备完成通知 |
| 是否必须 | 当设备速度差异大时必须 | 所有I/O操作都需要 |
| 缺点 | 占用内存空间;缓冲区满时CPU需等待 | 中断处理开销大;频繁中断会降低效率 |
关键理解:
- 缓冲和中断是互补关系,不是替代关系
- 缓冲解决的是速度不匹配,中断解决的是异步通信
- 实际I/O系统通常同时使用两种技术:缓冲区存储数据,中断通知CPU处理
文件系统基本功能

答案:B 实现对文件的按名存取
解析:
从用户角度,文件系统的核心价值是简化文件操作:用户无需了解文件的物理存储位置(如磁盘扇区),只需通过文件名即可完成文件的创建、读取、修改等操作,即“按名存取”。
其他选项的排除:
- 实现虚拟存储:是存储管理的功能,并非文件系统的基本功能;
- 提高外存读写速度:是文件系统的优化目标之一,但不是面向用户的基本功能;
- 用于存储系统文件:文件系统可存储各类文件(包括用户文件),并非仅用于系统文件。
信号量初值

答案:C 3
解析:
信号量用于管理共享资源时,其初值通常等于资源的可用数量:
本题中共享资源是3台打印机,因此信号量初值应定义为3,代表初始状态下有3台打印机可供进程申请使用。
逻辑地址空间

该表述错误。
解析:
- 16位逻辑地址空间的总容量为 (2^{16}) 字节;
- 页面大小为1KB,即 (2^{10}) 字节;
- 逻辑页的最大数量 = 总逻辑地址空间容量 ÷ 页面大小 = (2^{16} ÷ 2^{10} = 2^{6} = 64) 个。
因此用户进程最多可有64个逻辑页,并非32个。
用户态内核态

该表述错误。
解析:
处理机有“用户态”和“核心态”两种状态:
- 用户程序默认在用户态下执行,此状态下无法直接访问系统资源;
- 当执行系统调用时,需要切换到核心态(特权态),才能执行操作系统的内核代码、访问系统资源;
- 系统调用执行完成后,处理机才会回到用户态。
因此执行系统调用时,处理机状态是转为核心态,而非用户态。
多道批处理系统

该表述正确。
解析:
- 多道批处理系统的特点:
- 并发执行:系统可同时加载多个作业到内存,通过进程调度使多个进程交替占用CPU,实现并发执行,提升了CPU利用率;
- 交互性差:作业一旦提交,在完成前用户无法与作业进行交互(如输入指令、修改参数等),作业按批量自动处理。
因此多道批处理系统具备进程并发执行的能力,但交互性较弱。
虚拟设备

该表述正确。
解析:
虚拟设备技术(典型如SPOOLing技术)的核心逻辑是:
- 独占设备(如打印机)同一时间只能被一个进程使用,利用率低;
- 通过在内存中开辟输入/输出缓冲区,将进程对独占设备的请求先缓存到缓冲区,再由系统统一调度设备处理,从而让多个进程“逻辑上同时使用”该设备,实现了独占设备向共享设备的转化。
临界区

该表述错误。
解析:
进程退出临界区时,会释放临界资源的同步信号量:
- 若有其他进程等待进入临界区,系统会唤醒等待队列中的进程,被唤醒的进程会转为就绪态,等待CPU调度后进入临界区;
- 进程无需进入阻塞态等待,阻塞态是进程无法获取资源时的状态,而此时资源已被释放。
内存碎片

该表述正确。
解析:
分区式存储管理(包括固定分区和可变分区)的缺陷是易产生内存碎片:
- 固定分区:分区大小固定,若进程大小与分区不匹配,会产生内部碎片(分区内未被利用的空间);
- 可变分区:随进程的分配与释放,内存中会出现多个分散的小空闲区域(外部碎片),这些碎片容量太小,无法满足后续进程的内存需求,导致资源浪费。
文件控制块FCB

文件控制块的定义及与文件的关系
文件控制块(FCB)是操作系统为管理文件而设置的数据结构,用于存储文件的基本信息(如文件名、大小、存储位置等)。
它与文件的关系是:FCB是文件的“标识与管理载体”,每个文件对应唯一的FCB,操作系统通过FCB识别、操作文件。两种文件控制块的特点
(1)左侧FCB的特点- 信息集成化:将文件名、扩展名、属性、时间、日期、首块号、大小等所有文件信息直接存储在FCB中,信息完整且访问直接。
- 空间占用大:包含的字段较多,单个FCB占用内存/外存空间较大。
- 适用于简单文件系统:无需额外查找其他结构,适合文件数量较少、管理逻辑简单的系统(如早期DOS的FAT文件系统)。
(2)右侧FCB的特点 - 信息轻量化:仅存储文件名和I节点号,核心文件信息(如大小、存 储位置)存储在独立的“I节点”结构中。
- 空间占用小:FCB本身字段少,节省目录区空间,可存储更多文件 名。
- 适用于大型文件系统:通过I节点号间接关联文件信息,便于文件信 息的共享与修改(如Unix/Linux的文件系统),同时提升了目录管理的效率。
多道程序优缺点

从CPU、内存、I/O外设利用率及系统吞吐量角度,分析如下:
- 单道程序(图a)的优缺点
优点:- 管理简单:无需进程调度、内存分配等复杂逻辑,系统开销小。
缺点: - CPU利用率低:程序执行I/O操作时,CPU处于空闲状态(等待I/O完成),资源浪费严重。
- I/O外设利用率低:同一时间仅一个设备(如磁盘)工作,其他I/O设备闲置。
- 内存利用率低:内存仅加载一个程序,剩余空间无法利用。
- 系统吞吐量低:单位时间内完成的作业数量少,整体效率低。
- 管理简单:无需进程调度、内存分配等复杂逻辑,系统开销小。
- 多道程序(图b)的优缺点
优点- CPU利用率高:当一个程序执行I/O操作时,系统调度另一个程序占用CPU,减少CPU空闲时间。
- I/O外设利用率高:多个I/O设备(如磁盘、磁带)可并行工作,提升设备使用效率。
- 内存利用率高:内存同时加载多个程序,充分利用内存空间。
- 系统吞吐量高:单位时间内完成的作业数量更多,系统整体效率提升。
缺点 - 系统开销增加:需要进程调度、内存管理等机制,占用部分系统资源。
- 管理复杂度提升:需处理进程并发、资源竞争等问题,系统设计与实现更复杂。
PV 操作

(1) 进程间的制约关系
- A和B:存在互斥关系,系统限制二者不能同时读文件F;
- C和D:存在互斥关系,系统限制二者不能同时读文件F;
- A和C:无制约关系,可同时读文件F;
- B和D:无制约关系,可同时读文件F。
(2) 信号量的定义
定义2个信号量:
S1:用于控制进程A和B的互斥,含义是“文件F是否允许A/B读取”,初值为1(表示初始时可允许一个进程读取);S2:用于控制进程C和D的互斥,含义是“文件F是否允许C/D读取”,初值为1(表示初始时可允许一个进程读取)。
(3) PV操作伪码
- [1]:
P(S1) - [2]:
V(S1) - [3]:
P(S1) - [4]:
V(S1) - [5]:
P(S2) - [6]:
V(S2) - [7]:
P(S2) - [8]:
V(S2)
预防死锁与银行家算法

一、预防死锁(静态分配方式)的分析
静态分配要求进程在运行前一次性申请所需的全部资源(本题中每个进程最多需要3台刻录机)。
计算过程:
设同时运行的进程数为n,则需满足 3n ≤ 19。
由于n为整数,解得nmax = 6(3×6=18≤19,若 n=7 则 3×7=21 > 19)。
结论:
- 能同时运行的最多进程数:6个;
- 未分配的刻录机最少台数:( 19 - 18 = 1 )台。
二、避免死锁(银行家算法)的分析
银行家算法允许进程动态申请资源,需保证“所有进程的最大需求之和 ≤ 可用资源 + 已分配资源”,且能找到安全序列。
本题中,每个进程的资源需求为:
- 已分配:2台(运行较长时间内的需求);
- 最大需求:3台(即每个进程还需( 3-2=1 )台)。
同时运行的最多进程数
设同时运行的进程数为( n ),需满足:- 已分配资源总量:( 2n )(每个进程先分配2台);
- 剩余可用资源:( 19 - 2n );
- 所有进程的剩余需求总量:( 1×n )(每个进程还需1台)。
为保证安全,剩余可用资源需≥任意一个进程的剩余需求(本题中剩余需求均为1),且剩余可用资源需能满足至少一个进程完成(释放资源)。
实际约束:2n ≤ 19(已分配资源不超过总资源),且剩余可用资源 19−2n ≥ 1(至少能满足一个进程的剩余需求)。
联立得:2n ≤ 18 → nmax=9(2×9=18≤19,剩余可用资源19−18=1,恰好满足一个进程的剩余需求)。
未分配的刻录机数量
- 最少台数:当进程数最多(( n=9 ))时,已分配( 2×9=18 )台,未分配台数为( 19-18=1 )台;
- 最多台数:当进程数最少(( n=1 ))时,已分配2台,未分配台数为( 19-2=17 )台。
最终结论
| 分配方式 | 同时运行的最多进程数 | 未分配刻录机最少台数 | 未分配刻录机最多台数 |
|---|---|---|---|
| 预防死锁(静态分配) | 6 | 1 | - |
| 避免死锁(银行家算法) | 9 | 1 | 17 |
磁盘寻道

一、先来先服务(FCFS)算法
- 寻道次序
当前磁头在 18 号柱面,按请求到达顺序处理:18 → 6 → 38 → 50 → 12 → 27 → 10 寻道距离计算
18→6:∣18−6∣=12
6→38:∣6−38∣=32
38→50:∣38−50∣=12
50→12:∣50−12∣=38
12→27:∣12−27∣=15
27→10:∣27−10∣=17总寻道距离:12+32+12+38+15+17=126寻道时间:126×3=378ms
二、最短寻道优先(SSTF)算法
寻道次序
当前磁头在 18 号柱面,每次选择与当前柱面距离最近的请求:18 → 12 → 10 → 6 → 27 → 38 → 50
寻道距离计算
18→12:∣18−12∣=6
12→10:∣12−10∣=2
10→6:∣10−6∣=4
6→27:∣6−27∣=21
27→38:∣27−38∣=11
38→50:∣38−50∣=12总寻道距离:6+2+4+21+11+12=56寻道时间:56×3=168ms
三、两种算法的特点
先来先服务(FCFS)
- 优点:公平、实现简单,按请求顺序处理,无优先级偏差;
- 缺点:寻道距离长、时间久,磁头可能频繁大范围移动,效率低。
最短寻道优先(SSTF)
- 优点:寻道距离短、时间少,磁头移动更高效,能提升磁盘 I/O 性能;
- 缺点:可能导致 “饥饿” 现象(距离远的请求长期得不到处理),缺乏全局公平性。
作业调度算法

一、先来先服务(FCFS)调度算法
- 执行次序
J1 → J2 → J3 - 计算周转时间与带权周转时间
周转时间 = 作业完成时间 - 作业到达时间(因同时到达,到达时间为0);
带权周转时间 = 周转时间 ÷ 运行时间。
| 作业 | 运行时间 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|
| J1 | 11 | 11 | 11 | (11÷11=1) |
| J2 | 5 | (11+5=16) | 16 | (16÷5=3.2) |
| J3 | 8 | (16+8=24) | 24 | (24÷8=3) |
- 平均周转时间:(11+16+24)÷3 = 51÷3 = 17
- 平均带权周转时间:(1+3.2+3)÷3 = 7.2÷3 = 2.4
二、短作业优先(SJF)调度算法
- 执行次序
按运行时间由短到长:J2 → J3 → J1 - 计算周转时间与带权周转时间
| 作业 | 运行时间 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|
| J2 | 5 | 5 | 5 | (5÷5=1) |
| J3 | 8 | (5+8=13) | 13 | (13÷8=1.625) |
| J1 | 11 | (13+11=24) | 24 | (24÷11≈2.18) |
- 平均周转时间:((5+13+24)÷3 = 42÷3 = 14)
- 平均带权周转时间:((1+1.625+2.18)÷3 ≈ 4.805÷3 ≈ 1.60)
三、算法性能比较
- 平均周转时间:SJF(14)优于FCFS(17);
- 平均带权周转时间:SJF(≈1.60)优于FCFS(2.4);
- 结论:短作业优先算法能有效降低作业的平均等待/周转时间,提升系统吞吐量,但可能导致长作业“饥饿”;先来先服务算法公平性强,但对短作业的响应效率较低。
页面置换算法

一、先进先出法(FIFO)的缺页次数计算
内存块数为3,初始为空,页面走向:0、1、3、2、5、4、2、1、4、0。
| 页面走向 | 内存块状态 | 是否缺页 |
|---|---|---|
| 0 | [0, 空, 空] | 是 |
| 1 | [0, 1, 空] | 是 |
| 3 | [0, 1, 3] | 是 |
| 2 | [2, 1, 3](换0) | 是 |
| 5 | [2, 5, 3](换1) | 是 |
| 4 | [2, 5, 4](换3) | 是 |
| 2 | [2, 5, 4] | 否 |
| 1 | [1, 5, 4](换2) | 是 |
| 4 | [1, 5, 4] | 否 |
| 0 | [1, 0, 4](换5) | 是 |
缺页次数:共8次。
OPT置换“未来最久不使用”的页面,页面走向:0、1、3、2、5、4、2、1、4、0。
| 页面走向 | 内存块状态 | 是否缺页 |
|---|---|---|
| 0 | [0, 空, 空] | 是 |
| 1 | [0, 1, 空] | 是 |
| 3 | [0, 1, 3] | 是 |
| 2 | [0, 1, 2](换3,3不再使用) | 是 |
| 5 | [5, 1, 2](换0,0最后使用) | 是 |
| 4 | [4, 1, 2](换5,5不再使用) | 是 |
| 2 | [4, 1, 2] | 否 |
| 1 | [4, 1, 2] | 否 |
| 4 | [4, 1, 2] | 否 |
| 0 | [0, 1, 2](换谁都可以) | 是 |
缺页次数:共7次。
FIFO算法:
- 优点:实现简单,仅需记录页面进入内存的顺序
- 缺点:可能出现”Belady异常”(内存块数增加时,缺页次数反而上升),置换效率不高
OPT算法:
- 优点:理论上缺页次数最少,置换效率最优
- 缺点:无法实际实现(需要预知页面的未来走向),仅作为算法性能的理论参考
FIFO算法
- 优点:实现简单,仅需记录页面进入内存的顺序;
- 缺点:可能出现“Belady异常”(内存块数增加时,缺页次数反而上升),置换效率不高(未考虑页面的实际使用频率)。
OPT算法
- 优点:理论上缺页次数最少,置换效率最优;
- 缺点:无法实际实现(需要预知页面的未来走向),仅作为算法性能的理论参考。
无来源的另一套
多道批处理系统的目的

答案:A 充分利用CPU,提高了输入输出设备和内存的利用率
解析:
多道程序设计技术的核心目标是让多个程序并发执行,当一个程序进行I/O操作时,CPU可调度另一个程序运行,从而减少CPU空闲时间;同时内存可加载多个程序,I/O设备也能并行工作,最终提升CPU、内存、I/O设备的利用率。
其他选项排除:
- B:多道批处理系统交互性差,并非提升交互能力;
- C:实时响应速度是实时操作系统的目标,与多道批处理无关;
- D:代码共享并非多道程序设计的核心目的。
分页技术地址大小

答案:C) 12
解析:
页内地址的位数由页大小决定,页大小为 (4KB = 2^{12}) 字节,因此需要12位二进制数来表示页内的偏移地址(即页内地址为12位)。
进程三态转换

答案:B 资源释放
解析:
- 进程处于阻塞态是因为等待某资源(如I/O完成、资源分配);
- 当其他进程释放该资源时,阻塞态的进程会被唤醒,转为就绪态,等待CPU调度。
其他选项排除:
- A:资源申请会使进程从运行态/就绪态转为阻塞态;
- C:时间片到会使进程从运行态转为就绪态;
- D:进程调度是将就绪态进程转为运行态。
页面置换算法

答案:B 先进先出法
解析:
先进先出法(FIFO)是经典的页面置换算法之一,其逻辑是置换内存中最早进入的页面。
其他选项排除:
- A:多级反馈队列法是进程调度算法,用于CPU资源的调度;
- C:银行家算法是避免死锁的资源分配算法,并非页面置换算法;
- D:电梯算法是磁盘调度算法,用于优化磁盘寻道。
高响应比算法

答案:D 高响应比优先
解析:
高响应比优先算法的响应比公式为:响应比 =(等待时间 + 运行时间)÷ 运行时间。
- 对短进程:运行时间短,响应比高,能优先调度;
- 对长进程:等待时间增加后,响应比会逐渐提高,避免“饥饿”,兼顾了长进程。
但该算法需要实时计算每个进程的响应比,系统开销较大。
其他选项排除:
- A. 轮转法:按时间片公平调度,但未区分进程长短;
- B. 短作业优先:优先短进程,但长进程易“饥饿”;
- C. 最短剩余时间优先:是短作业优先的抢占式版本,同样易导致长进程“饥饿”。
高响应比算法

答案:D 高响应比优先
核心思想:
高响应比优先(HRRN)算法综合考虑进程的等待时间和运行时间,通过计算响应比来决定调度顺序,既照顾短进程,也避免长进程”饥饿”。
响应比公式:

算法特点:
- 对短进程有利:运行时间短,分母小,响应比高,优先调度
- 对长进程公平:等待时间越长,响应比越高,最终也能被调度,避免”饥饿”
- 非抢占式:进程一旦开始运行,不会被中断,直到完成
- 系统开销大:每次调度都需计算所有就绪进程的响应比
与其他算法的对比:
| 算法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| FCFS | 公平、实现简单 | 长进程等待久,平均周转时间长 | 批处理系统 |
| SJF | 平均周转时间最短 | 长进程易”饥饿” | 批处理系统 |
| HRRN | 兼顾公平性和效率 | 需实时计算响应比,开销大 | 批处理系统 |
| RR | 公平、响应快 | 上下文切换开销大 | 分时系统 |
例题:
已知三个进程同时到达,运行时间分别为8ms、4ms、2ms。采用HRRN调度,计算调度顺序和平均周转时间。
解析:
初始状态(t=0):
- P1:等待=0,运行=8,响应比=(0+8)/8=1.0
- P2:等待=0,运行=4,响应比=(0+4)/4=1.0
- P3:等待=0,运行=2,响应比=(0+2)/2=1.0
响应比相同,按到达顺序选P1执行。
P1执行完毕(t=8):
- P2:等待=8,运行=4,响应比=(8+4)/4=3.0
- P3:等待=8,运行=2,响应比=(8+2)/2=5.0
P3响应比最高,选P3执行。
P3执行完毕(t=10):
- P2:等待=10,运行=4,响应比=(10+4)/4=3.5
P2执行完毕(t=14)。
调度结果:
| 进程 | 运行时间 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|
| P1 | 8 | 8 | 8 | 8/8=1.0 |
| P3 | 2 | 10 | 10 | 10/2=5.0 |
| P2 | 4 | 14 | 14 | 14/4=3.5 |
- 平均周转时间:(8+10+14)/3 = 10.67ms
- 平均带权周转时间:(1.0+5.0+3.5)/3 = 3.17
其他选项排除:
- A. 轮转法:按时间片公平调度,但未区分进程长短,平均周转时间较长
- B. 短作业优先:优先短进程,但长进程易”饥饿”,不够公平
- C. 最短剩余时间优先:是短作业优先的抢占式版本,同样易导致长进程”饥饿”
外部碎片

答案:B)分段式存储管理
解析:
- 外部碎片是指内存中分散的、无法被利用的小空闲区域,通常由动态分配/释放内存导致。
- 分段式存储管理中,进程按逻辑段分配连续内存,当段被释放后,会在内存中形成分散的小空闲区,即外部碎片。
其他选项排除:
- A)分页式存储管理:内存按固定页大小分配,仅产生内部碎片(页内未利用空间);
- C)固定分区式存储管理:分区大小固定,产生内部碎片;
- D)段页式存储管理:结合分段与分页,内存按页分配,仅产生内部碎片。
文件类型

答案:A 普通文件
解析:
在Unix/Linux系统中,gcc编译C程序生成的a.out是可执行的二进制文件,属于普通文件(普通文件包含文本、二进制数据等,是系统中最常见的文件类型)。
其他选项排除:
- B)ASCII文件:是文本文件,而
a.out是二进制文件,不属于ASCII文件; - C)目录文件:用于管理文件和子目录,
a.out是可执行文件,不是目录; - D)特别文件:对应硬件设备(如磁盘、终端),
a.out是用户生成的可执行文件,不属于特别文件。
SPOOLing(假脱机)技术

答案:D 实现了虚存管理
解析:
SPOOLing(假脱机)技术的核心是将独占设备(如打印机)转化为共享设备,通过磁盘上的输入/输出缓冲区暂存数据,其作用是提升设备利用率,与“虚存管理”(内存扩展技术)无关。
其他选项分析:
- A)正确:SPOOLing利用磁盘(共享设备)模拟独占设备,让多个进程逻辑上同时使用;
- B)正确:SPOOLing需要管理缓冲区、调度设备等,增加了系统复杂度;
- C)正确:SPOOLing需在磁盘上开辟缓冲区,会占用一定磁盘空间。







