临界区
12、两个进程合作完成一个任务。在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的 。
A同步 B互斥 C 调度 D执行
13、为了进行进程协调,进程之间应当具有一定的联系,这种联系通常采用进程间交换数据的方式进行,这种方式称为 。 A进程互斥 B进程同步 C进程制约 D进程通信
14、信号量的物理意义是当信号量值大于0时表示 可用资源的数目 当信号量值小于0时,其绝对值为因请求该资源而被阻塞的进程的数目
■15、操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列等待的条件是S<0 、 (s<=0)
16、在一个单处理机系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有4个,最少有0个 ●17、有M个进程共享同一个临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是1至-(M-1) 、(1至-M)
18、用信号量S实现对系统中4台打印机的互斥使用,S的初值应设置为 4 若S的当前值为-1,则表示等待队列有1 个等待进程
第四节
1、在测量控制系统中,数据采集任务把所采集的数据送入一单缓冲
区;计算任务从该单缓冲区中取出数据进行计算,试写出利用信号量机制实现两者共享单缓冲区的同步算法: 答:
int Se=1; intSf=0; main() {cobegin get(); compute(); coend} get()
{while(采集工作未完成) {采集一个数据 p(Se)
将数据送入缓冲区中 V(Sf);} } comput()
{while(计算工作未完成) { P(Sf);
从缓冲区中取出数据 V(Se);
进行数据计算}}
2、桌上有一空盘,允许存放一个水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子专等吃盘内的桔子,女儿专等吃盘中的苹果,请用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥。
int S=1;int Sa=0;int Sb=0; main() {cobegin father(); mather(); son(); daughter(); coend} father() {while(1) {p(S);
将一个苹果放入盘中 V(Sa);} } mather() { while(1) {p(S);
将一个桔子放入盘中 V(Sb);} } son() { while(1) {p(Sb);
从盘中取出桔子 V(S);吃桔子;} } daughter() { while(1) { p(Sa);
从盘中取出苹果 V(S);吃苹果;} }
3、嗜睡的理发师,一个理发店由一个N张沙发的等候室和一个放有一张理发椅的理发室组成。没有顾客时,理发师便去睡觉。当一个顾客走进理发店时,如果所有的沙发都已占用,他便离开理发店,否则,如果理发师正在为其他顾客理发时,则该顾客就找一张空沙发坐下来等待,如果理发师因无顾客正在睡觉,则由新到的顾客唤醒并为其理发,在理发完成后,顾客必须付费后才能离开理发店,试用信号量实现这一
同步问题。答:
Var counr:integer:=0;
mutex, sofa, empty, full:=1, N, 1, 0; cut, paymebt, re ceipt:semaphore:=0, 0, 0; begin
parbegin guest:begin
wait(mutex);
if((count>N) then; begin
signal (mutex); exit shop; end else begin
count:=count+1; if (count>1) then begin
wait (sofa); sit on sofa; wait (empty); get up from sofa; signal (sofa); end
else /*count=1 */ wait(empty);
sit on the baber _chair; signal (full); wait(impty); pay;
signal (payment); wait (nutex); count:=count-1; signal(mutex); exit shop; end end
barber:begin
repeat
wait (full); cut hair; signal (cut); wait (payment);