操作系统期末试卷
课程名称:___操作系统__________
学生姓名:___________________ 学 号:___________________
专 业:___________________ 年级/班级:__________________
课程性质:专业必修
一 二 三 四 五 六 七 八 总分 阅卷人签名
…………………………………………………………………………………………
一、是非题:请判断以下论述正确与否(用T/F表示),并修正错误的论述(15分,每题3分)
1. 在多进程多线程操作系统中,每个进程可以只维护一个堆(heap);
T
2. 在操作系统中,CPU调度和虚存管理功能必须在内核中实现;
T
3. 在虚存管理时,采用LRU页面替换策略,可能会发生Belady异常(即分配页框越多,缺页率反而越高);
F. 不会发生
4. 对于光盘设备,采用DMA方式进行数据交换是不合适的;
F. 光盘数据交换速度较快,传输数据量大,合适
5. 在目录文件中,必须保存文件名和文件数据存储位置信息。
F. 数据存储位置通常在文件控制块中,不在目录文件中
二、单项选择题(15分,每题3分)
1. 当系统中的进程增多时,以下哪些(个)情况不可能出现(不考虑死锁):D
A. CPU利用率增高
B. CPU利用率降低
C. 磁盘I/O增多
D. 磁盘I/O减少
2. 以下那个操作不会使得一个进程从运行(running)状态转换为就绪(ready)状态:C
A. 在可占先(preemptive)系统中,高优先级进程被创建
B. 分时系统中,时间片到
C. 当前运行进程发生缺页中断
D. 当前运行进程调用yield(),主动放弃使用CPU
3. 对于死锁,以下哪个描述是错误的:A
A. 死锁避免(deadlock avoidance)中,不安全的状态必然发生死锁
B. 死锁避免(deadlock avoidance)中,发生死锁必然处于不安全状态
C. 资源分配图中有环(以资源类型和进程为节点),必然发生死锁
D. 如果要求每个进程必须一次申请所有需要的资源,如果不能满足其要求,则不分配任何资源,那么死锁不可能发生
4. 关于线程,以下说法错误的是:D
A. 用户态线程(无核心态线程或LWP)阻塞,可能会阻塞线程
B. 多处理器环境下,线程间同步不能使用关中断实现
C. 线程控制块中包含CPU寄存器状态
D. 在支持核心态线程的系统中,CPU调度的单位仍然是进程
5. 以下哪种海量存储技术不是实现RAID的基本技术?A
A. 无冗余(non-redundant)的条带化(striping)
B. 位图(bitmap)空闲块索引
C. 按位奇偶校验(bit-interleaved parity)
D. 按块奇偶校验(block-interleaved parity)
三、辨析题:请分别解释以下每组的两个名词,并列举他们的区别(25分,每题5分)
1. 进程(process)与线程(thread)
2. 目录(directory)与文件控制块(FCB)
3. 分时(time-sharing)与批处理(batch processing)
4. 旁路查找表(或称为快表,TLB)与页表(page table)
5. 块设备与字符设备
四、计算、问答题(30分)
1. 采用按需调页(demand paging),现有3个页框,分别存储着页面号2,3,4三个页面。已知接下来的页面访问顺序为1,2,3,4,1,2,5,1,2,3,4,5。使用LRU算法作为页面替换算法。(10分)
a) 请计算会发生的缺页次数(7分)
b) 请写出这一访问序列所对应的工作集。(3分)
答:{1,2,3,4,5}
2. 已知磁盘访问队列98, 183, 37, 122, 14, 124, 65, 67(标号为柱面号),当前磁头位置为12。(10分)
a) 请写出一种最优的磁头移动序列,并计算磁头移动距离。(5分)
c) 请问这一序列和哪种调度算法的结果是一致的?(2分)
LOOK
d) 请问这种调度算法能否保证在任意情况下是最优的?为什么?(3分)
不能,与磁头移动的初始移动方向有关
3. (10分)现有以下实现有界缓存(bounded buffer)问题的伪代码
1. semaphore mutex = 1;
2. semaphore full = 0;
3. semaphore empty = 3; //buffer中允许3个item
4. producer () {
5. // produce an item
6. wait (empty);
7. wait (mutex);
8. // add it to the buffer
9. signal (mutex);
10. signal (full);
11.}
12.consumer() {
13. wait (full);
14. wait (mutex);
15. // remove one from buffer
16. signal (empty);
17. signal (mutex);
18. // consume the removed item
19.}
a) 请问该代码是否正确?(3分)
b) 请问该代码是否会引起死锁?(3分)
不会
c) 如果不会引起死锁,请证明死锁(证明死锁的四个必要条件中有一个不成立);如果可能引起死锁,请画出资源分配图(信号量作为资源),指出代码发生死锁的原因,并进行改正。(4分)
五、综合题(15分)
请使用二元信号量(binary semaphore,即值只能为0或1的信号量)实现计数信号量(counting semaphore,取值可为任意整数)。
相关阅读推荐:
› 操作系统期末试卷