aliases: []
什么是操作系统?操作系统在计算机系统中的主要作用是什么?
解:「操作系统」是管理系统资源、控制程序运行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户方便有效地使用计算机提供良好运行环境的一种系统软件。
操作系统的作用主要有,服务用户,进程交互,系统实现,资源管理
什么是多道程序设计?多道程序设计有哪些特点?
解:
允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法称为「多道程序设计」
什么是操作系统内核?解释单内核操作系统与微内核操作系统的区别及其优缺点
解:
「内核」是作为核心软件来提供支持进程并发执行的基本功能和基本操作的一组程序模块。
单内核将内核从整体上作为一个大进程实现,并同时运行在一个单独的地址空间。优点是效率高。缺点是稳定性差,开发过程中的 bug 经常会导致整个系统挂掉。
「微内核」中只有最基本的调度、内存管理。驱动、文件系统等都是用户态的守护进程去实现的。
功能被划分为独立的进程,进程间通过 ipc 进行通信。模块化程度高,一个服务失效不会影响另外一个服务。但编程较为困难
试述操作系统资源管理的主要技术:资源复用、资源虚拟和资源抽象。
解:
「资源复用」用于解决物理资源数量不足。主要有空分复用共享和时分复用共享两种方式。「空分复用共享」指资源分割成多个更小的分配单元,供进程使用。「时分复用共享」指资源以整体为分配单元,在一个时段内供一个进程独占使用。
「资源虚拟」用于解决物理资源数量不足,提高服务的能力和水平。可将物理上的一个资源变成逻辑上的多个对应物,或物理上多个变成逻辑上一个。
「资源抽象」用于处理系统的复杂性,重点解决资源的易用性。资源抽象指通过创建软件来屏蔽硬件资源的物理特性和借口细节,简化对硬件资源的操作、控制和使用的一类技术。资源抽象包括了单级资源抽象与多级资源抽象
某计算机系统有一台输入机一台打印机,现有两道程序投入运行,且程序 A 开始运行,程序 B 后开始运行。程序 A 的运行轨迹为计算 50 ms,打印 100ms,再计算 50 ms,打印 100ms,结束。程序 B 的运行轨迹为计算 50 ms,输入 80 ms,再计算 100 ms,结束。试说明:
解:
第一题:存在等待。若以程序 A 开始时刻为 0 时刻,则 100 ms 时刻时,程序 A 已经结束了计算,并且正在打印,而程序 B 也结束了计算,正在输入,此时 A 和 B 都没有使用 CPU,因此出现空闲等待,持续时间为 100ms~150 ms
第二题:程序 B 存在等待。
某计算机拥有单 CPU 和两台 I/O 设备
如果 CPU,
解:
做出时序图可得
第一题:由图可得
第二题:由图可得 CPU 利用率为
第三题,
为什么将机器指令分成特权指令和非特权指令
解:主要有以下几个理由
为什么说操作系统是由中断驱动的?试述中断在操作系统中的作用
解:
操作系统的行为和执行是通过中断事件的发生来驱动和响应的,主要作用有:
进程最基本的状态有哪些?哪些进程可能引起不同状态间的转换?
解:基本状态有三种:运行,就绪,等待。状态转换包括
什么是内核级线程?什么是用户级线程?什么是混合式线程?试对它们进行比较
解:
对比
在下列指令中,哪些只能在内核态运行?
解:陷入指令、设置时钟日期、加载 PSW、置特殊寄存器、启动 I/O 指令
现有 5 个批处理作业
解:
时间片轮转调度算法,没给出具体时间片长度,假设为 2min,则 A,B,C,D,E 的等待时间分别为 0,8,14,18,20,周转时间分别为 2,12,20,26,30
优先数调度算法,则执行顺序为 EDCBA,此时 A,B,C,D,E 的等待时间分别为 28,24,18,10,0,周转时间分别为 30,28,24,18,10
最短作业优先调度优先算法,则执行顺序为 ABCDE,此时 A,B,C,D,E 的等待时间分别为 0,2,6,12,20,周转时间分别为 2,6,12,20,30
先来先服务算法,则执行顺序为 CDBEA,此时 A,B,C,D,E 的等待时间分别为 28,14,0,6,18,周转时间分别为 30,18,6,14,28
在一个只支持三道程序同时运行的多道程序系统中,作业调度采用最短作业优先调度算法,进程调度采用以优先数为基础的抢占式调度算法。在下表所示的作业序列中,优先数即为进程优先数,优先数越小则优先级越高
作业名 | 到达时间 | 估计运行时间(min) | 优先数 |
---|---|---|---|
A | 10:00 | 40 | 5 |
B | 10:20 | 30 | 3 |
C | 10:30 | 60 | 4 |
D | 10:50 | 20 | 6 |
E | 11:00 | 20 | 4 |
F | 11:10 | 10 | 4 |
试填写下表
解:
思路:作业调度表述的是进入就绪队列时的次序,而进程调度是处理器在“并行”执行任务时的偏好
作业名 | 进入内存时间 | 运行结束时间 | 作业周转时间 |
---|---|---|---|
A | 10:00 | 12:40 | 160 |
B | 10:20 | 10:50 | 30 |
C | 10:30 | 11:50 | 80 |
D | 10:50 | 13:00 | 130 |
E | 12:00 | 12:20 | 80 |
F | 11:50 | 12:00 | 50 |
平均作业周转时间为
什么是逻辑地址,什么是物理地址?
解:
「逻辑地址」是用户编程序时所用的地址,物理地址是操作系统为了对物理内存进行管理,把内存分成若干个大小相等的存储单元,对应的编号。
什么是虚拟存储器?列举采用虚拟存储技术的必要性和可行性
解:
虚拟存储器是指在具有层次结构存储器的计算机系统中,采用自动实现部分装入和部分对换功能,为用户提供一个比物理内存容量大得多的,可寻址的一种“内存储器”。
试述页式虚拟存储管理的实现原理
解:
页式虚拟存储管理是一种常见的虚拟存储管理技术,其实现原理基于将物理内存和磁盘空间划分为固定大小的页(page),通常大小为 4KB 或者更大。每个进程都有自己的页表(page table),用于将虚拟地址映射到物理地址。下面是页式虚拟存储管理的实现原理:
在可变分区存储管理下,按地址排序的内存空闲区大小依次为 10 KB,4 KB,20 KB,18 KB,7 KB,9 KB,12 KB,15 KB。依次考虑一下两个连续存储区的请求序列
问分别使用最先适配算法、最优适配算法、最坏适配算法如下次适配算法,哪些空闲区将被使用
解:
第一种情况
第二种情况
一个页式虚拟存储管理系统中的用户空间为 1024KB,页面大小为 4KB,内存空间为 512KB。已知用户的 10、11、12、13 号虚页分得的内存页框号为 62,78,25,36,试将逻辑地址 0BEBCH 转换为对应的物理地址(以十六进制表示)
解:
首先逻辑地址为 0000 1011 1110 1011 1100
,由于页面大小为 4KB,因此低 12 位为页内偏移,高 8 位为页标号。页标号为 1011
即 11,因此分配到 78
页,得到的物理地址为0100 1110 1110 1011 1100
在一个页式虚拟存储管理系统中,一个程序运行的页面走向是 1-2-3-4-2-1-5-6-2-1-2-3-7-6-3-2-1-2-3-6,分别使用 FIFO,OPT,和 LRU 页面调度算法,对于分配给程序 3 个,4 个,5 个和 6 个页框的情况,求出访问过程中所发生的缺页中断次数和缺页中断率
解:
使用 FIFO,3 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 4 | 4 | 4 | 4 | 6 | 6 | 6 | 6 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 6 |
2 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 7 | 7 | 7 | 7 | 1 | 1 | 1 | 1 | |
3 | 3 | 3 | 3 | 5 | 5 | 5 | 1 | 1 | 1 | 1 | 6 | 6 | 6 | 6 | 6 | 3 | 3 |
缺页中断发生 15 次,缺页中断率为
使用 FIFO,4 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 |
2 | 2 | 2 | 2 | 2 | 2 | 6 | 6 | 6 | 6 | 6 | 7 | 7 | 7 | 7 | 7 | 7 | 3 | 3 | |
3 | 3 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
缺页中断发生 13 次,缺页中断率为
使用 FIFO,5 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | |||
5 | 5 | 5 | 5 | 5 | 5 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 |
缺页中断发生 10 次,缺页中断率为
使用 FIFO,6 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | 3 | |||
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | ||||||
6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
缺页中断发生 10 次,缺页中断率为
使用 OPT,3 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 6 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 7 | 7 | 7 | 2 | 2 | 2 | 2 | 2 | |
3 | 4 | 4 | 4 | 5 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 1 | 1 | 1 | 1 |
缺页中断发生 10 次,缺页中断率为
使用 OPT,4 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 7 | 7 | 7 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
4 | 4 | 4 | 5 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
缺页中断发生 8 次,缺页中断率为
使用 OPT,5 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | |||
5 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
缺页中断发生 7 次,缺页中断率为
使用 OPT,6 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | |||
5 | 5 | 5 | 5 | 5 | 5 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | ||||||
6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
缺页中断发生 7 次,缺页中断率为
使用 LRU,3 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 4 | 4 | 4 | 5 | 5 | 5 | 1 | 1 | 1 | 7 | 7 | 7 | 2 | 2 | 2 | 2 | 2 |
2 | 2 | 2 | 2 | 2 | 2 | 6 | 6 | 6 | 6 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | |
3 | 3 | 3 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 6 | 6 | 6 | 1 | 1 | 1 | 6 |
缺页中断发生 15 次,缺页中断率为
使用 LRU,4 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
3 | 3 | 3 | 3 | 5 | 5 | 5 | 5 | 5 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
4 | 4 | 4 | 4 | 6 | 6 | 6 | 6 | 6 | 7 | 7 | 7 | 7 | 1 | 1 | 1 | 1 |
缺页中断发生 10 次,缺页中断率为
使用 LRU,5 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
3 | 3 | 3 | 3 | 3 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | |||
5 | 5 | 5 | 5 | 5 | 5 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 |
缺页中断发生 8 次,缺页中断率为
使用 LRU,6 个页框
1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | |||
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | ||||||
6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
缺页中断发生 7 次,缺页中断率为
在一个页式虚拟存储管理系统中,进程访问地址的序列为 10-11-104-170-72-305-180-240-244-445-467-366,问:
解:直接对 100 取模,得到页面序列为
0-0-1-1-0-3-1-2-2-4-4-3
若使用 FIFO,则
0 | 0 | 1 | 1 | 0 | 3 | 1 | 2 | 2 | 4 | 4 | 3 |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | ||
3 | 3 | 3 | 3 | 3 | 3 | 3 |
缺页次数为 5,中断率为
若使用 LRU,则
0 | 0 | 1 | 1 | 0 | 3 | 1 | 2 | 2 | 4 | 4 | 3 |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | ||
3 | 3 | 3 | 3 | 4 | 4 | 4 |
缺页次数为 6,中断率为
为什么要引入缓冲技术,其基本思想是什么
解:
引入缓冲技术是为了提高系统性能和资源利用率,解决由于设备速度差异和数据传输异步性引起的效率低下和资源浪费问题。
缓冲技术的基本思想是在数据传输的过程中,使用一个临时存储区域(缓冲区)来调节数据生产者和消费者之间的速度差异,实现数据的异步传输,提高系统的吞吐量和响应速度。
为什么要引入设备独立性?如何实现设备独立性。
解
设备分配时的灵活性。当进程以逻辑设备名请求某类设备时,如果一台设备已经分配给其它进程或正在检修,此时系统可以将其它几台相同的空闲设备中的任一台分配给该进程,只有当此类设备全部被分配完时,进程才会被阻塞。
易于实现 I/O 重定向。用于 I/O 操作的设备可以更换,重定向即而不必改变应用程序。
为了实现设备的独立性,必须在驱动程序之上设置一层软件,称为设备独立性软件,其主要功能有以下两个方面:
为了实现逻辑设备名到物理设备名的映射,系统必须设置一张设备逻辑表 LUT(Logical Unit Table),能够将应用程序中所使用的逻辑设备名映射为物理设备名,并提供该设备驱动程序的入口地址。
什么是虚拟设备?实现虚拟设备的主要条件是什么?
虚拟设备是指通过高速的共享设备,把一台慢速的以独占方式工作的物理设备改造成若干台虚拟的同类逻辑设备,可以通过 SPOOLing 技术实现。
实现条件:
SPOOLing 系统是如何将独占性设备改造成共享型设备的?
解:
SPOOLing 系统通过引入缓冲区和后台处理机制,将独占性设备改造成共享型设备。
当用户或进程需要使用独占性设备时,其操作请求被操作系统截获,并写入 SPOOLing 缓冲区,操作系统将这些请求按照预定的调度策略排队,确保请求的有序处理。一个专门的后台进程不断监控 SPOOLing 缓冲区,从中提取排队的操作请求,并将请求发送到独占性设备进行实际处理。独占性设备逐个处理从 SPOOLing 缓冲区提取的操作请求,完成后后台进程更新请求状态,并继续处理下一个请求。
若磁头当前位于第 100 号柱面,且正向柱面号增加的方向移动。现有磁盘读写请求队列,柱面号依次为 23,376,205,132,19,61,190,398,29,4,18,40,若采用先来先服务算法,最短查找时间优先算法和双向扫描算法,试计算出各种算法中移动臂所经过的柱面数。
解:
先来先服务,则为柱面号做差分后的绝对值求和。
若为最短查找时间优先算法,顺序为 132, 190, 205, 61, 40, 29, 23, 19, 18, 4, 376, 398
双向扫描算法,顺序为 132, 190, 205, 376, 398, 61, 40, 29, 23, 19, 18, 4
试述并发程序设计的特点以及采用并发程序设计的优缺点
解:
特点:
优点:
缺点
试述产生死锁的必要条件
列举死锁的各种防止策略
解:预防死锁,只需要破坏 4 个条件之一
设有
试问:以上两种情况下所采取的信号量和值是否相同?试给出信号量值的变化范围
解:
显然不同。
因此第一种情况信号量取值为
有一个阅览室,读者进入时必须先在一张登记表上登记,此表为每个座位列出一个条目,包括座位号、姓名、读者离开时要注销登记信息,假如共有 100 个座位,试用:
来实现用户进程的同步算法
解:设计信号量法
semaphore empty = 100;// 记录空座位
semaphore mutex = 1;// 作为互斥的访问登记和注销操作
void reader()
{
while(true)
{
P(empty);
P(mutex);
// 登记
V(mutex);
// 阅读
P(mutex);
// 注销
V(mutex);
V(empty);
}
}
若用管程来实现
管程 ReadingRoom {
int availableSeats = 100; // 可用座位数
条件变量 seatsAvailable; // 条件变量,用于控制座位的可用性
进入阅览室() {
if (availableSeats == 0) wait(seatsAvailable);
availableSeats -= 1;
登记姓名和座位号到登记表;
}
离开阅览室() {
availableSeats += 1;
从登记表中注销姓名和座位号;
signal(seatsAvailable); // 通知其他正在等待的读者
}
}
使用管程时
ReadingRoom room; // 实例化管程
room.进入阅览室(); // 读者进入阅览室并登记
...(读者在阅览室停留)
room.离开阅览室(); // 读者离开阅览室并注销登记
桌上有一只盒子,最多可以容纳两个水果,每次只能放入或取出一个水果,爸爸向盘子中放苹果,妈妈向盘子中放橘子,两个儿子专等吃盘子里的橘子,两个女儿专等吃盘子里的苹果。试用:
实现爸爸、妈妈、女儿、儿子之间的同步与互斥关系
解:
用信号量和 PV 操作实现
semaphore appleFull = 0;
semaphore orangeFull = 0;
semaphore fruitEmpty = 2;
semaphore mutex=1; // 防止同时访问盒子
process father(){
while(true) {
P(fruitEmpty);
P(mutex);
// 放苹果
V(mutex);
V(appleFull);
}
}
process mother(){
while(true) {
P(fruitEmpty);
P(mutex);
// 放苹果
V(mutex);
V(orangeFull);
}
}
process son(){
while(true) {
P(orangeFull);
P(mutex);
// 放苹果
V(mutex);
V(fruitEmpty);
}
}
process daugther(){
while(true) {
P(appleFull);
P(mutex);
// 放苹果
V(mutex);
V(fruitEmpty);
}
}
若使用管程实现
class FruitBowl {
static final int MAX_FRUITS = 2;
int apples = 0; // 盘子中苹果的数量
int oranges = 0; // 盘子中橘子的数量
// 条件变量
Condition notFull = new Condition();
Condition notEmptyApple = new Condition();
Condition notEmptyOrange = new Condition();
// 爸爸放苹果
public synchronized void putApple() {
while (apples + oranges == MAX_FRUITS) { // 如果盘子已满
notFull.wait(); // 等待盘子不满
}
apples++; // 放入一个苹果
notEmptyApple.signal(); // 唤醒可能在等待苹果的女儿
}
// 妈妈放橘子
public synchronized void putOrange() {
while (apples + oranges == MAX_FRUITS) { // 如果盘子已满
notFull.wait(); // 等待盘子不满
}
oranges++; // 放入一个橘子
notEmptyOrange.signal(); // 唤醒可能在等待橘子的儿子
}
// 女儿吃苹果
public synchronized void takeApple() {
while (apples == 0) { // 如果没有苹果
notEmptyApple.wait(); // 等待有苹果
}
apples--; // 吃掉一个苹果
notFull.signal(); // 唤醒可能在等待放水果的爸爸或妈妈
}
// 儿子吃橘子
public synchronized void takeOrange() {
while (oranges == 0) { // 如果没有橘子
notEmptyOrange.wait(); // 等待有橘子
}
oranges--; // 吃掉一个橘子
notFull.signal(); // 唤醒可能在等待放水果的爸爸或妈妈
}
}
系统有同类资源
解:根据死锁必要条件,可得约束
某系统有
系统运行过程中可能产生死锁吗?若有可能,列举一种情况。
解:可能产生死锁。根据安全状态的定义,如果四个进程同时启动:
这构成了一个典型的循环等待,满足死锁的所有四个必要条件。因此,系统在这种情况下会发生死锁。