1.任何两个并发进程之间存在着( D)的关系。
A.各自完全独立 B.拥有共享变量 C.必须互斥 D.可能相互制约
2.并发进程执行的相对速度是(D )。
A.由进程的程序结构决定的 B.由进程自己来控制的 C.在进程被创建时确定的 D.与进程调度策略有关的
3.并发进程执行时可能会出现“与时间有关的错误”,这种错误是由于并发进程(A )引起的。 A.使用共享资源 B.执行的顺序性 C.要求计算时间的长短 D.程序的长度
4.并发进程中与共享变量有关的程序段称为(B )。 A.共享子程序 B.临界区 C.管理区 D.公共数据区
5.用来实现进程同步与互斥的PV操作实际上是由( D)过程组成的。 A.一个可被中断的 B.一个不可被中断的 C.两个可被中断的 D. 两个不可被中断的
6.进程从运行态变为等待态可能由于(B )。 A.执行了V操作 B.执行了P操作 C.时间片用完 D.有高优先级进程就绪
7.用PV操作管理互斥使用的资源时,信号量的初值应定义为( A)。 A.任意正整数 B.1 C.0 D.-1
8.用P、V操作管理临界区时,互斥信号量的初值应定义为( B )。
A.任意值 B.1 C.0 D.-1
9.现有n个具有相关临界区的并发进程,如果某进程调用P操作后变为等待状态,则调用P操作时信号量的值必定为(A )。 A.≤0 B.1 C.n-1 D.n
10.用PV操作管理临界区时把信号量的初值定义为1,现已有一个进程在临界区,但有n个进程在等待进人临界区,这时信号量的值为(C )。 A.-1 B.1 C.-n D.n
11.用V操作唤醒一个等待进程时,被唤醒进程的状态应变成(B )状态。 A.执行 B.就绪 C.运行 D.收容
12.进程间的同步是指进程间在逻辑上的相互( B)关系。 A.联接 B.制约
C.继续 D.调用
多项选择题
1.有关并发进程的下列叙述中,(CDE )是正确的。 A.任何时刻允许多个进程在同一CPU上运行 B.进程执行的速度完全由进程自己控制 C.并发进程在访问共享资源时可能出现与时间有关的错误 D.同步是指并发进程中存在的一种制约关系 E.各自独立的并发进程在执行时不会相互影响
2.一个正在运行的进程调用P(s)后,若S的值为(AD ),则该进程可以继续运行。 A.S>0 B.S<0 C.S≠0 D.S≥0 E.S≤0
判断题
1.有交往的并发进程一定共享某些资源。 ( X)
2.如果不能控制并发进程执行的相对速度,则它们在共享资源时一定会出现与时间有关的错误。 (X )
3.并发进程的执行结果只取决于进程本身,不受外界影响。 (X )
4.多道程序设计必然导致进程的并发执行。 ( √ )
有m个进程共享同一临界资源,若使用信号量机制实现对资源的互斥访问,则信号量值的变化范围是_[1-m,1_]__。
对于两个并发进程,设互斥信号量为mutex,若mutex=0,则_B_
A 表示没有进程进入临界区 B 表示有一个进程进入临界区
C表示有一个进程进入临界区,另一个进程等待进入
D 表示有两个进程进入临界区
设系统中有n(n>2)进程,且当前不在执行进程调度程序,试考虑下述4种情况哪种不能发生:A
A没有运行进程,有2个就绪进程,n-2个进程处于等待状态。
B有1个运行进程,没有就绪进程,n-1个进程处于等待状
C有1个运行进程,有1个就绪进程,n-2个进程处于等待状态
D有1个运行进程,有n-1个就绪进程,没有进程处于等待状态
应用题
用P、V操作实现下述问题。桌子上有一个盘子,可以存放一个水果,父亲总是放苹果到盘子中,而母亲总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,而一个女专等吃盘中的苹果。
设dish=1表示盘子是否为空;apple=0表示盘中是否有苹果;banana=0表示盘中是否有香蕉。
semaphore dish=1; semaphore apple=0; semaphore banana=0; Main() { cobegin father(); mather(); son(); daughter(); coend }
Father()
{ while(ture)
{ p(dish);
将苹果放入盘中;
v(apple);
}
}
Mother()
{ while(ture)
{ p(dish);
将香蕉放入盘中;
v(banana);
}
}
son()
{ while(ture)
{ p(banana);
从盘中取出香蕉;
v(dish);
吃香蕉;
}
}
daughter() { while(ture) { p(apple); 从盘中取出苹果; v(dish); 吃苹果; } }
某套装服装厂有甲乙两个制作室和一个配套室。两个制作室分别生产上衣和裤子,每制作一件上衣或裤子后制作室工人都要分别把它们送到配套室的衣架F1和裤架F2上,衣架F1上存放上衣,裤架F2上存放裤子,衣架最多能放50件上衣,裤架最多能放50条裤子。配套室工人每次从架上取一件上衣和一条裤子,然后将它们配成套装,并进行包装。为防止操作出错, 甲制作室工人及配套室工人对衣架F1的存取动作应互斥进行,乙制作室工人及配套室工人对裤架F2的存取动作应互斥进行。用P、V原语进行正确管理,分别描述甲制作室工人、乙制作室工人以及配套室工人的工作过程。
解:
(1)设公用信号量mutex1和mutex2控制进程对衣架和裤架的互斥操作
设私用信号量empty1和empty2分别表示衣架和裤架的空位数,
full1表示衣架上的衣服数,full2表示裤架上的裤子数
(2)初始化mutex1=1,mutex2=1,
empty1=50,empty2=50,full1=0,full2=0
(3)描述:
甲制作室工人工作过程: 乙制作室工人工作过程:
L1:生产一件上衣 L2:生产一条裤子
P(empty1) P(empty2)
P(mutex1) P(mutex2)
将上衣放到衣架上 将裤子放到裤架上
V(mutex1) V(mutex2)
V(full1) V(full2)
Goto L1 Goto L2
配套工人工作过程:
L3:P(full1)
P(full2)
P(mutex1)
P(mutex2)
分别取上衣和裤子进行配套
V(mutex1)
V(mutex2)
V(empty1)
V(empty2)
Goto L3
在一个盒子里,混装了数量相等的黑白围棋子。现在利用自动分拣系统把黑子、白子分开,设分拣系统有两个进程P1和P2,其中进程P1拣白子;进程P2拣黑子。规定每个进程一次拣一子,当一个进程在拣时不允许另一个进程去拣,当一个进程拣了一子时,必须让另一个进程去拣。试写出进程P1和P2能够正确并发执行的程序。
设私有信号量S1=1;S2=0
P1(){ P2(){
P(S1); P(S2);
拣白子; 拣黑子;
V(S2);} V(S1);}
设公共汽车上,司机和售票员的活动分别是
司机活动:启动车辆;正常运行;到站停车。 售票员活动:关门;售票;开门。用信号量和P、V操作实现它们的关系。
设置两个信号量:S1、S2,S1表示是否允许司机启动汽车,其初值为0;S2表示是否允许售票员开门,其初值为0。
semaphore s1=0;
semaphore s2=0;
main( )
{
Cobegin
Driver( );
Busman();
Coend
}
Driver()
{
While(true)
{ p(s1);
启动车辆;
正常行车;
到站停车;
V(S2);
}
}
Busman( )
{
While(true)
{ 关车门;
V(S1);
售票;
P(S2);
开车门;
上下乘客;
}
}