软考中级-软件设计师(五)
一、死锁资源的计算
(考试涉及分值较低)
1. 基础:死锁的4个必要条件(计算的前提)
死锁发生需同时满足以下4个条件,缺一不可——这是判断是否可能死锁的基础,也是计算资源数的逻辑起点:
- 互斥条件:资源只能被一个进程占用(如打印机、独占文件),无法共享。
- 请求与保持条件:进程已占用部分资源,又提出新的资源请求,且不释放已占资源。
- 不剥夺条件:进程已占用的资源不能被强制剥夺,只能由进程主动释放。
- 循环等待条件:多个进程形成“资源请求循环链”(如进程A等进程B的资源,进程B等进程A的资源)。
关键结论:若能破坏任意一个条件,即可避免死锁;死锁资源计算的核心是“通过资源分配,避免满足所有4个条件”。
2. 核心场景1:最少资源数计算(避免死锁的资源阈值)
这类问题的典型问法是:“有m个进程,每个进程最多需要n个某类资源,最少需要多少个资源才能保证不发生死锁?”——需通过“最坏情况分析”推导公式。
(1)推导逻辑(最坏情况:尽可能接近死锁,但不触发)
死锁的“最坏前兆”是:每个进程都已占用“最多需要数-1”个资源,且都在等待最后1个资源(此时满足前3个必要条件,只需再分配1个资源,即可让一个进程完成并释放资源,打破循环)。
- 例:3个进程(m=3),每个进程最多需4个资源(n=4):
最坏情况:每个进程占用3个资源(4-1),总占用资源数=3×(4-1)=9;
此时再分配1个资源,即可让1个进程获得4个资源并完成,释放4个资源,其他进程可继续使用——因此最少资源数=9+1=10。
(2)通用公式(必考)
设:
m
= 进程数n
= 每个进程对某类资源的最大需求数S
= 保证不发生死锁的最少资源数
则公式为:
S = m × (n - 1) + 1
特殊情况:若存在进程的最大需求数n=1
(如每个进程只需1个资源),则S=m×(1-1)+1=1
——逻辑上,1个资源可让进程轮流使用,不会死锁,符合公式。
3. 银行家算法
…(略)
二、高频考点提炼(聚焦“计算+判断”)
结合近10年真题,死锁资源计算的考点可归纳为“3个核心+1个延伸”,需重点突破计算逻辑:
考点类别 | 具体考点内容 | 出题形式 | 难度 |
---|---|---|---|
核心考点1 | 最少资源数计算(套用公式S=m×(n-1)+1 ,注意“多类资源”需分别计算) | 选择题(计算题) | 易 |
核心考点2 | 银行家算法的安全状态判断(计算Need 矩阵,寻找安全序列) | 选择题/案例题 | 难 |
核心考点3 | 银行家算法的资源请求处理(判断请求合法性,模拟分配后验证安全) | 选择题(分析题) | 难 |
延伸考点 | 资源分配图化简(判断是否死锁,识别死锁进程) | 选择题(图形题) | 中 |
三、历年考题案例与解析
死锁资源计算的题目需“先判断场景,再套方法”,以下通过真题案例巩固解题思路。
案例1:最少资源数计算(2023年上半年第30题)
题目:某系统中有4个进程(P1~P4),每个进程最多需要5个某类资源。若要保证系统不发生死锁,则该类资源的最少数量是( )。
A. 16 B. 17 C. 20 D. 21
考点:最少资源数公式S=m×(n-1)+1
的应用。
解析:
- 明确参数:进程数
m=4
,每个进程最大需求n=5
; - 套用公式:最坏情况是每个进程占用
5-1=4
个资源,总占用4×4=16
个; - 最少资源数:
16+1=17
(再分配1个资源,即可让1个进程完成并释放资源,打破死锁风险)。
答案:B
二、进程资源图
主要内容
- 定义:进程资源图也称为资源分配图,是一种二分图,用于展示进程与资源之间的分配和请求关系。它由进程节点(用圆形表示)、资源节点(用方形表示,内部点表示资源实例数) 和有向边组成,有向边包括分配边(从资源到进程,表示资源已分配)和请求边(从进程到资源,表示进程正在请求资源)。
- 作用:主要功能包括资源管理,可清晰展示哪些资源被哪些进程占用,哪些进程在等待资源;死锁检测,通过识别图中的循环,判断是否存在死锁;系统优化,帮助分析资源分配瓶颈,提升系统稳定性。
- 死锁相关:死锁发生需要同时满足互斥、占有并等待、不可抢占、循环等待四个条件。在进程资源图中,循环等待表现为请求边和分配边形成的闭环。对于单实例资源,图中存在循环即表示死锁;对于多实例资源,循环是死锁的必要条件,但需进一步检查资源可用性。
考点
- 判断进程是否阻塞:根据进程资源图中资源的分配情况和进程的请求情况,判断进程是否因为缺乏资源而处于阻塞状态。如果进程所请求的资源有可用的,则该进程为非阻塞进程,否则为阻塞进程。
- 判断进程资源图是否可化简:通过对进程资源图进行化简操作,判断是否能够将所有进程都执行完毕。如果可以,则图可化简,系统不存在死锁;如果不能,则图不可化简,系统存在死锁。化简的方法是先找到非阻塞节点,执行该节点,释放其占用的资源,然后再看其他进程是否能因此而变为非阻塞节点,依次进行下去。
- 死锁的判定与处理:根据进程资源图判断是否存在死锁,若存在死锁,需要掌握相应的处理方法,如通过先执行非阻塞节点来化解死锁,非阻塞节点执行后可能释放资源,解除其他进程的阻塞。
历年考题
- 答案:D
三、存储管理-页式存储与段式存储
主要内容
- 页式存储管理:
基本原理:将进程的逻辑地址空间划分为固定大小的页,主存空间也划分为同样大小的页框。程序执行时,以页为单位将程序调入内存,页与页框之间无需连续。
页表:用于记录页号到页框号的映射关系,是实现地址转换的关键数据结构。
快表:为了加速地址转换,在MMU内部设置高速缓存,即快表,用于缓存活跃页的映射关系。当进行地址转换时,先查快表,若命中则直接取出页框号合成物理地址,若未命中则再查页表。
地址转换:逻辑地址由页号和页内地址组成,物理地址由页框号和页内地址组成。地址转换过程就是根据页表将逻辑地址中的页号转换为物理地址中的页框号,再与页内地址组合得到物理地址。
页面置换算法:当内存空间不足时,需要将内存中暂时用不到的页面换出到外存,常用的页面置换算法有最佳置换算法(OPT)、先进先出置换算法(FIFO)、最近最少使用置换算法(LRU)等。 - 段式存储管理:
基本原理:按程序的逻辑结构,如主程序段、数据段、子程序段等,将进程划分为若干个段,每段独立分配内存,段的长度可以不一样。
段表:记录段号到段基址和段长的映射关系,通过段表可以实现从段号到物理地址的转换。
地址转换:逻辑地址由段号和段内地址组成,地址转换时,先根据段表找到段基址,再将段基址与段内地址相加得到物理地址。
考点总结
- 地址转换计算:根据页表或段表计算逻辑地址对应的物理地址,是考试的重点题型,需要熟练掌握页式、段式和段页式存储管理的地址转换过程。
- 存储管理方式的特点对比:比较页式、段式和段页式存储管理的优缺点,如页式存储管理碎片小、利用率高,但增加系统开销;段式存储管理可按逻辑结构分段,便于程序共享和修改,但内存碎片浪费大等。
- 页面置换算法:理解不同页面置换算法的原理和特点,能够根据给定的场景选择合适的页面置换算法,或者分析某一算法的执行过程和结果。
在软考“软件设计师”的存储管理模块中,页式存储与段式存储的优缺点对比是核心考点之一,其差异本质源于“划分依据不同”——页式按“固定大小的物理块”划分,段式按“程序的逻辑结构”划分,最终导致两者在碎片、共享、地址转换等维度呈现显著区别。以下从优点、缺点两个维度,结合考试高频考点进行详细拆解:
页式与段式存储核心优缺点对比(考试必备表格)
为了便于记忆和应对考试中的“对比题”,将两者的核心差异整理如下:
对比维度 | 页式存储管理 | 段式存储管理 |
---|---|---|
划分依据 | 固定大小的“物理块”(页) | 程序的“逻辑模块”(段) |
碎片类型 | 仅内部碎片(≤页大小) | 仅外部碎片(零散小空间) |
地址结构 | 一维(页号+页内偏移) | 二维(段号+段内偏移) |
共享与保护 | 不支持逻辑共享,保护粒度粗 | 支持逻辑共享,保护粒度细 |
地址转换效率 | 高(支持快表优化) | 低(需检测段越界) |
内存分配复杂度 | 简单(空闲页框链表) | 复杂(空闲分区+紧凑操作) |
用户感知 | 透明(无逻辑模块概念) | 不透明(按逻辑模块设计) |
考试高频考点总结
- 碎片问题:页式“无外部碎片,有内部碎片”;段式“无内部碎片,有外部碎片”——这是两者最核心的区别,几乎每年必考。
- 共享与保护:段式支持按逻辑模块共享(如共享代码段),页式不支持——常结合“多进程共享内存”场景考查。
- 地址转换:页式效率高(快表优化),段式需检测段越界——常结合地址转换流程的计算题考查(如给定页表/段表,计算物理地址)。
历年考题
四、文件管理-位示图
相关概念
位示图是操作系统管理磁盘空间的经典数据结构,用二进制位(bit)的取值表示物理块的使用状态,每个物理块对应一个比特位,其中0表示空闲,1表示已占用。系统通过字长(即每个存储单元包含的比特数)来组织位示图,例如字长为32位时,一个字(32bit)可管理32个物理块。
主要内容
- 位示图的作用:用于记录磁盘存储空间的使用情况,帮助系统高效地管理磁盘空间,快速判断物理块是否空闲,以便进行文件的存储和删除操作时能合理分配和回收磁盘块。
- 位示图与物理块的对应关系:在位示图中,第n个字对应物理块号为32n至32n+31。
- 位示图的操作:包括根据物理块号获取其在位示图中的位置,以及根据位示图中的位置更新物理块的使用状态。例如,当分配一个物理块时,需要在位示图中将对应的比特位设置为1;当回收一个物理块时,需要将对应的比特位设置为0。
考点
- 位示图大小的计算:根据磁盘容量、物理块大小和字长来计算位示图的大小,公式为:位示图字数 = 磁盘总容量 /(物理块大小×字长)。
- 物理块在位示图中位置的计算:已知物理块编号,计算其在位示图中的字编号和位编号。字位置计算公式为:字位置 = ⌈(物理块编号 + 1) / 字长⌉,位编号 = (物理块编号 + 1) % 字长(若结果为0,则位编号为字长)。
- 位示图的状态更新:考查在文件分配和回收过程中,位示图中对应比特位的状态变化,即分配时将0变为1,回收时将1变为0。
位示图的图形表示
假设一个磁盘的物理块编号从0开始,字长为4位(实际应用中字长通常为32位或64位,这里为了方便理解举例为4位),则位示图的表示如下:
字编号 | 位示图(二进制) | 对应物理块编号 |
---|---|---|
0 | 0101 | 0、1、2、3 |
1 | 1000 | 4、5、6、7 |
2 | 0010 | 8、9、10、11 |
在这个例子中,第一个字的二进制表示为0101,说明物理块0、2是空闲的,物理块1、3是已占用的;第二个字的二进制表示为1000,说明物理块4是已占用的,物理块5、6、7是空闲的,以此类推。
位示图的主要操作及计算
- 位示图大小的计算:根据磁盘容量、物理块大小和字长来计算位示图的大小,公式为:位示图字数 = 磁盘总容量 /(物理块大小×字长)。
- 物理块在位示图中位置的计算:已知物理块编号,计算其在位示图中的字编号和位编号。字编号 = floor(物理块编号 / 字长),位偏移 = 物理块编号 % 字长。
位示图的操作示例
假设系统字长为32位,要分配一个物理块,具体操作如下:
- 扫描位示图,找到第一个值为0的位,假设找到的是第4195号物理块。
- 计算该物理块在位示图中的位置:
- 字编号:(4195 + 1) / 32 = 131.125,向上取整为132,即第132个字。
- 位编号:4195 % 32 = 3,即第132个字的第3位。
- 将位示图中第132个字的第3位设置为1,表示该物理块已被占用。
当回收一个物理块时,如回收第4195号物理块,只需将位示图中第132个字的第3位设置为0即可。
位示图相关考题分析
某文件管理系统采用位示图记录磁盘使用情况,系统字长为32位,磁盘物理块大小为4MB,物理块编号为0、1、2…,位示图字编号为0、1、2…。
- 问题1:16385号物理块的使用情况在位示图中第( )个字中描述?
- 答案:字位置 = ⌈(16385 + 1) / 32⌉ = 513,所以16385号物理块的使用情况在位示图中第512(512-1)个字中描述(字编号从0开始)。
- 问题2:若磁盘容量为1000GB,位示图需要( )个字表示?
- 答案:磁盘总容量为1000GB = 1000×1024MB,总物理块数 = 1000×1024 / 4 = 256000块,位示图总字数 = 256000 / 32 = 8000字。
相关考题
- 位示图大小计算:某字长为32位的计算机的文件管理系统采用位示图(bitmap)记录磁盘的使用情况。若磁盘容量为300GB,物理块的大小为1MB,那么位示图的大小为()个字。
- A. 1200
- B. 3200
- C. 6400
- D. 9600
- 答案:D
- 物理块在位示图中位置计算:某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为0,1,2,…;系统中的字长为32位,位示图中字的编号依次为0,1,2,…,每个字中的一个二进制位对应文件存储器上的一个物理块,取值0和1分别表示物理块是空闲或占用。假设操作系统将4195号物理块分配给某文件,那么该物理块的使用情况在位示图中编号为()的字中描述,系统应该将()。
- A. 129
- B. 130
- C. 131
- D. 132
- A. 该字的第3位置“0”
- B. 该字的第3位置“1”
- C. 该字的第4位置“0”
- D. 该字的第4位置“1”
- 答案:D、B
- 综合考查:某文件系统采用位示图管理磁盘空间,字长32位,磁盘容量为1TB,物理块大小为4KB。则位示图的大小为()个字。
- A. 1024
- B. 2048
- C. 4096
- D. 8192
- 答案:D
五、磁盘管理
相关概念
- 磁盘结构:磁盘由磁道和扇区组成,最外一层为0磁道,多个盘面的0号磁道可形成柱面。磁头移动到磁道所需时间为寻道时间,等待读写的扇区转到磁头下方所用时间为旋转延迟时间。
- 存取时间:存取时间=寻道时间+等待时间,等待时间即旋转延迟时间,有时还需加上数据的传输时间。
- 文件物理结构:包括连续分配、链接分配和索引分配。连续分配为文件分配一组连续的物理块;链接分配通过指针将文件的物理块链接成链表;索引分配为每个文件分配一个索引块,记录文件所有物理块的地址。
- 空闲存储空间管理方法:有空闲区表法、位示图法、空闲块链法等。位示图法用二进制位表示磁盘块使用状态,0为空闲,1为占用。
主要内容
- 磁盘读取时间计算:读取磁盘数据的时间包括寻道时间、旋转延迟时间和传输时间,计算公式为磁盘读取时间=块数×(间隔磁道数×寻找磁道的时间+旋转延迟时间+传输时间)。
- 移臂调度算法:常见的有先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描算法(SCAN)和循环扫描(CSCAN)算法。FCFS按请求先后顺序调度;SSTF优先处理距离当前磁头位置最近的磁道请求;SCAN算法双向扫描;CSCAN算法单向扫描。
- 缓冲区与时间:涉及单缓冲区和双缓冲区的概念及时间计算。单缓冲区会导致资源无法被同时获取,双缓冲区在数据处理时间上相对单缓冲区有优化。
- I/O管理软件:其层次结构包括用户进程、设备无关程序、设备驱动程序、中断处理程序和硬件。
考点
- 磁盘调度算法的应用:根据给定的磁盘请求序列和磁头初始位置,选择合适的磁盘调度算法并计算磁头移动的总距离或响应序列。
- 磁盘读取时间的计算:依据磁盘的相关参数,如寻道时间、旋转速度、传输速度等,计算读取特定数据量所需的时间。
- 缓冲区的时间计算:根据单缓冲区和双缓冲区的工作原理,结合磁盘块读入缓冲区时间、缓冲区送至用户区时间以及系统对每块数据的处理时间等,计算数据处理的总时间。
- 空闲存储空间管理方法的应用:主要考查位示图法,包括根据位示图判断磁盘块的使用状态,以及进行磁盘块的分配和回收操作。
- 文件物理结构与索引分配:考查不同文件物理结构的特点,以及索引分配中一级间接索引、二级间接索引等相关计算,如根据索引块大小、地址项大小等计算文件的最大长度。
相关考题
- 磁盘调度算法题:假设磁盘臂位于15号柱面上,进程的请求序列为20、22、24、18、16、14,如果采用扫描算法(SCAN),且当前磁头移动方向是从内到外,那么系统的响应序列应为()。
- A. 14、16、18、20、22、24
- B. 18、16、14、20、22、24
- C. 20、22、24、14、16、18
- D. 20、22、24、18、16、14
- 答案:A
- 磁盘读取时间计算题:某磁盘磁头从一个磁道移至另一个磁道需要10ms,文件在磁盘上非连续存放,逻辑上相邻数据块的平均移动距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和2ms,则读取一个100块的文件需要()ms时间。
- A. 10200
- B. 11000
- C. 11200
- D. 20200
- 答案:D
- 缓冲区相关计算题:假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为15μs,由缓冲区送至用户区的时间是5μs,在用户区内系统对每块数据的处理时间为1μs,若用户需要将大小为10个磁盘块的Doc1文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用双缓冲区需要花费的时间为()μs。
- A. 150
- B. 151
- C. 156
- D. 201
- 答案:C
- 空闲存储空间管理题:某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为0,1,2,…;系统中的字长为32位,位示图中字的编号依次为0,1,2,…,每个字中的一个二进制位对应文件存储器上的一个物理块,取值0和1分别表示物理块是空闲或占用。假设操作系统将4195号物理块分配给某文件,那么该物理块的使用情况在位示图中编号为()的字中描述,系统应该将()。
- A. 129
- B. 130
- C. 131
- D. 132
- A. 该字的第3位置“0”
- B. 该字的第3位置“1”
- C. 该字的第4位置“0”
- D. 该字的第4位置“1”
- 答案:D、B
- 文件物理结构题:假设文件系统采用索引节点管理,且索引节点有8个地址项iaddr(0)~iaddr(7),每个地址项大小为4B。iaddr(0)~iaddr(4)采用直接地址索引,iaddr(5)和iaddr(6)采用一级间接地址索引,iaddr(7)采用二级间接地址索引。假设磁盘索引块和磁盘数据块大小均为1KB,文件File1的索引节点如题图所示。若用户C访问文件File1中逻辑块号为261的信息,则对应的物理块号为()。
- A. 100
- B. 101
- C. 102
- D. 103
- 答案:B