操作系统第二章 练习题
一、选择题 1.临界区是指(
)。
A.并发进程中用于实现进程互斥的程序段 B.并发进程中用于实现进程同步的程序段 C.并发进程中用户实现进程通信的程序段 D.并发进程中与共享变量有关的程序段 2.( )是只能由P和v操作所改变的整型变量。
A.共享变量 B.锁 C.整型信号量 D.记录型信号量 3.在执行v操作时,当信号量的值(
)时,应释放一个等待该信号量的进程。
A.>0 B.<0 C.>=0 D.<=0
4.进程间的互斥与同步分别表示了各进程间的(
)。
A.竞争与协作 B.相互独立与相互制约 C.不同状态 D.动态性与并发性 5.在进程通信中,(
)常用信件交换信息。
A.低级通信 B.高级通信 C.消息通信 D.管道通信 6.在间接通信时,用send(N,M)原语发送信件,其中N表示( )。
A.发送信件的进程名 B.接收信件的进程名 C.信箱名 D.信件内容 7.下列对线程的描述中,( )是错误的。
A.不同的线程可执行相同的程序 B.线程是资源分配单位 C.线程是调度和执行单位
D.同一进程中的线程可共享该进程的主存空间
8.若信号量S的初值为2,当前值为-1,则表示有(
)等待进程。
A. 0个 B.1个
C.2个 D.3个
9.操作系统是通过(
)对进程进行管理。
A. JCB
B.PCB
C.DCT
D.CHCT
10.下面所述步骤中,( )不是创建进程所必需的。
A.由调度程序为进程分配CPU B.建立一个进程控制块
C.为进程分配内存
D.将进程控制块链入就绪队列
11.对于两个并发进程,设互斥信号号为mutex,若mutex=0,则( )
A.表示没有进程进入临界区 B.表示有一个进程进入临界区
C.表示有一个进程进入临界区,另一个进程等待进入
1
D.表示有两个进程进入临界区
)
B.它的优先权为最大 D.进程变为就绪状态
)
12.一个进程被唤醒意味着(
A.该进程重新占有了CPU C.其PCB移至等待队列队首
13.下面关于进程的描述中,正确的是(
A.进程获得CPU运行是通过调度得到的。
B.优先级是进程调度的重要依据,一旦确定就不能改变。 C.在单CPU的系统中,任意时刻都有一个进程处于运行状态。 D.进程申请CPU得不到满足时,其状态变为阻塞。 二、填空题
1.进程的封闭性是指进程的执行结果只取决于______,不受外界影响。 2. 进程的可再现性是指当进程再次重复执行时,必定获得______的结果。 3.若信号量的初值为1,用PV操作能限制一次______进程进入临界区操作。
4 进程的______是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息。 5.PV操作也可看作为进程间的一种通信方式,由于只交换了少量的信息,故称为______ 。 6.通过专门的通信机制实现进程间交换大量信息的通信方式称为______。 7.线程与进程有许多相似之处,所以线程又称为______。
8.在使PV操作实现进程互斥时,调用______相当于申请共享资源的使用权,调用______相当于归还共享资源的使用权。
9.在多线程操作系统中,线程与进程的根本区别在于进程作为______单位,而线程是______单位。
10.有m个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量的变化范围是______。
11.系统中共有5个用户进程,且当前CPU在用户态下执行,则最多可有______个用户进程处于就绪状态,最多可有______个用户进程处于阻塞状态;若当前在核心态下执行,则最多可有______个用户进程处于就绪状态,最多可有______个用户进程处于阻塞状态。 12.引入进程带来的好处是______和______。 三、简答题
2
1.什么是进程的顺序性和并发性?
2.假设PV操作用信号量s管理某个共享资源,请问当s>0,S=0和S<0时,它们的物理意义是什么?
3.请给出Pv操作的定义。
4.用PV操作实现进程间同步与互斥应注意些什么? 5.线程与进程的根本区别是什么? 6.试比较程序与进程的区别。 四、进程同步习题参考答案:
1.在测量控制系统中,数据采集任务把所采集的数据送入一单缓冲区;计算任务从单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享缓冲区的同步算法。 解: 问题分析1:
本题是一个生产者一消费者问题。
采集任务采集到一个数据后,只有当缓冲区空时才能将数据送入缓冲区,否则等待 只有当缓冲区中有数据时,计算任务才能从缓冲区中取数据计算,否则也等待 问题分析2: 采集数据任务 计算任务 互斥(单缓冲区)
同步:采集数据任务不能往满缓冲区中放数据 计算任务不能从空缓冲区中取数据 设两信号量full(0)和empty(1) 实际上,当采集数据任务得到空缓冲时,也就得到了对缓冲区的使用,计算任务同理,得到满缓冲区时,也就得到了对缓冲区的使用。因此,不需专门设一个互斥信号量,信号量full和empty实际上也起到互斥作用。 问题分析3:
采集数据任务:
采集一数据 采集一数据 申请对缓冲区的使用权(申请空缓冲区) P(empty) 放数据 放数据
3
释入对缓冲区的使用权(满缓冲区加一<空变为满>) V(full) 计算任务:
申请对缓冲区的使用权(申请满缓冲区) P(full) 取走数据 取走数据 释入对缓冲区的使用权(空缓冲区加一<满变为空>) V(empty) 进行计算 进行计算
2.有三个并发进程get、copy、put:
get进程负责从输入序列f中读取字符,送到缓冲区S中;copy进程把缓冲区S中的数据复制到缓冲区T;put进程从缓冲区T中取出数据打印。
问题分析1:
copy既是get的消费者,又是put的生产者
互斥:缓冲区S由get和copy互斥共享,
缓冲区T由copy和put互斥共享 同步:get不能向“满”的S中放;
copy不能从“空”的S中取;不能向“满”的T中放; put不能“空”的T中取
问题分析2:
与采集数据任务、计算任务同理。 设:(同步)信号量:
S_Empty, T_Empty, (初值为1) S_Full, T_Full; (初值为0)
4
Get:
Begin Repeat
P(S_Empty) 将读取数据送入S; V(S_Full); Until false; End Copy: Begin Repeat P(S_Full); P(T_Empty); 将S中的数据copy到T; V(T_Full);
V(S_Empty); Until false; End Put: Begin Repeat P(T_Full); 取T中数据打印; V(T_Empty); Until false; End 5