单选题
单选题
第一章 操作系统引论
1. 操作系统是一组 ( D )
A、设备管理程序
B、中断处理程序
C、文件管理程序
D、资源管理程序
2. 下面关于操作系统启动过程的描述,顺序正确的是(A)?
(1)检查硬件 (2)寻址执行BIOS映射区 (3)加载引导扇区 (4)初始化系统 (5)启动内核
A、(2)(1)(3)(5)(4)
B、(2)(1)(3)(4)(5)
C、(3)(1)(2)(5)(4)
D、(1)(2)(3)(4)(5)
3. 下列选项中,不可能在用户态发生的是( D )
A、系统调用
B、缺页
C、进程切换
D、外部中断
解析:
用户态(User Mode):CPU执行用户程序时的状态,权限较低,只能访问用户地址空间和有限的指令集,无法直接访问系统资源。
选项分析:
- A、系统调用:可能在用户态发生。用户程序可以主动发起系统调用(如
open()、read()),此时会从用户态切换到内核态执行系统调用服务程序,完成后返回用户态。 - B、缺页:可能在用户态发生。当用户程序访问的虚拟内存页不在物理内存中时,会触发缺页中断,此时从用户态切换到内核态处理缺页(如加载页面到内存),处理完成后返回用户态。
- C、进程切换:可能在用户态发生。用户程序可以通过系统调用(如
sleep()、exit())间接触发进程切换,这些系统调用会导致内核进行进程调度和切换。 - D、外部中断:不可能在用户态发生。外部中断(如I/O设备中断、时钟中断)是由硬件直接触发的,CPU会立即切换到内核态处理中断,不会在用户态执行过程中发生。
4. 当CPU执行操作系统代码时,称处理机处于(B)。
A、就绪态; B、管态; C、自由态; D、目态;
解析:
核心概念:
- 管态(Supervisor Mode/Kernel Mode):又称内核态,是CPU的特权模式,此时CPU可以执行所有指令(包括特权指令),访问所有内存空间和系统资源,主要用于执行操作系统内核代码。
选项分析:
- A、就绪态:错误。就绪态是进程的一种状态,表示进程已准备好执行,等待CPU分配时间片,与CPU执行模式无关。
- B、管态:正确。CPU执行操作系统内核代码时处于管态(内核态),具有最高权限。
- C、自由态:错误。操作系统中没有"自由态"这种CPU执行模式,属于干扰项。
- D、目态:错误。目态就是用户态(User Mode),是CPU执行用户程序时的状态,权限较低,无法直接访问系统资源。
5. 一次系统调用的完成需要进行(A)次模式转换。
A、2
B、1
C、0
D、3
解析:
核心概念:
- 模式转换:CPU在用户态和内核态之间的切换,用户态权限低,内核态权限高。
- 系统调用:用户程序请求操作系统内核提供服务的接口。
系统调用的完整流程:
- 用户态 → 内核态:用户程序执行系统调用指令(如
int 0x80),触发软中断,CPU从用户态切换到内核态。 - 内核态执行系统调用:操作系统内核处理用户的请求,完成相应的服务。
- 内核态 → 用户态:系统调用处理完成后,CPU从内核态切换回用户态,继续执行用户程序。
模式转换次数分析:
- 第一次转换:用户程序发起系统调用时,从用户态到内核态
- 第二次转换:系统调用完成后,从内核态回用户态
- 总共有2次模式转换
第二章 进程的描述与控制
1. 若进程用信箱来传递信息,那么发送信息者的进程名应(C)
A、作为receive原语的参数
B、存放在信箱说明中
C、存放在信件中
D、作为send原语的参数
解析:
核心概念:
- 信箱通信:是一种间接通信方式,进程之间通过信箱(mailbox)交换信息。信箱是一种数据结构,包含信箱头(说明信箱的属性,如信箱名、大小、状态等)和信箱体(存放信件的空间)。
- send原语:发送进程调用send原语将信件发送到指定信箱,参数通常包括信箱名和信件内容。
- receive原语:接收进程调用receive原语从指定信箱接收信件,参数通常包括信箱名和存放信件的缓冲区。
信件结构分析:
- 信件通常包含三个部分:发送者进程名、接收者进程名和信件内容。
- 发送者进程名必须存放在信件中,这样接收进程才能知道是谁发送的信息,便于后续的通信和处理。
选项分析:
- A、作为receive原语的参数:错误。receive原语的参数是信箱名和存放信件的缓冲区,不需要发送者进程名作为参数。
- B、存放在信箱说明中:错误。信箱说明(信箱头)是信箱的数据结构属性,用于描述信箱本身,不存放具体信件的发送者信息。
- C、存放在信件中:正确。发送者进程名是信件的重要组成部分,必须存放在信件中,以便接收进程识别发送方。
- D、作为send原语的参数:错误。send原语的参数是信箱名和信件内容,发送者进程名应该包含在信件内容中,而不是作为send原语的独立参数。
2. 对进程的管理和控制用的原语是(D)。
A、指令
B、信号量
C、信箱
D、原语
解析:
核心概念:
- 进程管理:包括进程的创建、调度、同步、通信、终止等操作,这些操作必须是原子性的(要么全部完成,要么全部不完成)。
- 原语(Primitive):是由若干条机器指令组成的一段程序,用于完成某个特定功能,在执行过程中不允许被中断,具有原子性。
选项分析:
- A、指令:错误。指令是CPU能识别和执行的基本操作命令,单条指令无法完成复杂的进程管理功能。
- B、信号量:错误。信号量主要用于进程同步和互斥,是一种工具,而不是直接用于管理和控制进程的机制。
- C、信箱:错误。信箱是进程间通信的一种方式,用于进程之间传递信息,不是进程管理的主要机制。
- D、原语:正确。进程的管理和控制操作(如创建进程的create原语、终止进程的terminate原语、阻塞进程的block原语等)都是通过原语实现的,确保了操作的原子性和正确性。
3. 多线程模型中不包括(A)。
A、一对多模型
B、多对多模型
C、一对一模型
D、多对一模型
解析:
多线程模型是指用户级线程与内核级线程之间的映射关系,主要包括以下三种标准模型:
- 多对一模型(Many-to-One):多个用户级线程映射到一个内核级线程。这种模型的优点是线程管理开销小,但缺点是如果一个线程阻塞,整个进程都会阻塞。
- 一对一模型(One-to-One):一个用户级线程映射到一个内核级线程。这种模型的优点是一个线程阻塞不会影响其他线程,但缺点是线程管理开销大。
- 多对多模型(Many-to-Many):多个用户级线程映射到多个内核级线程。这种模型结合了前两种模型的优点,既能有效利用多核处理器,又能控制线程管理开销。
选项分析:
- A、一对多模型:错误。标准的多线程模型中没有"一对多模型"这一分类,这不是操作系统中定义的多线程模型。
- B、多对多模型:正确。是三种标准多线程模型之一。
- C、一对一模型:正确。是三种标准多线程模型之一。
- D、多对一模型:正确。是三种标准多线程模型之一。
4. 某个分时系统采用一对一线程模型。内存中有10个进程并发运行,其中9个进程各有一个线程,另外一个进程A拥有11个线程。则A获得的CPU时间占总的时间的(D)。
A、1/20
B、1/10
C、1
D、11/20
解析:
在一对一线程模型中,每个用户级线程都会映射到一个内核级线程。操作系统的调度单位是内核级线程,即CPU时间是按照内核级线程来分配的。
- 9个进程各有1个线程,共9个内核级线程
- 进程A有11个线程,共11个内核级线程
- 系统总共有9 + 11 = 20个内核级线程
- CPU时间平均分配给每个内核级线程,每个内核级线程获得1/20的CPU时间
- 进程A的11个内核级线程总共获得11 × (1/20) = 11/20的CPU时间
5. 某个分时系统采用多对一线程模型。内存中有10个进程并发运行,其中9个进程中只各有一个线程,另外一个进程A拥有11个线程。则A获得的CPU时间占总时间的(B)。
A、1/20
B、1/10
C、0
D、1
解析:
在多对一线程模型中,多个用户级线程映射到一个内核级线程。操作系统的调度单位仍然是内核级线程,但此时进程内的所有线程共享一个内核级线程的CPU时间。
- 系统中有10个进程,每个进程无论有多少个用户级线程,都只有1个内核级线程
- 系统总共有10个内核级线程
- CPU时间平均分配给每个内核级线程,每个内核级线程获得1/10的CPU时间
- 进程A的11个用户级线程共享进程A的1个内核级线程,因此进程A总共获得1 × (1/10) = 1/10的CPU时间
第三章 处理机调度与死锁
1. 设有4个作业同时到达,每个作业的执行时间均为2个小时,它们在一台处理机上按单道方式执行,则平均周转时间为( A )
A、5小时
B、8小时
C、2.5小时
D、1小时
解析:
核心概念:
- 周转时间:作业从提交到完成的总时间,等于等待时间加上执行时间。
- 单道方式执行:处理机一次只能执行一个作业,作业按顺序执行,一个作业完成后才执行下一个。
计算过程:
4个作业同时到达,按单道方式顺序执行,每个作业执行时间均为2小时。
- 作业1:周转时间=0+2=2小时
- 作业2:周转时间=2+2=4小时
- 作业3:周转时间=4+2=6小时
- 作业4:周转时间=6+2=8小时
平均周转时间:(2+4+6+8)/4 = 20/4 = 5小时
2. 某系统采用短作业优先的调度策略,现有作业序列:作业1(提交时间:8:00,运行时间1.50),作业2(提交时间:8:30,运行时间0.80)作业3(提交时间:9:00,运行时间0.10),作业4(提交时间:9:30,运行时间0.30),单位:小时,以十进制计。其平均带权周转时间为:( B )
A、5.52
B、3.00
C、12.23
D、4.65
解析:
核心概念:
- 带权周转时间:作业的周转时间除以其运行时间,即
带权周转时间 = 周转时间 / 运行时间 - 周转时间:作业从提交到完成的总时间,即
周转时间 = 完成时间 - 提交时间 - 短作业优先(SJF):每次选择运行时间最短的作业执行
时间线计算(以8:00为0时刻):
执行顺序分析:
- 8:00(0时刻):只有作业1已提交,立即执行
- 8:30(0.5时刻):作业2提交,但作业1仍在执行,作业2等待
- 9:00(1.0时刻):作业3提交,作业1仍在执行,作业2和3等待
- 9:30(1.5时刻):作业1完成,作业4提交。此时已提交的作业有2、3、4,按SJF算法选择运行时间最短的作业3(0.10小时)执行
- 作业3完成后,选择作业4(0.30小时)执行
- 最后执行作业2(0.80小时)
| 作业 | 提交时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| 1 | 0.00 | 1.50 | 0.00 | 1.50 | 1.50 | 1.50/1.50=1.00 |
| 3 | 1.00 | 0.10 | 1.50 | 1.60 | 0.60 | 0.60/0.10=6.00 |
| 4 | 1.50 | 0.30 | 1.60 | 1.90 | 0.40 | 0.40/0.30≈1.333 |
| 2 | 0.50 | 0.80 | 1.90 | 2.70 | 2.20 | 2.20/0.80=2.75 |
平均带权周转时间:(1.00 + 6.00 + 1.333 + 2.75) / 4 ≈ 11.083 / 4 ≈ 2.771,最接近选项B的3.00
3. 下面哪种死锁处理策略引入的不合理因素最严重?( A )
A、死锁忽略
B、死锁预防
C、死锁检测+恢复
D、死锁避免
解析:
核心概念:
- 死锁:多个进程因竞争资源而造成的一种互相等待的局面,若无外力作用,这些进程都将无法继续执行
选项分析:
- A、死锁忽略:又称鸵鸟算法,假装死锁不会发生,不采取任何措施。当死锁发生时,系统可能崩溃,数据丢失,引入的不合理因素最严重
- B、死锁预防:通过限制资源请求顺序或方式来避免死锁,可能导致资源利用率降低,但不会导致系统崩溃
- C、死锁检测+恢复:定期检测死锁,发现后通过回滚进程或释放资源恢复,开销较大但可控
- D、死锁避免:在资源请求时预判是否会导致死锁,只允许安全的请求,开销较大但合理
4. 下面哪个操作一定会引起CPU调度算法的执行?( B )
A、fork()
B、exit()
C、open()
D、printf()
解析:
核心概念:
- CPU调度:操作系统从就绪队列中选择一个进程分配CPU时间
- 调度触发条件:进程状态改变(如运行→阻塞、运行→就绪、进程终止)
选项分析:
- A、fork():创建新进程,可能触发调度(如果新进程优先级更高),但不是一定会
- B、exit():进程终止,CPU必须选择新的进程执行,一定会触发调度算法
- C、open():文件打开操作,属于I/O,可能阻塞但不一定触发调度
- D、printf():输出函数,可能导致I/O,但不一定触发调度
5. SJF算法的就绪队列是按照进程的(D)排列。
A、提交时间
B、等待时间
C、到达时间
D、下一个CPU脉冲时间
解析:
核心概念:
- SJF算法:短作业优先(Shortest Job First)调度算法,每次选择运行时间最短的作业或进程执行
- 就绪队列:操作系统中存放就绪状态进程的队列
选项分析:
- A、提交时间:错误。提交时间是作业或进程到达系统的时间,不是SJF算法的排列依据
- B、等待时间:错误。等待时间是进程在就绪队列中等待的时间,不是SJF算法的排列依据
- C、到达时间:错误。到达时间是进程进入就绪队列的时间,FCFS(先来先服务)算法按照到达时间排列
- D、下一个CPU脉冲时间:正确。SJF算法按照进程的运行时间(即下一个CPU脉冲时间)排列,运行时间最短的进程排在前面
6. 银行家算法是一种 ( B )算法.
A、死锁预防
B、死锁避免
C、死锁检测
D、死锁解除
解析:
核心概念:
- 银行家算法:一种用于避免死锁的算法,通过模拟资源分配来判断系统是否处于安全状态
- 死锁避免:在资源分配前预判是否会导致死锁,只允许安全的请求
选项分析:
- A、死锁预防:错误。死锁预防通过限制资源请求顺序或方式来避免死锁,如破坏死锁的四个必要条件之一
- B、死锁避免:正确。银行家算法是典型的死锁避免算法,在资源分配前检查系统是否仍处于安全状态
- C、死锁检测:错误。死锁检测定期检查系统是否发生死锁,不预先避免
- D、死锁解除:错误。死锁解除是在死锁发生后采取措施恢复,如回滚进程或释放资源
7. 下面哪种调度算法能让刚等待完IO的进程优先执行?( A )
A、多级反馈队列调度
B、时间片轮转调度
C、短作业优先
D、先来先服务
解析:
核心概念:
- IO等待:进程因等待IO操作完成而进入阻塞状态,IO完成后回到就绪状态
- 调度算法:决定就绪队列中进程执行顺序的算法
选项分析:
- A、多级反馈队列调度:正确。多级反馈队列调度算法为不同优先级的进程设置不同的队列,刚完成IO的进程通常会被放入较高优先级的队列,优先获得CPU时间
- B、时间片轮转调度:错误。时间片轮转调度按时间片依次执行进程,不考虑进程的IO等待情况
- C、短作业优先:错误。短作业优先按进程运行时间排列,不考虑IO等待情况
- D、先来先服务:错误。先来先服务按进程到达时间排列,不考虑IO等待情况
8. 下列方法中哪一个是破坏了"循环等待"条件( D )
A、剥夺资源法
B、银行家算法
C、一次性分配策略
D、资源有序分配策略
解析:
核心概念:
- 死锁的四个必要条件:互斥条件、请求和保持条件、不剥夺条件、循环等待条件
- 破坏死锁:只需破坏四个必要条件中的任意一个即可避免死锁
选项分析:
- A、剥夺资源法:错误。剥夺资源法破坏的是"不剥夺条件",允许系统剥夺进程已拥有的资源
- B、银行家算法:错误。银行家算法是死锁避免算法,不是破坏死锁条件的方法
- C、一次性分配策略:错误。一次性分配策略破坏的是"请求和保持条件",要求进程一次性请求所有资源
- D、资源有序分配策略:正确。资源有序分配策略通过给资源编号,进程必须按编号顺序请求资源,避免了进程间形成循环等待
9. 中程调度的目的是(B )。
A、提高CPU的利用率
B、节省内存
C、提高CPU的效率
D、降低系统开销
解析:
核心概念:
- 中程调度:又称中级调度或内存调度,负责将进程从内存交换到外存,或从外存交换到内存
- 调度层次:高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)
选项分析:
- A、提高CPU的利用率:错误。提高CPU利用率是进程调度(低级调度)的目的
- B、节省内存:正确。中程调度通过将暂时不用的进程换出到外存,释放内存空间,节省内存
- C、提高CPU的效率:错误。提高CPU效率通常通过优化算法或硬件实现,不是中程调度的目的
- D、降低系统开销:错误。中程调度涉及进程的换入换出,会增加一定的系统开销
10. 进程从新建状态转换到就绪状态的工作由(C )完成。
A、中级调度
B、进程调度
C、作业调度
D、低级调度
解析:
核心概念:
- 进程状态转换:新建 → 就绪 → 运行 → 阻塞 → 终止
- 调度层次:
- 高级调度(作业调度):负责将作业从外存调入内存,创建进程,进入就绪状态
- 中级调度(内存调度):负责进程在内存和外存之间的转换
- 低级调度(进程调度):负责从就绪队列选择进程执行
选项分析:
- A、中级调度:错误。中级调度负责进程在内存和外存之间的转换,不涉及新建到就绪的转换
- B、进程调度:错误。进程调度负责从就绪队列选择进程执行,是运行状态的转换
- C、作业调度:正确。作业调度将作业调入内存,创建进程,进程从新建状态转换为就绪状态
- D、低级调度:错误。低级调度就是进程调度,负责运行状态的转换
第四章 进程同步
1. 从下面对临界区的论述中,选出一条正确的论述。(C)
A、临界区是指进程中用于实现进程同步的那段代码
B、临界区是指进程中用于访问共享资源的那段代码
C、临界区是指进程中访问临界资源的那段代码
D、临界区是指进程中用于实现进程通信的那段代码
2. 在操作系统中,P、V操作是一种(B)。
A、机器指令
B、进程低级通信原语
C、系统调用命令
D、作业控制命令
解析:
核心概念:
- P、V操作:是操作系统中用于实现进程同步和互斥的原语操作,由荷兰计算机科学家Dijkstra提出。
- 原语:是由若干条机器指令组成的一段程序,具有原子性(执行过程中不能被中断)。
选项分析:
- A、机器指令:错误。P、V操作不是硬件直接支持的机器指令,而是操作系统实现的软件原语。
- B、进程低级通信原语:正确。P、V操作主要用于进程间的同步与互斥,是一种低级通信方式,通过信号量机制实现进程间的间接通信。
- C、系统调用命令:错误。系统调用是用户程序请求操作系统服务的接口,而P、V操作是操作系统内部的原语,通常作为系统调用的一部分实现。
- D、作业控制命令:错误。作业控制命令是用户与操作系统交互的命令,用于控制作业的执行,如ls、cp等,与P、V操作无关。
3. 进程A和B共享同一临界资源,并且进程A正处于对应的临界区内执行。请从下列描述中选择一条正确的描述。(A)
A、进程A的执行能被中断,而且只要B进程就绪,就可以将CPU调度给B进程。
B、进程A的执行能被中断,但中断A后,不能将CPU调度给B进程。
C、进程A的执行能被中断,而且只要B进程就绪,就必定将CPU调度给B进程。
D、进程A的执行不能被中断,即临界区的代码具有原子性。
解析:
核心概念:
- 临界区:进程中访问临界资源的那段代码。
- 临界资源:一次仅允许一个进程使用的共享资源,如打印机、共享变量等。
- 进程调度:操作系统根据调度算法从就绪队列中选择进程执行,CPU可以被中断并调度给其他进程。
选项分析:
- A、进程A的执行能被中断,而且只要B进程就绪,就可以将CPU调度给B进程:正确。进程在临界区内执行时,CPU是可以被中断的,操作系统可以根据调度算法将CPU调度给其他就绪进程(包括B进程)。但由于临界资源的互斥访问机制,B进程即使获得CPU,也无法进入自己的临界区,会被阻塞等待。
- B、进程A的执行能被中断,但中断A后,不能将CPU调度给B进程:错误。进程调度是操作系统的基本功能,即使A在临界区,只要B就绪,操作系统就可以调度B执行,只是B无法进入临界区。
- C、进程A的执行能被中断,而且只要B进程就绪,就必定将CPU调度给B进程:错误。"必定"说法太绝对,进程调度取决于调度算法,如FCFS算法中,如果A还在执行,即使B就绪,也不会立即调度B。
- D、进程A的执行不能被中断,即临界区的代码具有原子性:错误。临界区的原子性是通过同步机制(如锁、信号量)保证的,而不是通过禁止中断实现的。现代操作系统中,进程在临界区内执行时CPU可以被中断。
4. 进程并发地在处理机上执行时,(A)。
A、进程之间可能具有交往,也可能无关
B、上述都不对
C、进程之间是无关的,系统是封闭的
D、进程之间具有交互性、并发性,它们既相互依赖,又相互制约
解析:
核心概念:
- 进程并发:多个进程在同一处理机上交替执行,宏观上同时进行,微观上交替执行。
- 进程交往:进程之间由于共享资源或相互协作而产生的依赖或制约关系。
选项分析:
- A、进程之间可能具有交往,也可能无关:正确。进程并发执行时,有些进程之间可能需要共享资源或协作(如生产者-消费者进程),具有交往关系;而有些进程之间可能没有任何共享资源或协作关系,彼此无关(如两个独立运行的应用程序)。
- C、进程之间是无关的,系统是封闭的:错误。这种说法太绝对,进程之间可能存在交往关系,系统也不是完全封闭的,进程可以通过系统调用与外部环境交互。
- D、进程之间具有交互性、并发性,它们既相互依赖,又相互制约:错误。这种说法也太绝对,并不是所有并发执行的进程之间都具有交互性和相互依赖关系,有些进程之间是完全无关的。
5. 在9个生产者,5个消费者,共享容量为7的缓冲区的生产者-消费者问题中。互斥使用缓冲区的信号量S的初值为(B)。
A、7
B、1
C、9
D、5
解析:
核心概念:
- 生产者-消费者问题:经典的进程同步问题,涉及生产者进程和消费者进程共享一个固定大小的缓冲区。
- 互斥信号量:用于实现对临界资源的互斥访问,初值通常为1,表示临界资源初始可用。
- 同步信号量:用于协调生产者和消费者的执行顺序,如空缓冲区数(初值为缓冲区容量)和满缓冲区数(初值为0)。
选项分析:
- B、1:正确。互斥信号量用于保证对缓冲区的互斥访问,无论生产者和消费者的数量多少,互斥信号量的初值始终为1,表示缓冲区初始可用,一次只允许一个进程访问。
第五章 存储器管理
1. 以下有关可变分区管理中采用的主存分配算法说法错误的是(A)
A、最佳适应算法是最好的算法,但后到的较大作业很难得到满足
B、可变分区管理常采用的主存分配算法包括首次适应、最佳适应和最坏适应等算法
C、首次适应算法实现简单,但碎片过多使主存空间利用率低
D、最差适应算法总是挑选最大空闲区用于分割,使得剩下的分区仍可使用
解析:
核心概念:
- 可变分区管理:动态分配主存空间,根据进程需要分配恰好大小的分区
- 主存分配算法:用于决定如何从空闲分区表中选择分区分配给进程
选项分析:
- A、最佳适应算法是最好的算法,但后到的较大作业很难得到满足:错误。最佳适应算法并非最好的算法,它会产生大量外部碎片,导致主存空间利用率降低,而且后到的较大作业确实难以得到满足。
- B、可变分区管理常采用的主存分配算法包括首次适应、最佳适应和最坏适应等算法:正确。这三种是可变分区管理中最常用的主存分配算法。
- C、首次适应算法实现简单,但碎片过多使主存空间利用率低:正确。首次适应算法按地址顺序查找,实现简单,但容易在低地址产生大量外部碎片。
- D、最差适应算法总是挑选最大空闲区用于分割,使得剩下的分区仍可使用:正确。最差适应算法选择最大空闲区,分割后剩下的分区仍较大,仍可使用。
结论:
最佳适应算法并非最好的算法,它存在外部碎片问题,因此A选项错误。
2. 在页式存储管理中,为了实现主存的空间分配,应设置(A)
A、位示图
B、页表
C、空闲区表
D、段表
解析:
核心概念:
- 页式存储管理:将主存划分为大小相等的页面,进程的虚拟地址空间也划分为大小相等的页
选项分析:
- A、位示图:正确。位示图是一种用于管理主存空间分配的数据结构,每一位表示一个物理块的状态(0表示空闲,1表示已分配),适合页式存储管理的主存空间分配。
- B、页表:错误。页表用于记录进程虚拟页面到物理页面的映射关系,不是用于主存空间分配。
- C、空闲区表:错误。空闲区表用于可变分区管理中,记录空闲分区的起始地址和大小。
- D、段表:错误。段表用于段式存储管理中,记录段的起始地址和大小。
3. 一台计算机为每个进程提供65536字节的地址空间,这个地址空间被划分为4096字节的页面。一个特定的程序有32768字节的正文、16386字节的数据和15870字节的堆栈。这个程序(C)装入这个地址空间。一个页面不能同时包含两个不同段的成分。
A、能
B、不一定
C、不能
D、这三个都不对
解析:
核心概念:
- 地址空间:进程可用的虚拟内存空间
- 页面划分:将地址空间划分为固定大小的页面
- 段:程序通常分为正文段、数据段和堆栈段等
计算过程:
地址空间大小:65536字节
页面大小:4096字节
页面数量:65536 ÷ 4096 = 16个页面
各段所需页面数:
- 正文段:32768字节 ÷ 4096字节/页 = 8页(刚好整除)
- 数据段:16386字节 ÷ 4096字节/页 ≈ 4.0005页,向上取整为5页(因为不能跨段使用页面)
- 堆栈段:15870字节 ÷ 4096字节/页 ≈ 3.875页,向上取整为4页(因为不能跨段使用页面)
总所需页面数:8 + 5 + 4 = 17页
比较:总所需页面数17页 > 可用页面数16页,因此程序不能装入
4. 一个32位地址的计算机使用两级页表。虚拟地址被分成9位的顶级页表域、11位的二级页表域和一个偏移量,在地址空间中一共有(D)个页面。
A、2的9次方
B、2的11次方
C、这三个都不对
D、2的20次方
解析:
核心概念:
- 两级页表:将虚拟地址分为顶级页表索引、二级页表索引和偏移量三部分
- 页面数量:虚拟地址空间中页面的总数,等于顶级页表项数 × 二级页表项数
计算过程:
- 顶级页表项数:2的9次方(因为顶级页表域为9位)
- 二级页表项数:2的11次方(因为二级页表域为11位)
- 总页面数:顶级页表项数 × 二级页表项数 = 2^9 × 2^11 = 2^(9+11) = 2^20个页面
5. 现有一个作业,在段式存储管理的系统中已为主存分配建立了如表所示的段表:
| 段号 | 段长 | 主存起始地址 |
|---|---|---|
| 0 | 680 | 1760 |
| 1 | 160 | 1000 |
| 2 | 200 | 1560 |
| 3 | 890 | 2800 |
逻辑地址[1,160]的物理地址为( B )
A、1000
B、无效地址
C、600
D、1160
解析:
核心概念:
- 段式存储管理:将程序按逻辑分段,每段分配连续主存空间,段间可以不连续
- 逻辑地址结构:[段号, 段内地址],段号用于查找段表,段内地址用于定位段内具体位置
- 物理地址计算:物理地址 = 段的主存起始地址 + 段内地址
- 地址有效性检查:段内地址必须小于段长,否则为无效地址
计算过程:
- 逻辑地址[1,160]表示段号为1,段内地址为160
- 查段表,段号1的段长为160,主存起始地址为1000
- 地址有效性检查:段内地址160等于段长160,超过了段内地址的有效范围(段内地址应该在0到段长-1之间,即0-159)
- 因此,该逻辑地址是无效地址
6. 在下列存储管理方案中,不适用于多道程序设计的是(D)
A、可变分区分配
B、分页存储管理
C、固定分区分配
D、单一连续分配
解析:
核心概念:
- 多道程序设计:允许多个程序同时驻留内存并交替执行,提高CPU利用率
- 存储管理方案:管理内存空间的分配和回收,不同方案对多道程序的支持不同
选项分析:
- A、可变分区分配:正确。可变分区允许根据进程大小动态分配内存,可以支持多道程序设计
- B、分页存储管理:正确。分页存储将内存划分为固定大小的页,可以支持多道程序设计
- C、固定分区分配:正确。固定分区将内存划分为多个固定大小的分区,可以支持多道程序设计
- D、单一连续分配:错误。单一连续分配只将内存分为系统区和用户区,一次只能运行一个用户程序,不支持多道程序设计
7. 一个16位地址的分页系统中,页面大小为1KB。逻辑地址为0x35F7在第(A)个页面中。
A、13
B、14
C、3
D、10
解析:
核心概念:
- 分页系统:将虚拟地址空间划分为固定大小的页面,页面大小为2的幂
- 页面号计算:页面号 = 逻辑地址 ÷ 页面大小(取整数部分)
- 1KB:1024字节,即2^10字节
计算过程:
- 逻辑地址转换为十进制:0x35F7 = 3×16^3 + 5×16^2 + 15×16^1 + 7×16^0 = 3×4096 + 5×256 + 15×16 + 7 = 12288 + 1280 + 240 + 7 = 13815
- 页面大小:1KB = 1024字节
- 页面号计算:页面号 = 逻辑地址 ÷ 页面大小 = 13815 ÷ 1024 = 13.49(取整数部分为13)
结论:
逻辑地址0x35F7在第13个页面中,因此A选项正确。
8. TLB在计算机系统中是用于(B)。
A、存储文件信息
B、地址变换
C、存储通道程序
D、与主存交换信息
解析:
核心概念:
- TLB(Translation Lookaside Buffer):转换检测缓冲区,也称为快表
- 地址变换:在分页系统中,将虚拟地址转换为物理地址的过程
选项分析:
- A、存储文件信息:错误。存储文件信息的是文件系统或磁盘
- B、地址变换:正确。TLB是页表的高速缓存,用于加速虚拟地址到物理地址的变换过程,避免每次访问都要查询主存中的页表
- C、存储通道程序:错误。通道程序是用于控制I/O设备的程序,存储在主存中
- D、与主存交换信息:错误。与主存交换信息的是CPU或I/O设备
9. 采用动态重定位方式装入的作业,其地址变换工作是在( B )完成的
A、作业被选中时
B、每执行一条指令时
C、每次被移动时
D、作业装入时
解析:
核心概念:
- 动态重定位:在程序执行过程中,每次访问内存时才进行地址变换,将逻辑地址转换为物理地址
- 地址变换:将程序中的逻辑地址转换为物理地址的过程,通常由硬件地址变换机构(如MMU)完成
选项分析:
- A、作业被选中时:错误。作业被选中时只是进入就绪状态,尚未开始执行,不需要进行地址变换
- B、每执行一条指令时:正确。动态重定位的特点是在指令执行过程中,每次访问内存时都需要进行地址变换
- C、每次被移动时:错误。动态重定位允许作业在内存中移动,移动后只需修改基址寄存器,无需修改程序中的地址
- D、作业装入时:错误。作业装入时进行地址变换是静态重定位的特点
结论:
动态重定位在程序执行过程中进行地址变换,每次执行一条指令时都需要将逻辑地址转换为物理地址,因此B选项正确。
10. 一个32位地址的计算机使用两级页表。 虚拟地址被分成9位的顶级页表域、 11位的二级页表域和一个偏移量,页面大小是( A )
A、4KB
B、2KB
C、1KB
D、这三个都不对
解析:
核心概念:
- 虚拟地址结构:32位虚拟地址被分为页号和页内偏移两部分
- 两级页表:顶级页表(9位)指向二级页表,二级页表(11位)指向物理页框
- 页面大小:由页内偏移位数决定,计算公式为页面大小 = 2^偏移量位数
计算过程:
- 虚拟地址总位数:32位
- 顶级页表域:9位
- 二级页表域:11位
- 页内偏移量位数 = 32 - 9 - 11 = 12位
- 页面大小 = 2^12 = 4096字节 = 4KB
11. 在连续内存分配算法中,将空闲分区按大小从小到大排序,每次都从空闲分区链表的首结点开始搜索第一个满足需求的空闲分区分配给进程的算法是(B)
A、循环首次适应算法
B、最佳适应算法
C、最坏适应算法
D、首次适应算法
解析:
核心概念:
- 连续内存分配算法:将连续的内存空间分配给进程
- 空闲分区链表:记录系统中所有空闲内存分区的链表
- 各种算法特点:不同算法对空闲分区的排序和搜索策略不同
选项分析:
- A、循环首次适应算法:错误。循环首次适应算法从上次查找结束的位置开始搜索,按地址顺序查找
- B、最佳适应算法:正确。最佳适应算法将空闲分区按大小从小到大排序,每次从链表首结点开始搜索第一个满足需求的空闲分区
- C、最坏适应算法:错误。最坏适应算法将空闲分区按大小从大到小排序,每次分配最大的空闲分区
- D、首次适应算法:错误。首次适应算法按地址顺序排序空闲分区,从链表首结点开始搜索第一个满足需求的空闲分区
结论:
最佳适应算法的特点是将空闲分区按大小从小到大排序,从链表首结点开始搜索第一个满足需求的空闲分区,因此B选项正确。
12. 在可变式分区存储管理中,某作业完成后要收回其主存空间,该空间可能与相邻空闲区合并,在修改空闲区表时使空闲区数不变且空闲区起始地址不变的情况是(D)。
A、无上邻空闲区但有下邻空闲区
B、有上邻空闲区也有下邻空闲区
C、无上邻空闲区也无下邻空闲区
D、有上邻空闲区但无下邻空闲区
解析:
核心概念:
- 回收区 :作业完成后释放的内存分区(此时它不再被作业占用,需要被系统回收)
- 空闲区 :系统中未被任何作业占用的内存分区(可供新作业分配使用)
- 可变式分区管理:动态分配主存空间,作业完成后回收分区
- 空闲区合并:回收分区时,检查是否与上下相邻空闲区合并
- 空闲区表:记录空闲分区的起始地址和大小
回收场景详细说明:
| 回收场景 | 合并次数 | 空闲区数量变化 | 起始地址变化 | 核心逻辑 |
|---|---|---|---|---|
| 无上邻、无下邻 | 0(无需合并) | +1(新增1个空闲区) | 变为回收区起始地址 | 回收区直接登记为新空闲区,无相邻空闲区可合并 |
| 无上邻、有下邻 | 1 | -1(2个变1个) | 变为回收区起始地址 | 回收区先登记为空闲区(总数+1),再与下邻合并(总数-1) |
| 有上邻、无下邻 | 1 | 不变(1个变1个) | 沿用上邻空闲区起始地址 | 回收区直接扩充上邻空闲区,不新增表项,仅修改大小 |
| 有上邻、有下邻 | 2 | -2(3个变1个) | 沿用上邻空闲区起始地址 | 回收区先变空闲(总数+1),再依次与上邻、下邻合并,3区最终合一 |
选项分析:
- A、无上邻空闲区但有下邻空闲区:回收分区与下邻空闲区合并,空闲区数减少1,起始地址为回收分区的起始地址,会改变
- B、有上邻空闲区也有下邻空闲区:回收分区与上下邻空闲区合并,空闲区数减少2,起始地址为上邻空闲区的起始地址,不变
- C、无上邻空闲区也无下邻空闲区:直接添加新的空闲区,空闲区数增加1,起始地址为回收分区的起始地址,改变
- D、有上邻空闲区但无下邻空闲区:回收分区与上邻空闲区合并,空闲区数不变,起始地址为上邻空闲区的起始地址,不变
13. 在分页系统中,主存分配的单位是(B)。
A、作业
B、物理块
C、段
D、字节
解析:
核心概念:
- 分页系统:将主存划分为大小相等的物理块,将进程的虚拟地址空间划分为大小相等的页面
- 主存分配:为进程分配若干个物理块,每个页面对应一个物理块
选项分析:
- A、作业:错误。作业是用户提交给系统的任务单元,不是主存分配的单位
- B、物理块:正确。分页系统中,主存分配的单位是物理块,每个物理块对应一个页面
- C、段:错误。段是段式存储管理中的分配单位
- D、字节:错误。字节是内存的基本存储单位,但不是主存分配的单位
14. 要保证一个进程在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用(A)技术。
A、动态重定位
B、静态重定位
C、静态分配
D、动态分配
解析:
核心概念:
- 重定位:将程序中的逻辑地址转换为物理地址的过程
- 静态重定位:在程序装入时完成地址转换,程序运行时地址固定,不能改变存放位置
- 动态重定位:在程序执行时动态完成地址转换,通过重定位寄存器实现,程序可以改变存放位置
选项分析:
- A、动态重定位:正确。动态重定位在程序执行时通过重定位寄存器将逻辑地址转换为物理地址,程序改变存放位置后,只需修改重定位寄存器的值即可,仍能正确执行
- B、静态重定位:错误。静态重定位在程序装入时完成地址转换,程序运行时地址固定,改变存放位置后会导致地址错误
- C、静态分配:错误。静态分配是指程序运行前一次性分配全部资源,与地址重定位无关
- D、动态分配:错误。动态分配是指程序运行时动态分配资源,与地址重定位无关
15. 计算机系统的二级存储包括(B)
A、ROM和RAM
B、辅助存储器,如硬盘
C、CPU寄存器和主存缓冲区
D、超高速缓存和内存储器
解析:
核心概念:
- 二级存储:又称辅助存储,是计算机系统中除主存外的存储设备,用于长期存储数据
- 存储层次:通常分为寄存器、高速缓存、主存(RAM)、二级存储(辅助存储器)
选项分析:
- A、ROM和RAM:ROM和RAM都属于主存,是一级存储
- B、辅助存储器,如硬盘:正确。辅助存储器是二级存储,包括硬盘、U盘、光盘等
- C、CPU寄存器和主存缓冲区:CPU寄存器属于寄存器层次,主存缓冲区属于主存,都是一级存储
- D、超高速缓存和内存储器:超高速缓存属于高速缓存层次,内存储器属于主存,都是一级存储
16. 操作系统采用基本分页存储管理格式,要求(B)
A、每个进程拥有一张页表,但只有执行进程的页表驻留在内存中
B、每个进程拥有一张页表,且进程的页表驻留在内存中
C、所有进程共享一张页表,以节约有限的内存空间,且页表必须驻留在内存中
D、所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度的节省有限的内存空间
解析:
核心概念:
- 基本分页存储管理:为每个进程建立一张页表,记录虚拟页面到物理页面的映射关系
- 页表存储:页表需要驻留在内存中,以便地址变换机构快速访问
选项分析:
- A、每个进程拥有一张页表,但只有执行进程的页表驻留在内存中:错误。所有进程的页表都需要驻留在内存中,而不仅仅是执行进程
- B、每个进程拥有一张页表,且进程的页表驻留在内存中:正确。基本分页管理中,每个进程有一张独立的页表,且页表驻留在内存中
- C、所有进程共享一张页表:错误。每个进程有独立的虚拟地址空间,需要独立的页表
- D、所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中:错误。每个进程需要独立的页表,不能共享
17. 操作系统将一个程序分段的目的是(A)
A、方便用户编写程序
B、创建进程更容易
C、没有什么特殊原因,是一种习惯
D、节约内存,提高内存空间的利用率
解析:
核心概念:
- 段式存储管理:将程序按逻辑分段,每段是一个相对完整的功能模块
- 分段目的:提高程序的模块化程度,方便用户编写和维护程序
选项分析:
- A、方便用户编写程序:正确。分段按逻辑功能划分,符合用户的编程习惯,方便用户编写和维护程序
- B、创建进程更容易:错误。创建进程的难易程度与存储管理方式关系不大
- C、没有什么特殊原因,是一种习惯:错误。分段是有明确目的的,不是习惯
- D、节约内存,提高内存空间的利用率:错误。分段可能导致外部碎片,不一定能提高内存利用率
18. 一台计算机的进程在其地址空间有1024个页面,页表保存在内存中。从页表中读取一个字的开销是5ns。为了减小这一开销,该计算机使用了TLB,它有32个(虚拟页面,物理页框)对,能在1ns内完成查找。请问把平均开销降到2ns需要的命中率为(C)
A、这三个都不对
B、70%
C、80%
D、60%
解析:
核心概念:
- TLB:Translation Lookaside Buffer,翻译lookaside缓冲区,用于快速查找页表项
- TLB命中率:TLB命中次数占总访问次数的百分比
- 平均访问时间:每次地址转换都会先查TLB,无论命中与否都需要1ns
- TLB命中:仅需TLB查找,时间=1ns
- TLB未命中:先查TLB(1ns) + 再访问内存页表(5ns),总时间=1+5=6ns
计算过程:
设命中率为h,则:
- 平均访问时间 = 命中时间 × 命中率 + 未命中时间 × (1 - 命中率)
- 平均访问时间 = 1ns × h + 6ns × (1 - h)
- 题目要求平均访问时间 ≤ 2ns
解方程:
1ns × h + 6ns × (1 - h) ≤ 2ns
1h + 6(1 - h) ≤ 2
1h + 6 - 6h ≤ 2
-5h ≤ -4
h ≥ 0.8即命中率至少为80%,对应选项C
19. 一台计算机为每个进程提供65536字节的地址空间,这个地址空间被划分为页面大小为512字节的若干页面。一个特定的程序有32768字节的正文、16386字节的数据和15870字节的堆栈。这个程序( A )装入这个地址空间。一个页面不能同时包含两个不同段的成分。
A、能
B、不一定
C、这三个都不对
D、不能
解析:
核心概念:
- 地址空间:进程可用的虚拟内存空间
- 页面划分:将地址空间划分为固定大小的页面
- 段:程序通常分为正文段、数据段和堆栈段等
- 页面分配:每个段分配整数个页面,不能跨段使用页面
计算过程:
地址空间大小:65536字节
页面大小:512字节
页面数量:65536 ÷ 512 = 128个页面
各段所需页面数:
- 正文段:32768字节 ÷ 512字节/页 = 64页(刚好整除)
- 数据段:16386字节 ÷ 512字节/页 ≈ 32.0039页,向上取整为33页(因为不能跨段使用页面)
- 堆栈段:15870字节 ÷ 512字节/页 ≈ 30.996页,向上取整为31页(因为不能跨段使用页面)
总所需页面数:64 + 33 + 31 = 128页
比较:总所需页面数128页 = 可用页面数128页,因此程序能装入
20. 段页式存储管理汲取了页式管理和段式管理的长处,其实现原理结合了页式和段式管理的基本思想,即( A )
A、用分段方法来管理用户地址空间,用分页方法来管理物理存储空间
B、用分段方法来管理辅存空间,用分页方法来管理主存空间
C、用分段方法来管理物理存储空间,用分页方法来管理用户地址空间
D、用分段方法来管理主存空间,用分页方法来管理辅存空间
解析:
核心概念:
- 段页式存储管理:结合了段式和页式管理的优点,将程序按逻辑分段,每段再分页
- 用户地址空间管理:按段划分,符合用户的编程习惯
- 物理存储空间管理:按页划分,提高内存利用率
选项分析:
- A、用分段方法来管理用户地址空间,用分页方法来管理物理存储空间:正确。段页式管理中,用户地址空间按段划分,每段有自己的段表,段表中记录该段的页表起始地址;物理存储空间按页划分,通过页表实现虚拟页面到物理页面的映射。
- B、用分段方法来管理辅存空间,用分页方法来管理主存空间:错误。段页式管理是对用户地址空间和物理存储空间的管理,不是对辅存和主存的管理。
- C、用分段方法来管理物理存储空间,用分页方法来管理用户地址空间:错误。与段页式管理的实际实现相反。
- D、用分段方法来管理主存空间,用分页方法来管理辅存空间:错误。段页式管理是对地址空间的管理,不是对主存和辅存的管理。
21. 在页式存储管理系统中,页表内容如表所示(均从0开始编号)。
| 页号 | 块号 |
|---|---|
| 0 | 2 |
| 1 | 1 |
| 2 | 6 |
| 3 | 3 |
| 4 | 7 |
若页面大小为4KB,则地址变换机构将逻辑地址0转换成物理地址为(A)
A、8192
B、4096
C、2048
D、1024
解析:
核心概念:
- 页式存储管理:虚拟地址 = 页号 × 页面大小 + 页内偏移
- 物理地址计算:物理地址 = 块号 × 页面大小 + 页内偏移
- 页面大小:4KB = 4096字节
计算过程:
- 逻辑地址0的页号计算:0 ÷ 4096 = 0(商为页号)
- 页内偏移计算:0 % 4096 = 0(余数为页内偏移)
- 查页表:页号0对应的块号为2
- 物理地址 = 块号 × 页面大小 + 页内偏移 = 2 × 4096 + 0 = 8192
第六章 虚拟存储器
1. 虚存管理和实存管理的主要区别是(D)
A、虚存分逻辑地址和物理地址,实存不分
B、实存要求作业在内存必须连续,虚存不需要连续的内存
C、虚存以逻辑地址执行程序,实存以物理地址执行程序
D、实存要求作业全部装入内存才开始运行,虚存允许作业在执行的过程中逐步装入
解析:
核心概念:
- 虚存管理:基于虚拟存储技术,允许作业在执行过程中逐步装入内存
- 实存管理:传统的存储管理方式,要求作业全部装入内存后才能开始运行
选项分析:
- A、虚存分逻辑地址和物理地址,实存不分:错误。实存管理也区分逻辑地址和物理地址,只是实存要求作业全部装入内存
- B、实存要求作业在内存必须连续,虚存不需要连续的内存:错误。实存中的分页和分段管理也可以实现非连续内存分配
- C、虚存以逻辑地址执行程序,实存以物理地址执行程序:错误。所有程序都是以逻辑地址执行,需要通过地址变换转换为物理地址
- D、实存要求作业全部装入内存才开始运行,虚存允许作业在执行的过程中逐步装入:正确。这是虚存管理和实存管理的主要区别
2. 假设一个操作系统有48位的虚拟地址和32位的物理地址。假设页面大小是4KB,那么一个进程的页表里最多有(A)页表项
A、2的36次方
B、2的48次方
C、2的12次方
D、2的32次方
解析:
核心概念:
- 页面大小:4KB = 2^12字节
- 虚拟地址空间大小:2^48字节
- 页表项:一个页表项对应一个页面
- 页表项数量 = 虚拟地址空间大小 ÷ 页面大小
为什么要使用虚拟地址而不使用物理地址来计算?
- 页表的本质:页表是用于将虚拟地址映射到物理地址的转换表,每个虚拟页面在页表中都需要一个对应的页表项,记录该虚拟页面映射到的物理页框信息。
- 虚拟地址空间:决定了进程可以访问的虚拟页面总数,每个虚拟页面都需要一个页表项来管理映射关系。
- 物理地址空间:决定了实际可用的物理页框数量,但不影响虚拟页面的数量。即使物理页框不足,虚拟地址空间的大小仍然由操作系统设计决定。
- 分页机制的设计:分页机制的核心是管理虚拟地址到物理地址的映射,因此页表项数量必须与虚拟地址空间大小匹配,而不是与物理地址空间大小匹配。
- 虚拟内存的优势:通过虚拟地址空间与物理地址空间的分离,可以实现虚拟内存技术,允许进程使用比实际物理内存更大的地址空间。
计算过程:
- 页面大小 = 4KB = 2^12字节
- 虚拟地址空间大小 = 2^48字节
- 页表项数量 = 2^48 ÷ 2^12 = 2^(48-12) = 2^36个页表项
3. LRU页面调度算法选择调度出的页面是(A)
A、最久未被使用的
B、驻留时间最长的
C、驻留时间最短的
D、最近才使用的
解析:
核心概念:
- LRU(Least Recently Used):最近最少使用算法,选择最久未被使用的页面进行置换
- 页面调度算法:用于决定当需要调入新页面时,应该置换内存中的哪个页面
4. 段的逻辑地址形式是段号10位,段内地址20位,内存1MB,辅存10GB。那么虚拟存储器最大实际容量可能是(B)
A、10GB+1MB
B、1024MB
C、10GB
D、1024KB
解析:
核心概念:
- 虚拟地址空间大小:由段号位数和段内地址位数决定
- 最大实际容量:由虚拟地址空间大小和物理内存大小共同决定,取较小值
计算过程:
- 虚拟地址空间大小 = 2^10 × 2^20 = 2^30字节 = 1GB = 1024MB
- 物理内存大小 = 1MB
- 辅存大小 = 10GB
- 虚拟存储器最大实际容量 = min(虚拟地址空间大小, 物理内存大小 + 辅存大小) = min(1024MB, 1MB+10GB) = 1024MB
5. LRU置换算法所基于的思想是(C)
A、在最近的过去用得少的在最近的将来也用得少
B、在最近的过去用得多的在最近的将来也用得多
C、在最近的过去很久未使用的在最近的将来也不会使用
D、在最近的过去很久未使用的在最近的将来会使用
解析:
核心概念:
- LRU算法思想:基于局部性原理,认为最近使用的页面在不久的将来很可能被再次使用,而很久未使用的页面在不久的将来也不会使用
选项分析:
- A、在最近的过去用得少的在最近的将来也用得少:错误。LRU关注的是最近是否使用,不是使用频率
- B、在最近的过去用得多的在最近的将来也用得多:错误。LRU关注的是最近是否使用,不是使用频率
- C、在最近的过去很久未使用的在最近的将来也不会使用:正确。LRU算法的核心思想
- D、在最近的过去很久未使用的在最近的将来会使用:错误。与LRU算法思想相反
6. 系统“抖动”现象的发生可能是由(D)引起的
A、请求页式管理方案
B、CPU计算能力不足
C、内存进程数量太少
D、页面置换算法选择不当
解析:
核心概念:
- 抖动:系统频繁进行页面置换,导致CPU利用率急剧下降的现象
- 抖动原因:页面置换算法选择不当,导致频繁缺页中断
选项分析:
- A、请求页式管理方案:错误。请求页式管理本身不会导致抖动,只有当算法不当或内存不足时才会
- B、CPU计算能力不足:错误。抖动主要与内存管理有关,与CPU能力关系不大
- C、内存进程数量太少:错误。内存进程数量太多可能导致抖动,太少不会
- D、页面置换算法选择不当:正确。页面置换算法不当会导致频繁缺页,引发抖动
7. 虚拟内存的大小是由什么决定的?(D)
A、地址空间大小
B、磁盘大小
C、物理内存大小
D、磁盘大小和地址空间大小共同决定
解析:
核心概念:
- 虚拟内存:基于虚拟存储技术,将物理内存和磁盘结合使用
- 虚拟内存大小:受地址空间大小和磁盘大小的限制
为什么受地址空间大小和磁盘大小的限制:
- 地址空间大小限制:地址空间大小由CPU的地址总线位数决定(如32位CPU的地址空间为4GB)。
- win x64的含义:win x64是指64位Windows操作系统,它支持64位CPU架构(x86-64),但win x64本身并不直接代表CPU地址总线位数,而是操作系统对64位CPU的支持。
- CPU地址总线位数:地址总线是CPU与内存之间传输地址信息的总线,其位数决定了CPU能够直接寻址的内存空间大小。例如:
- 32位地址总线:最大寻址空间为2^32 = 4GB
- 64位CPU的地址总线:虽然x86-64架构支持64位虚拟地址,但实际CPU的物理地址总线位数通常小于64位(如早期x86-64 CPU为48位,现代CPU为52位),因此实际物理寻址空间为248或252字节,远小于理论上的2^64字节。
- 虚拟地址空间:64位操作系统通常支持48位虚拟地址(如Windows和Linux),对应虚拟地址空间为2^48 = 256TB,这是当前64位系统的常见配置。
虚拟内存的每个页面都需要一个虚拟地址,因此虚拟内存的最大可能大小不能超过CPU的地址空间大小。如果虚拟内存超过地址空间大小,CPU将无法寻址,导致无法访问超出部分的虚拟内存。
- 磁盘大小限制:虚拟内存的实现依赖于磁盘上的交换空间(swap space),当物理内存不足时,操作系统会将不常用的页面换出到磁盘的交换空间中。因此,虚拟内存的实际可用大小还受到磁盘交换空间大小的限制。如果磁盘交换空间不足,虚拟内存的扩容将受到限制。
- 物理内存的影响:物理内存大小影响虚拟内存的性能,但不直接决定虚拟内存的大小。更大的物理内存可以减少页面置换频率,提高系统性能,但虚拟内存的最大大小仍由地址空间和磁盘空间共同决定。
8. 在请求页式存储管理中,产生缺页中断是因为查找的页不在(D)中
A、虚存
B、地址空间
C、外存
D、内存
解析:
核心概念:
- 请求页式管理:按需调入页面,只有当访问的页面不在内存时才调入
- 缺页中断:当访问的页面不在内存时触发的中断
选项分析:
- A、虚存:错误。页面本身就在虚存中
- B、地址空间:错误。页面属于进程的地址空间
- C、外存:错误。缺页时页面通常在外存中,需要调入内存
- D、内存:正确。缺页中断的原因是页面不在内存中
9. 下面的存储管理方案中,只有_____________会使系统产生抖动(C)
A、分页存储
B、可变分区
C、请求分页存储
D、固定分区
解析:
核心概念:
- 抖动:频繁的页面置换导致系统性能下降
- 请求分页存储:按需调入页面,可能因页面置换算法不当导致抖动
选项分析:
- A、分页存储:错误。分页存储是基本的存储管理,不涉及按需调入
- B、可变分区:错误。可变分区是连续内存分配,不会产生抖动
- C、请求分页存储:正确。请求分页存储按需调入页面,可能因频繁缺页产生抖动
- D、固定分区:错误。固定分区是连续内存分配,不会产生抖动
10. 请求调页过程什么时候发生,哪个论述最精确?(C)
A、完成地址映射时
B、进程创建时
C、缺页中断时
D、程序载入时
解析:
核心概念:
- 请求调页:按需调入页面的过程
- 缺页中断:当访问的页面不在内存时触发,是请求调页的触发条件
选项分析:
- A、完成地址映射时:错误。地址映射是将逻辑地址转换为物理地址的过程
- B、进程创建时:错误。进程创建时通常只初始化页表,不调入页面
- C、缺页中断时:正确。缺页中断时会触发请求调页过程
- D、程序载入时:错误。程序载入时是传统存储管理的方式,不是请求调页
11. 在某请求分页管理系统中,一个进程共5页,进程执行时一次访问如下页面:2 3 2 1 5 2 4 5 3 2 5 2,若分配给该进程的页框数为3,采用FIFO页面置换算法,其缺页次数为(D)
A、6
B、8
C、7
D、9
解析:
核心概念:
- FIFO算法:先进先出页面置换算法,选择最早调入的页面进行置换
- 缺页次数:页面不在内存时的访问次数
计算过程:
访问序列:2 3 2 1 5 2 4 5 3 2 5 2
页框数:3
- 2 → 缺页,页框:[2] → 缺页次数=1
- 3 → 缺页,页框:[2,3] → 缺页次数=2
- 2 → 命中
- 1 → 缺页,页框:[2,3,1] → 缺页次数=3
- 5 → 缺页,置换最早的2,页框:[3,1,5] → 缺页次数=4
- 2 → 缺页,置换最早的3,页框:[1,5,2] → 缺页次数=5
- 4 → 缺页,置换最早的1,页框:[5,2,4] → 缺页次数=6
- 5 → 命中
- 3 → 缺页,置换最早的5,页框:[2,4,3] → 缺页次数=7
- 2 → 命中
- 5 → 缺页,置换最早的2,页框:[4,3,5] → 缺页次数=8
- 2 → 缺页,置换最早的4,页框:[3,5,2] → 缺页次数=9
12. 一个进程分配得到4个页框,装入时间和上次访问时间如下表。请问FIFO算法将置换的页面存放在第(A)页框中
| 页面 | 装入时间 | 上次访问时间 |
|---|---|---|
| 0 | 126 | 280 |
| 1 | 230 | 265 |
| 2 | 140 | 270 |
| 3 | 110 | 285 |
A、3
B、1
C、2
D、0
解析:
核心概念:
- FIFO算法:选择装入时间最早的页面进行置换
- 装入时间:页面被装入内存的时间
选项分析:
- 页面0装入时间:126
- 页面1装入时间:230
- 页面2装入时间:140
- 页面3装入时间:110
装入时间最早的是页面3(装入时间110),因此FIFO算法将置换页面3
13. 下列(C)页面淘汰算法会产生Belady现象
A、最不经常使用
B、最近最少使用
C、先进先出
D、最佳
解析:
核心概念:
- Belady现象:当页框数增加时,缺页次数反而增加的现象
- 产生原因:算法不符合栈式算法的特性
选项分析:
- A、最不经常使用(LFU, Least Frequently Used):错误。最不经常使用算法不会产生Belady现象
- B、最近最少使用(LRU, Least Recently Used):错误。最近最少使用算法不会产生Belady现象
- C、先进先出(FIFO, First IN First Out):正确。FIFO算法会产生Belady现象
- D、最佳(OPT, Optimal):错误。最佳算法不会产生Belady现象
14. Clock算法为什么被称为是clock算法(C)
A、时钟算法要放在时钟中断处理函数中
B、这是一个人名
C、算法的执行过程类似于在一个钟表上扫描
D、算法中存在一个定时器
解析:
核心概念:
- Clock算法:一种页面置换算法,也称为最近未使用(NRU)算法的改进版
- 算法原理:使用一个指针(类似时钟指针)在页表项或页框列表中循环扫描,根据页面的访问位决定是否置换
选项分析:
- A、时钟算法要放在时钟中断处理函数中:错误。Clock算法不是因为放在时钟中断处理函数中而得名
- B、这是一个人名:错误。Clock是描述算法执行过程的术语,不是人名
- C、算法的执行过程类似于在一个钟表上扫描:正确。Clock算法使用一个循环指针,像时钟指针一样扫描页表或页框,因此得名
- D、算法中存在一个定时器:错误。Clock算法中没有定时器,它基于访问位进行页面置换
15. 虚拟存储管理系统的基础是程序的(A)理论。
A、局部性
B、虚拟性
C、全局性
D、动态性
解析:
核心概念:
- 局部性原理:程序在执行过程中,往往会局部地访问内存中的某些区域
- 时间局部性:最近访问过的页面在不久的将来很可能被再次访问
- 空间局部性:程序访问的内存地址往往是连续的或相邻的
选项分析:
- A、局部性:正确。虚拟存储管理系统正是基于程序的局部性原理,只将当前需要的页面装入内存
- B、虚拟性:错误。虚拟性是虚拟存储的特性,不是基础理论
- C、全局性:错误。与虚拟存储管理无关
- D、动态性:错误。动态性是进程的特性,不是虚拟存储的基础
16. 实现虚存最主要的技术是进程的(A)。
A、部分对换
B、多道程序设计
C、整体对换
D、整体覆盖
解析:
核心概念:
- 虚拟存储:允许进程在执行过程中逐步装入内存,而不需要全部装入
- 部分对换:只将进程的部分页面在内存和外存之间进行交换
选项分析:
- A、部分对换:正确。虚存的核心是部分对换技术,只交换进程的部分页面
17. 系统颠簸是指(A)。
A、刚被调出的页面又立刻被调入所形成的频繁调入调出的现象
B、使用机器时,屏幕闪烁的现象
C、系统盘不净,系统不稳定的现象
D、由于内存分配不当,偶然造成内存不够的现象
解析:
核心概念:
- 系统颠簸(抖动):频繁的页面置换导致CPU利用率急剧下降的现象
- 产生原因:内存分配不足,进程工作集无法全部装入内存
选项分析:
- A、刚被调出的页面又立刻被调入所形成的频繁调入调出的现象:正确。这是系统颠簸的典型表现
- B、使用机器时,屏幕闪烁的现象:错误。屏幕闪烁与系统颠簸无关
- C、系统盘不净,系统不稳定的现象:错误。系统盘问题与系统颠簸无关
- D、由于内存分配不当,偶然造成内存不够的现象:错误。系统颠簸是频繁的页面置换,不是偶然的内存不足
18. 一个进程分配得到4个页框,装入时间和上次访问时间(和当前时间的间隔)如下表。请问LRU算法将置换的页面存放在第(C)页框中。
| 页面 | 装入时间 | 上次访问时间(间隔越大,越久未访问) |
|---|---|---|
| 0 | 126 | 280 |
| 1 | 230 | 265 |
| 2 | 140 | 270 |
| 3 | 110 | 285 |
A、2
B、1
C、3
D、0
解析:
核心概念:
- LRU算法:最近最少使用算法,选择上次访问时间最早的页面进行置换
- 上次访问时间:与当前时间的间隔,数值越大表示最近访问过
选项分析:
- 页面0距上次访问时间:280
- 页面1距上次访问时间:265
- 页面2距上次访问时间:270
- 页面3距上次访问时间:285
19. 在一个请求分页系统中,系统为某进程分配了4个物理块,考虑以下的页面8,1,3,6,9,8,6,1,7,0。若使用最佳置换算法,则访问页面9时淘汰页面(C)。
A、8
B、1
C、3
D、6
解析:
核心概念:
- 最佳置换算法(OPT):选择最远将来才会被访问或在后续序列中不再被使用的页面进行置换
- 页面访问序列:8,1,3,6,9,8,6,1,7,0
- 物理块分配:4个
置换过程:
- 访问页面8:物理块:[8] → 缺页
- 访问页面1:物理块:[8, 1] → 缺页
- 访问页面3:物理块:[8, 1, 3] → 缺页
- 访问页面6:物理块:[8, 1, 3, 6] → 缺页
- 访问页面9:需要置换一个页面
- 查看后续访问序列:8,6,1,7,0
- 页面8:将在第6次访问时被使用
- 页面1:将在第8次访问时被使用
- 页面3:在后续序列中不再被使用(最远将来)
- 页面6:将在第7次访问时被使用
- 因此,选择置换页面3
20. 请求分页存储管理中,若把页面大小增加一倍,则一般缺页中断次数(程序顺序执行)(A)。
A、减少
B、可能增加也可能减少
C、增加
D、不变
解析:
核心概念:
- 缺页中断:当程序访问的页面不在内存中时,会触发缺页中断,将页面从外存调入内存
- 页面大小:虚拟内存中,页面是内存和外存之间交换的基本单位
- 程序顺序执行:程序按照内存地址的顺序依次执行,具有良好的空间局部性(即当前访问的内存地址附近的地址很可能在不久后被访问)
为什么页面变大,缺页次数会减少?
想象一下:
- 假设程序需要访问100KB的连续内存空间
- 情况1:页面大小为1KB,那么需要100个页面,程序执行时会触发100次缺页中断(每次调入1KB)
- 情况2:页面大小增加到2KB,那么只需要50个页面,程序执行时只会触发50次缺页中断(每次调入2KB)
更详细的解释:
- 当页面大小增加一倍时,每个页面能容纳的内存内容也增加一倍
- 程序顺序执行时,一次调入的页面可以覆盖更多的后续访问需求
- 因此,需要的页面总数减少,缺页中断的次数也会相应减少
- 虽然页面变大可能会导致内碎片增加(每个页面未被使用的部分),但这与缺页中断次数无关
结论:
对于顺序执行的程序,页面越大,一次调入的内容越多,缺页中断次数越少
21. 一旦启动请求调页以后,下面哪个表会不断的发生变化?(B)
A、进程段表
B、进程页表
C、操作系统段表
D、操作系统页表
解析:
核心概念:
- 请求调页:在程序执行过程中,当访问到不在内存中的页面时,才将其调入内存
- 进程页表:记录进程虚拟页面到物理页框的映射关系
选项分析:
- A、进程段表:错误。段表用于分段存储管理,记录段的基址和长度,与请求调页无关
- B、进程页表:正确。请求调页过程中,会不断将页面调入调出内存,进程页表中的页表项会不断更新
- C、操作系统段表:错误。操作系统段表与用户进程的请求调页无关
- D、操作系统页表:错误。操作系统页表用于管理操作系统本身的内存,与用户进程的请求调页无关
22. 在某请求分页管理系统中,一个进程共5页,进程执行时一次访问如下页面:2 3 2 1 5 2 4 5 3 2 5 2,若分配给该进程的页框数为3,采用LRU页面置换算法,其页面置换次数为(B)。
A、3
B、4
C、5
D、6
解析:
核心概念:
- LRU算法:最近最少使用算法
- 页框数:3个
- 页面访问序列:2 3 2 1 5 2 4 5 3 2 5 2
置换过程:
(注意:页框列表中,最右边的页面是最近刚使用的,最左边的是最久未使用的)
访问页面2:
- 页框:[2] (只有1个页面,2是最近使用的)
- 缺页,0次置换
访问页面3:
- 页框:[2, 3] (3是最近使用的,2是较久未使用的)
- 缺页,0次置换
访问页面2:
- 页框:[3, 2] (访问2后,2变成最近使用的,3移到左边)
- 命中,0次置换
- 此时最近使用顺序:2 > 3
访问页面1:
- 页框:[3, 2, 1] (1是最近使用的)
- 缺页,0次置换
- 此时最近使用顺序:1 > 2 > 3
- 最久未使用的是3(在最左边)
访问页面5:需要置换
- 最近最少使用的是3(在最左边,最久未使用)
- 页框变为:[2, 1, 5] (5是最近使用的)
- 缺页,1次置换
访问页面2:
- 页框:[1, 5, 2] (访问2后,2变成最近使用的)
- 命中,1次置换
访问页面4:需要置换
- 最近最少使用的是1(在最左边)
- 页框变为:[5, 2, 4] (4是最近使用的)
- 缺页,2次置换
访问页面5:
- 页框:[2, 4, 5] (访问5后,5变成最近使用的)
- 命中,2次置换
访问页面3:需要置换
- 最近最少使用的是2(在最左边)
- 页框变为:[4, 5, 3] (3是最近使用的)
- 缺页,3次置换
访问页面2:需要置换
- 最近最少使用的是4(在最左边)
- 页框变为:[5, 3, 2] (2是最近使用的)
- 缺页,4次置换
访问页面5:
- 页框:[3, 2, 5] (访问5后,5变成最近使用的)
- 命中,4次置换
访问页面2:
- 页框:[3, 5, 2] (访问2后,2变成最近使用的)
- 命中,4次置换
总置换次数:4次
23. 在请求分页管理中,已修改过的页面再次装入时一般应来自(A)。
A、磁盘对换区
B、I/O缓冲区
C、后备作业区
D、磁盘文件区
解析:
核心概念:
- 已修改页面(脏页):在内存中被修改过但尚未写回外存的页面
- 磁盘对换区:用于存放进程在内存和外存之间交换的页面
- 磁盘文件区:用于存放程序的初始映像
选项分析:
- A、磁盘对换区:正确。已修改过的页面被调出内存时会写入磁盘对换区,再次装入时从对换区读取
- B、I/O缓冲区:错误。I/O缓冲区用于临时存放I/O数据,与页面置换无关
- C、后备作业区:错误。后备作业区用于存放等待调入内存的作业,不是页面置换的目标区域
- D、磁盘文件区:错误。磁盘文件区存放的是程序的初始映像,未修改的页面从这里调入,已修改的页面从对换区调入
24. 进程在执行中发生了缺页中断,经操作系统处理后,应让其执行(C)指令。
A、启动时的第一条
B、被中断的前一条
C、被中断的
D、被中断的后一条
解析:
核心概念:
- 缺页中断:当进程访问的页面不在内存中时,硬件发出的中断
- 中断处理过程:操作系统将缺失的页面调入内存,更新页表,然后返回到中断点继续执行
25. 在分页虚拟存储管理中,“二次机会”调度策略和“时钟”调度策略在决定淘汰哪一页时,都用到了(C)
A、虚实地址变换机构
B、快表
C、引用位
D、修改位
解析:
核心概念:
- “二次机会”调度策略:是一种改进的FIFO算法,为每个页面增加一个引用位,当需要淘汰页面时,检查引用位,如果为1则将其置0并给予第二次机会,否则淘汰
- “时钟”调度策略:是“二次机会”算法的变体,将页面组织成环形链表,用一个指针指向当前检查的页面,当需要淘汰页面时,检查引用位,若为1则置0并移动指针,否则淘汰
- 引用位:记录页面最近是否被访问过,用于页面置换算法
选项分析:
- A、虚实地址变换机构:用于将虚拟地址转换为物理地址,与页面置换算法无关
- B、快表:又称TLB,用于加速地址变换,与页面置换算法无关
- C、引用位:正确。“二次机会”和“时钟”调度策略都用到了引用位来决定是否淘汰页面
- D、修改位:用于记录页面是否被修改过,影响页面置换时是否需要写回磁盘,但不是这两种算法的核心判断依据
26. 下面关于虚拟存储管理的论述中,正确的是(A)
A、为了能让更多的进程同时运行,可以只装入10%-30%的进程映像,即启动运行
B、最佳页面置换算法是实现页式虚拟存储管理的常用算法
C、即使在多用户操作系统环境下,用户也可以运用机器指令访问任一合法的物理地址
D、为提高内存保护的灵活性,内存保护通常由软件完成
解析:
核心概念:
- 虚拟存储管理:基于局部性原理,允许进程在执行过程中逐步装入所需页面
- 页面置换算法:用于决定当需要调入新页面时,应该置换内存中的哪个页面
- 内存保护:确保进程只能访问自己的内存空间,防止越界访问
选项分析:
- A、为了能让更多的进程同时运行,可以只装入10%-30%的进程映像,即启动运行:正确。虚拟存储管理的核心思想是基于局部性原理,进程在执行时只需要装入部分页面即可运行,通常只需要装入10%-30%的进程映像。
- B、最佳页面置换算法是实现页式虚拟存储管理的常用算法:错误。最佳页面置换算法(OPT)是理论上最优的算法,但需要预测未来的页面访问情况,无法在实际系统中实现。实际系统中常用的是LRU、Clock等算法。
- C、即使在多用户操作系统环境下,用户也可以运用机器指令访问任一合法的物理地址:错误。在多用户操作系统中,为了保护内存安全,用户进程只能访问自己的虚拟地址空间,不能直接访问物理地址。
- D、为提高内存保护的灵活性,内存保护通常由软件完成:错误。内存保护主要由硬件(如MMU、页表中的权限位)完成,软件辅助实现,这样可以保证保护的有效性和性能。
第七章 输入/输出系统
1. 对于具备设备独立性的系统下列叙述中错误的是(B)
A、用户程序使用逻辑设备与物理设备之间的映射关系
B、更换物理设备后必须修改访问该设备的应用程序
C、可以使用文件名访问物理设备
D、用户程序中使用的是逻辑设备名
解析:
核心概念:
- 设备独立性:又称设备无关性,指应用程序与实际使用的物理设备无关,应用程序只需使用逻辑设备名,由操作系统负责将逻辑设备名映射到物理设备名。
2. 使用户所编写的程序与实际使用的物理设备无关,这是由设备管理的(D)功能实现的
A、缓冲管理
B、设备分配
C、虚拟设备
D、设备独立性
解析:
核心概念:
- 设备管理功能:包括缓冲管理、设备分配、设备独立性、虚拟设备等。
- 设备独立性:核心功能之一,实现程序与物理设备的无关性。
选项分析:
- A、缓冲管理:主要用于缓和CPU与I/O设备速度不匹配的矛盾,提高CPU和I/O设备的并行性。
- B、设备分配:将设备分配给进程,并管理设备使用情况。
- C、虚拟设备:通过SPOOLing技术将独占设备转换为共享设备。
- D、设备独立性:正确。实现程序与物理设备的无关性,是设备管理的核心功能之一。
3. 得到连续空间难的空闲空间管理方式是(A)
A、空闲链表
B、位示图
C、空闲表
D、成组链接
解析:
核心概念:
- 空闲空间管理方式:用于管理磁盘或内存的空闲空间,常见方式包括空闲链表、位示图、空闲表、成组链接等。
选项分析:
- A、空闲链表:将空闲块链接成链表,由于空闲块分布分散,难以找到连续的大空间。
- B、位示图:使用位表示块的空闲状态,容易找到连续的空闲块。
- C、空闲表:记录空闲块的起始地址和大小,便于查找连续空间。
- D、成组链接:结合了空闲链表和空闲表的优点,管理大型磁盘时效率较高,也容易找到连续空间。
4. 使用SPOOLing系统的目的是为了提高(C)的使用效率
A、CPU
B、内存
C、I/O设备
D、操作系统
解析:
核心概念:
- SPOOLing技术:假脱机输入输出技术,将独占设备转换为共享设备,提高I/O设备的利用率。
5. 每次移动到离现在位置最近的磁道的磁盘调度方法是(D)
A、FCFS
B、SCAN
C、LOOK
D、SSTF
解析:
核心概念:
- 磁盘调度算法:用于决定磁盘请求的处理顺序,常见算法包括FCFS、SSTF、SCAN、LOOK等。
- SSTF(Shortest Seek Time First):最短寻道时间优先算法,选择离当前磁头位置最近的磁道进行访问。
选项分析:
- A、FCFS:先来先服务,按请求顺序处理,不考虑磁头位置。
- B、SCAN:扫描算法,磁头在磁盘的一端到另一端移动,处理沿途的请求。
- C、LOOK:改进的SCAN算法,磁头只移动到最远的请求磁道,然后反向移动。
- D、SSTF:正确。每次选择离当前位置最近的磁道,减少寻道时间。
6. 假如一个文件系统的物理块大小是4KB,有一个文件的大小是245KB,请问需要给这个文件分配(B)个物理块
A、60
B、62
C、63
D、61
解析:
核心概念:
- 物理块分配:文件系统将文件分割成物理块存储,每个物理块的大小固定。
- 物理块数量计算:文件大小除以物理块大小,向上取整。
计算过程:
物理块大小 = 4KB
文件大小 = 245KB
所需物理块数量 = 245 ÷ 4 = 61.25,向上取整为62个物理块
7. 一个物理块的块号为143,则该块在位示图中的第(C)个字节中
A、17
B、19
C、18
D、16
解析:
核心概念:
- 位示图:使用位来表示块的空闲状态,每一位代表一个物理块。
- 字节计算:一个字节有8位,因此块号除以8,向上取整即为所在字节号。
计算过程:
块号 = 143
每字节位数 = 8
所在字节号 = 143 ÷ 8 = 17.875,向上取整为18(字节号从1开始计数)
8. 为提高操作系统自身的可适应性和可扩展性,现代操作系统通过引入和实现(B)的概念而实现了设备独立性
A、独占设备
B、逻辑设备
C、共享设备
D、循环缓冲
解析:
核心概念:
- 逻辑设备:与物理设备无关的设备名称,由操作系统负责映射到物理设备。
- 设备独立性:通过逻辑设备和物理设备的映射实现,提高系统的适应性和可扩展性。
选项分析:
- A、独占设备:一次只能被一个进程使用的设备,如打印机。
- B、逻辑设备:正确。引入逻辑设备概念,实现设备独立性,提高系统的适应性和可扩展性。
- C、共享设备:可以被多个进程同时使用的设备,如磁盘。
- D、循环缓冲:用于缓冲管理的一种数据结构,与设备独立性无关。
9. (D)是直接存取设备
A、打印机
B、键盘
C、磁带
D、磁盘
解析:
核心概念:
- 设备分类:按存取方式分为顺序存取设备和直接存取设备。
- 直接存取设备:可以直接访问任意位置的设备,如磁盘。
选项分析:
- A、打印机:输出设备,顺序工作,不是存取设备。
- B、键盘:输入设备,不是存取设备。
- C、磁带:顺序存取设备,必须按顺序访问。
- D、磁盘:正确。可以直接访问任意磁道和扇区,是直接存取设备。
11. Unix的UFS采用的空闲空间管理方法是(D)
A、空闲链表
B、空闲表
C、位示图
D、成组链接
解析:
核心概念:
- UFS(Unix File System):Unix系统的传统文件系统。
- 成组链接:UFS采用的空闲空间管理方法,将空闲块分成组,每组的第一个块记录下一组空闲块的信息,最后一组的第一个块指向空。
12. 为了缓和CPU和I/O设备间速度不匹配的矛盾,提高CPU和I/O设备的并行性,现代操作系统关于I/O设备与处理机之间的数据交换几乎都用到了(D)
A、对换区
B、工作集
C、临界区
D、缓冲区
解析:
核心概念:
- 缓冲区:用于在CPU和I/O设备之间暂存数据,缓和速度不匹配的矛盾,提高并行性。
选项分析:
- A、对换区:用于进程的换入换出,与I/O设备数据交换无关。
- B、工作集:进程在某段时间内频繁访问的页面集合,用于虚拟内存管理。
- C、临界区:进程中访问临界资源的代码段,用于进程同步。
- D、缓冲区:正确。几乎所有现代操作系统都使用缓冲区来提高I/O效率。
14. 在设备管理中,引入缓冲的主要原因不包括(C)
A、缓和处理器和外设之间访问速度不匹配的矛盾
B、减少对处理器的中断频率,放宽对处理器中断响应时间的限制
C、缓和处理器和内存之间访问速度不匹配的矛盾
D、提高处理器和外围设备之间的并行性
解析:
核心概念:
- 缓冲的作用:主要用于处理器和I/O设备之间的数据交换,减少I/O对CPU的影响。
选项分析:
- A、缓和处理器和外设之间访问速度不匹配的矛盾:缓冲的主要作用之一。
- B、减少对处理器的中断频率:通过缓冲区,可以批量处理I/O请求,减少中断次数。
- C、缓和处理器和内存之间访问速度不匹配的矛盾:处理器和内存之间的速度差异通常通过高速缓存(Cache)解决,不是缓冲的作用。
- D、提高处理器和外围设备之间的并行性:缓冲允许CPU和I/O设备并行工作,提高系统效率。
15. CPU处理器通过写(D)寄存器来控制设备操作
A、状态寄存器
B、数据输出寄存器
C、数据输入寄存器
D、控制寄存器
解析:
核心概念:
- 设备控制器寄存器:设备控制器通常包含多个寄存器,用于CPU与设备之间的通信。
- 控制寄存器:CPU通过向控制寄存器写入命令来控制设备操作。
选项分析:
- A、状态寄存器:用于存放设备的状态信息,CPU通过读取状态寄存器了解设备状态。
- B、数据输出寄存器:CPU向该寄存器写入要输出的数据。
- C、数据输入寄存器:设备向该寄存器写入要输入的数据,CPU读取该寄存器获取数据。
- D、控制寄存器:正确。CPU通过向控制寄存器写入命令来控制设备操作。
16. 存在忙等的I/O控制方式是(B)
A、中断
B、轮询
C、通道
D、DMA
解析:
核心概念:
- I/O控制方式:包括轮询、中断、DMA、通道等。
- 忙等:CPU不断检查设备状态,直到设备就绪,期间CPU无法执行其他任务。
选项分析:
- A、中断:设备就绪时向CPU发送中断信号,CPU不需要忙等。
- B、轮询:正确。CPU不断检查设备状态,存在忙等。
- C、通道:独立于CPU的I/O处理单元,不需要CPU忙等。
- D、DMA:直接内存访问,设备与内存直接交换数据,CPU只需初始化,不需要忙等。
17. 操作系统中的SPOOLing技术,实质是将(C)转化为共享设备名的技术
A、脱机设备
B、块设备
C、独占设备
D、虚拟设备
解析:
核心概念:
- SPOOLing技术:假脱机输入输出技术,通过在磁盘上建立缓冲区,将独占设备转换为共享设备。
- 独占设备:一次只能被一个进程使用的设备,如打印机。
选项分析:
- A、脱机设备:与SPOOLing技术的关系不大,SPOOLing是假脱机,不是真正的脱机。
- B、块设备:按块存取的设备,如磁盘,本身就是共享设备。
- C、独占设备:正确。SPOOLing的核心是将独占设备(如打印机)转换为共享设备。
- D、虚拟设备:SPOOLing的结果是创建虚拟设备,而不是将虚拟设备转换为共享设备。
18. 如果一个计算机的硬盘为64GB,每个块的大小为4KB,如果用位示图来管理硬盘的空间,则位示图的大小为(B)字节
A、16MB
B、2MB
C、32MB
D、1MB
解析:
核心概念:
- 位示图:使用位来表示块的空闲状态,每一位代表一个物理块。
- 位示图大小计算:位示图的大小 = 磁盘块数 ÷ 8(每字节8位)
计算过程:
硬盘大小 = 64GB = 64 × 1024MB = 64 × 1024 × 1024KB
块大小 = 4KB
磁盘块数 = 64GB ÷ 4KB = 64 × 1024 × 1024 ÷ 4 = 16,777,216块
位示图大小 = 16,777,216 ÷ 8 = 2,097,152字节 = 2MB
19. 程序员利用系统调用打开I/O设备时,通常使用的设备标识是(B)
A、物理设备名
B、逻辑设备名
C、从设备号
D、主设备号
解析:
核心概念:
- 设备标识:在系统调用中,通常使用逻辑设备名来标识设备,而不是物理设备名。
- 逻辑设备名:与具体物理设备无关的设备名称,由操作系统负责映射到物理设备。
选项分析:
- A、物理设备名:直接标识具体物理设备,如"/dev/sda1",但系统调用通常使用逻辑设备名。
- B、逻辑设备名:正确。系统调用中使用逻辑设备名,由操作系统处理物理映射。
- C、从设备号:用于标识同一类设备中的具体设备,如同一控制器下的多个磁盘。
- D、主设备号:用于标识设备类型,如硬盘、打印机等。
20. 为解决由于通道不足所造成的瓶颈问题,可采取(D)技术
A、字节多路通道
B、数组多路通道
C、数组选择通道
D、多通路
解析:
核心概念:
- 通道:设备到主机之间的通路
- 通道瓶颈:当I/O设备数量增加时,通道数量不足会成为系统瓶颈。
- 多通路技术:通过增加设备到主机之间的通路数,解决通道不足的问题。
选项分析:
- A、字节多路通道:用于连接多个低速设备,不是解决通道不足的技术。
- B、数组多路通道:用于连接多个高速设备,不是解决通道不足的技术。
- C、数组选择通道:用于连接高速设备,一次只能处理一个I/O请求,不是解决通道不足的技术。
- D、多通路:正确。多通路技术通过增加设备到主机之间的通路数,解决通道不足的瓶颈问题。
21. 系统利用SPOOLING技术实现(A)
A、虚拟设备
B、系统调用
C、对换手段
D、虚拟存储
解析:
核心概念:
- SPOOLing技术:假脱机输入输出技术,将独占设备转换为虚拟设备。
- 虚拟设备:通过SPOOLing技术,将一台物理设备虚拟化为多台逻辑设备,允许多个进程同时使用。
选项分析:
- A、虚拟设备:正确。SPOOLing的主要作用是实现虚拟设备。
- B、系统调用:与SPOOLing技术无关,系统调用是用户程序请求操作系统服务的接口。
- C、对换手段:用于内存管理,与SPOOLing技术无关。
- D、虚拟存储:用于内存管理,与SPOOLing技术无关。
22. 操作系统采用缓冲技术,能够减少对CPU的(D)次数,从而提高资源的利用率
A、访问
B、依赖
C、控制
D、中断
解析:
核心概念:
- 缓冲技术:在CPU和I/O设备之间设置缓冲区,减少I/O对CPU的影响。
- 中断次数减少:通过缓冲区,CPU可以批量处理I/O数据,减少I/O中断次数。
选项分析:
- A、访问:缓冲技术不会减少CPU对设备的访问,而是减少访问频率。
- B、依赖:缓冲技术减少了CPU对I/O设备的依赖,但不是直接减少依赖次数。
- C、控制:缓冲技术不减少CPU对设备的控制,而是优化控制方式。
- D、中断:正确。缓冲技术通过批量处理I/O数据,显著减少I/O中断次数。
23. 从设备到本地缓冲之间传输数据由(C)完成
A、CPU
B、内存
C、I/O控制器
D、设备机械装置
解析:
核心概念:
- 数据传输:从设备到本地缓冲的数据传输由I/O控制器完成,不需要CPU干预。
- I/O控制器:负责管理设备的I/O操作,包括数据传输、状态检测等。
选项分析:
- A、CPU:CPU负责初始化I/O操作,但数据传输过程由I/O控制器完成。
- B、内存:内存是数据的目的地,不是数据传输的执行者。
- C、I/O控制器:正确。I/O控制器负责设备到本地缓冲的数据传输。
- D、设备机械装置:设备机械装置负责设备的物理操作,如磁盘的旋转、磁头移动等,不是数据传输的执行者。
24. 系统总是访问磁盘的某个磁道而不响应对其他磁道的访问请求,这种现象称为磁臂粘着。下列磁盘调度算法中,不会导致磁臂粘着的是(A)
A、先来先服务(FCFS)
B、最短寻道时间优先(SSTF)
C、扫描算法(SCAN)
D、循环扫描算法(CSCAN)
解析:
核心概念:
- 磁臂粘着:磁盘调度算法偏向某些磁道,导致其他磁道的请求长期得不到响应。
- FCFS算法:先来先服务,按请求顺序处理,不会出现磁臂粘着现象。
选项分析:
- A、先来先服务(FCFS):正确。FCFS按请求顺序处理,不会偏向任何磁道,因此不会导致磁臂粘着。
- B、最短寻道时间优先(SSTF):可能导致磁臂粘着,因为它总是选择离当前位置最近的磁道,可能忽略其他磁道的请求。
- C、扫描算法(SCAN):可能导致磁臂粘着,在高负载下可能出现"饥饿"现象。
- D、循环扫描算法(CSCAN):可能导致磁臂粘着,同样可能出现"饥饿"现象。
25. 在现代操作系统中采用缓冲技术的主要目的是(C)
A、实现与设备无关性
B、改善用户编程环境
C、提高CPU和设备之间的并行程度
D、提高CPU的处理速度
解析:
核心概念:
- 缓冲技术的目的:主要是提高CPU和I/O设备之间的并行程度,减少CPU的等待时间。
- 并行程度提高:CPU可以在I/O设备传输数据的同时执行其他任务,提高系统整体效率。
26. 现代操作系统中实现了设备独立性,用户程序通过(B)访问I/O设备
A、物理设备
B、逻辑设备
C、虚拟设备
D、共享设备
解析:
核心概念:
- 设备独立性:用户程序与具体物理设备无关,通过逻辑设备名访问设备。
- 逻辑设备名:由操作系统负责映射到物理设备,实现设备独立性。
选项分析:
- A、物理设备:直接访问物理设备会导致设备依赖性,不符合设备独立性。
- B、逻辑设备:正确。用户程序通过逻辑设备名访问设备,实现设备独立性。
- C、虚拟设备:虚拟设备是通过SPOOLing技术实现的,不是设备独立性的直接实现方式。
- D、共享设备:共享设备是设备的一种类型,与设备独立性无关。
27. 磁带机属于(B)设备
A、直接存取
B、顺序存取
C、链接存取
D、随机存取
解析:
核心概念:
- 设备分类:按存取方式分为顺序存取设备和直接存取设备。
- 顺序存取设备:必须按顺序访问数据,如磁带机。
选项分析:
- A、直接存取:可以直接访问任意位置的数据,如磁盘。
- B、顺序存取:正确。磁带机必须按顺序访问数据,属于顺序存取设备。
- C、链接存取:不是设备的存取方式分类。
- D、随机存取:可以随机访问任意位置的数据,如内存。
28. 控制设备工作的物理部件是(B)
A、CPU
B、设备控制器
C、内存
D、总线
29. 可以使得磁头改变移动方向的次数减少的磁盘调度算法是(B)
A、RAID
B、SCAN
C、SSTF
D、FCFS
解析:
核心概念:
- 磁头移动方向:磁盘调度算法影响磁头的移动方向改变次数。
- SCAN算法:扫描算法,磁头在磁盘的一端到另一端移动,处理沿途的请求,然后反向移动,减少了磁头改变方向的次数。
选项分析:
- A、RAID:磁盘冗余阵列,不是磁盘调度算法。
- B、SCAN:正确。SCAN算法磁头单向移动,处理完一端的请求后才反向,减少方向改变次数。
- C、SSTF:最短寻道时间优先,磁头可能频繁改变方向。
- D、FCFS:先来先服务,磁头移动方向完全取决于请求顺序,可能频繁改变方向。
30. 低速设备一般设置成独占设备,可用作独占设备的有(C)
A、可擦写光盘
B、U盘
C、扫描仪
D、磁盘
解析:
核心概念:
- 独占设备:一次只能被一个进程使用的设备,如打印机、扫描仪等。
- 低速设备:数据传输速率低的设备,通常设置为独占设备,避免多个进程竞争导致性能下降。
选项分析:
- A、可擦写光盘:通常作为共享设备使用,允许多个进程访问。
- B、U盘:通常作为共享设备使用,允许多个进程访问。
- C、扫描仪:正确。扫描仪是低速设备,通常设置为独占设备。
- D、磁盘:高速设备,通常作为共享设备使用。
31. 关于I/O控制方式,(C)控制方式使对I/O操作的组织和数据的传送最大限度地独立运行而无须处理机的干预
A、直接存储器访问I/O
B、中断驱动I/O
C、I/O通道
D、程序I/O
解析:
核心概念:
- I/O控制方式:包括程序I/O、中断驱动I/O、DMA、I/O通道等。
- I/O通道:独立于CPU的I/O处理单元,可以执行通道程序,管理I/O操作,几乎不需要CPU干预。
选项分析:
- A、直接存储器访问I/O:DMA需要CPU初始化,数据传输过程不需要CPU干预,但I/O操作的组织仍需要CPU参与。
- B、中断驱动I/O:需要CPU处理中断,干预较多。
- C、I/O通道:正确。I/O通道可以独立执行通道程序,管理I/O操作,最大限度地减少CPU干预。
- D、程序I/O:需要CPU不断轮询设备状态,干预最多。
32. 在下面的I/O控制方式中,需要CPU干预最少的方式是(B)
A、DMA
B、SPOOLING
C、中断
D、轮询
解析:
核心概念:
- CPU干预程度:不同I/O控制方式的CPU干预程度不同。
- SPOOLING技术:通过在磁盘上建立缓冲区,将独占设备转换为共享设备,CPU干预最少。
选项分析:
- A、DMA:需要CPU初始化,数据传输过程不需要CPU干预,但干预程度比SPOOLING高。
- B、SPOOLING:正确。SPOOLING通过磁盘缓冲区实现I/O操作,CPU只需处理少量的请求,干预最少。
- C、中断:需要CPU处理中断,干预较多。
- D、轮询:需要CPU不断检查设备状态,干预最多。
33. 利用DMA实现了(D)之间数据的快速传输
A、内存和CPU
B、CPU和外设
C、外设和外设
D、内存和外设
解析:
核心概念:
- DMA(Direct Memory Access):直接内存访问,允许设备与内存直接交换数据,不需要CPU干预。
- DMA的作用:实现内存和外设之间的高速数据传输,减少CPU的负担。
选项分析:
- A、内存和CPU:内存和CPU之间的数据传输通过总线直接进行,不需要DMA。
- B、CPU和外设:CPU和外设之间的数据传输通常通过内存中转,DMA不直接实现CPU和外设之间的传输。
- C、外设和外设:外设之间的数据传输通常需要CPU或特殊硬件支持,DMA主要用于内存和外设之间。
- D、内存和外设:正确。DMA的核心功能是实现内存和外设之间的高速数据传输。
34. 一个文件存放在第52个物理块开头的10个物理块中,每个物理块大小是2KB。请问文件中偏移为15KB位置处的数据在第(C)个物理块中
A、52
B、56
C、59
D、60
解析:
核心概念:
- 文件偏移:文件中数据的位置,从文件开头计算。
- 物理块计算:文件偏移除以物理块大小,得到所在物理块号,加上起始物理块号即为实际物理块号。
计算过程:
起始物理块号 = 52
每个物理块大小 = 2KB
文件偏移 = 15KB
所在相对块号 = 15 ÷ 2 = 7.5,向上取整为7(因为0-2KB在第0块,2-4KB在第1块,...,14-16KB在第7块)
实际物理块号 = 52 + 7 = 59
第八章 文件管理
1. 一个文件的大小为512MB,假如物理块大小为4KB。那么,这个文件要采用(A)级索引(每个索引项4个字节)。
A、2
B、1
C、3
D、4
解析:
核心概念:
- 多级索引:文件系统中用于管理大文件的索引方式,通过多级索引表扩展文件的管理能力
- 索引项大小:每个索引项占用的字节数,决定了一个物理块能存储的索引项数量
计算过程:
- 总块数计算:文件大小 ÷ 物理块大小 = 512MB ÷ 4KB = (512 × 1024 × 1024) ÷ (4 × 1024) = 131,072块
- 一级索引管理块数:一个物理块可存储索引项数 = 4KB ÷ 4字节 = 1024项,因此一级索引可管理1024块
- 二级索引管理块数:1024 × 1024 = 1,048,576块
- 三级索引管理块数:1024 × 1024 × 1024 = 1,073,741,824块
由于总块数131,072块大于一级索引的1,024块,小于二级索引的1,048,576块,因此需要采用二级索引。
3. 假如链接表在内存。在显式链接分配中,要读入一个文件的第16块(块号从0开始),一共需要读入(A)个物理块。
A、1
B、16
C、0
D、17
解析:
核心概念:
- 显式链接分配:文件的每个块中包含指向下一个块的指针,文件控制块(FCB)中包含第一个块的块号
- 链接表在内存:文件的所有块的链接信息都存储在内存中,不需要读取物理块来获取下一个块的信息
选项分析:
- 在显式链接分配中,通常需要读取前n-1个块才能获取第n个块的块号
- 但题目中明确说明链接表在内存,因此可以直接从内存中的链接表获取第16块的块号,只需要读入第16块一个物理块
4. 一个磁盘大小为1TB,假如采用FAT32文件系统,物理块大小为16KB。那么,这个文件系统的FAT表大小约为(B)。
A、128MB
B、256MB
C、512MB
D、64MB
解析:
核心概念:
- FAT32文件系统:使用文件分配表(FAT File Allocation Table,FAT)来管理磁盘空间。
- FAT表:FAT表记录文件的块分配情况,每个表项为32位(4字节),记录下一个块的物理地址。
- FAT表大小计算:FAT表的大小 = 磁盘块数 × 表项大小。
计算过程:
- 总块数计算:磁盘大小 ÷ 物理块大小 = 1TB ÷ 16KB = (1 × 1024^4) ÷ (16 × 1024) = 1/16 × 1024^3 块
- FAT表大小计算:总块数 × 每个FAT表项大小 = 1/16 × 1024^3 块 × 4字节/项 = 1/4 × 1024^3 字节 = 1/4 × 1GB = 256MB