目录
2.进程与线程
2.3同步与互斥
2.3部分习题
1.一个正在访问临界资源的进程,由于申请等待I/O操作而被中断时,它()
A.允许其他进程进入与该进程相关的临界区
B.不允许其他进程进入任何临界区
C.允许其他进程抢占处理器,但不得进入该进程的临界区
D.不允许任何进程抢占处理器
2.以下()不属于临界资源
A.打印机 B.非共享数据 C.共享变量 D.共享缓冲区
3.以下()属于临界资源
A.磁盘存储介质 B.公用队列 C.私用数据 D.可重入的程序代码
4.一个系统共有5个并发进程涉及某个相同的变量A,变量A的相关临界区是由()个临界区构成
A.1 B.3 C.5 D.6
5.下列关于管程的叙述,错误的是()
A.管程是进程同步工具,解决信号量机制大量同步操作分散的问题
B.管程每次只允许一个进程进入管程
C.管程中signal操作的作用和信号量机制中的V操作相同
D.管程是被进程调用的,管程是语法范围,无法创建和撤销
6.进程P1和P2均包含并发执行的线程,部分伪代码如下:
//进程P1
int x=0;
Thread1()
{
int a;
a=1;
x+=1;
}
Thread2()
{
int a;
a=2;
x+=2;
}
//进程P2
int x=0;
Thread3()
{
int a;
a=x;
x+=3;
}
Thread4()
{
int b;
b=x;
x+=4;
}
下列选项中,需要互斥执行的操作是()
A.a=1与a=2 B.a=x与b=x
C.x+=1与x+=2 D.x+=1与x+=3
7.在下列同步机制中,可以实现让权等待的是()
A.Peterson方法 B.swap指令
C.信号量方法 D.TestAndSet指令
1.C
进程进入临界区必须满足互斥条件,当进程进入临界区但尚未离开时就被迫进入阻塞,在这种情况下,只要其他进程在运行过程中不寻求进入该进程的临界区,就允许其运行,即分配CPU
2.B
临界资源是互斥共享资源,非共享数据不属于临界资源
3.B
公用队列可供多个进程使用,但一次只可供一个进程使用,属于临界资源
4.C
临界区指访问临界资源A的那段代码,那么5个并发进程共有5个操作共享变量A的代码段
5.C
不同,信号量机制中的V操作一定会改变信号量的值S=S+1;而管程中signal操作是针对某个条件变量的,若不存在因该条件而阻塞的进程,signal就不会产生任何影响
6.C
P1对a进行赋值,并不影响最终结果,因此a=1与a=2 无需互斥执行;a=x与b=x执行先后不影响a与b的结果,无需互斥执行;x+=1与x+=2执行先后会影响x的结果,需互斥执行;P1中的x与P2中的x是不同范围中的x,互不影响
7.C
硬件方法实现进程同步时不能实现让权等待,Peterson算法满足有限等待但不满足让权等待;记录型信号量由于引入阻塞机制,消除了不让权等待的情况