2016年真题
【2016年题25】 系统中有 3 个不同的临界资源 、 和 ,被 4 个进程 、、 及 共享。各进程对资源的需求为: 申请 和 , 申请 和 , 申请 和 , 申请 。若系统出现死锁,则处于死锁状态的进程数至少是____。
【2016年题25】 系统中有 3 个不同的临界资源 、 和 ,被 4 个进程 、、 及 共享。各进程对资源的需求为: 申请 和 , 申请 和 , 申请 和 , 申请 。若系统出现死锁,则处于死锁状态的进程数至少是____。
A. 1 B. 2 C. 3 D. 4
解析:
对于本题,先满足一个进程的资源需求,再看其他进程是否能出现死锁状态。因为 只申请一个资源,当将 分配给 后, 执行完后将 释放,这时使得系统满足死锁的条件是 分配给 , 分配给 , 分配给 (或者 分配给 , 分配给 , 分配给 )。穷举其他情况如 申请的资源 和 ,先都分配给 ,运行完并释放占有的资源后,可以分别将 、 和 分配给 、 和 ,也满足系统死锁的条件。各种情况需要使得处于死锁状态的进程数至少为 3。
【2016年题27】 使用 TSL(Test and Set Lock)指令实现进程互斥的伪代码如下图所示。
do { ... while(TSL(&lock)) ; critical section; lock=FALSE; ... } while(TRUE);
下列与该实现机制相关的叙述中,正确的是____。
A. 退出临界区的进程负责唤醒阻塞态进程
B. 等待进入临界区的进程不会主动放弃 CPU
C. 上述伪代码满足“让权等待”的同步准则
D. while(TSL(&lock))语句应在关中断状态下执行
解析:
当进程退出临界区时置 lock 为 FALSE,会负责唤醒处于就绪状态的进程,A 错误。若等待进入临界区的进程会一直停留在执行 while(TSL(&lock)) 的循环中,不会主动放弃 CPU,B 正确。让权等待,即当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。通过 B 选项的分析中发现上述伪代码并不满足“让权等待”的同步准则,C 错误。若 while(TSL(&lock)) 在关中断状态下执行,当 TSL(&lock) 一直为 true 时,不再开中断,则系统可能会因此终止,D 错误。
【2016年题30】 进程 和 均包含并发执行的线程,部分伪代码描述如下所示。
下列选项中,需要互斥执行的操作是____。
A. 与 B. 与 C. 与 D. 与
解析:
中对 a 进行赋值,并不影响最终的结果,故 与 不需要互斥执行; 与 执行先后不影响 a 与 b 的结果,无须互斥执行; 与 执行先后会影响 x 的结果,需要互斥执行; 中的 x 和 中的 x 是不同范围中的 x,互不影响,不需要互斥执行。
【2016年题32】 下列关于管程的叙述中,错误的是____。
A. 管程只能用于实现进程的互斥
B. 管程是由编程语言支持的进程同步机制
C. 任何时候只能有一个进程在管程中执行
D. 管程中定义的变量只能被管程内的过程访问
解析:
管程是由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。管程不仅能实现进程间的互斥,而且能实现进程间的同步,故 A 错误、B 正确。管程具有特性:①局部于管程的数据只能被局部于管程内的过程所访问;②一个进程只有通过调用管程内的过程才能进入管程访问共享数据;③每次仅允许一个进程在管程内执行某个内部过程,故 C 和 D 正确。
【2017年题23】 假设 4 个作业到达系统的时刻和运行时间如下表所示。
系统在 时开始作业调度。若分别采用先来先服务和短作业优先调度算法,则选中的作业分别是______。
A. 、 B. 、 C. 、 D. 、
解析:
先来先服务调度算法是作业来得越早,优先级越高,因此会选择 J1。短作业优先调度算法是作业运行时间越短,优先级越高,因此会选择 J3。所以 D 正确。
【2017年题24】 执行系统调用的过程包括如下主要操作:
①返回用户态
②执行陷入(trap)指令
③传递系统调用参数
④执行相应的服务程序
正确的执行顺序是______。
A. ②→③→①→④ B. ②→④→③→① C. ③→②→④→① D. ③→④→②→①
解析:
执行系统调用的过程是这样的:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转化为内核态,并将返回地址压入堆栈以备后用,接下来 CPU 执行相应的内核态服务程序,最后返回用户态。所以 C 正确。
更新于2026-11-03