##单选题
临界区是指()
- 并发进程中用于实现进程互斥的程序段
- 进程中访问临界资源的那段代码
- 一段缓冲区
- 一个数据区
解释:每个进程有一个代码段称为临界区,在该区中进程可能改变共同变量、更新一个表、写一个文件等。
多个进程对信号量S进行了6次P操作,2次V操作后,现在信号量的值是-3,与信号量S相关的处于阻塞状态的进程有几个()
- 1个
- 2个
- 3个
- 4个
解释:信号量的当前值为-3,当信号量<=0时,再次执行wait()操作,信号量值减一,同时该进程阻塞自己,将其放入到与信号量相关的等待队列中,并将该进程的状态切换到等待状态,所以可以得到答案
2元信号量可以初始化为()
- 0或1
- 0或-1
- 只能为1
- 任意值
解释:通常操作系统区分计数信号量与二进制信号量,二进制信号量的值只能为0或1
在信号量中wait()和signal()操作的意义分别是()
- +0 -1
- +1 -1
- +0 +1
- -1 +1
解释:除了初始化外,信号量只能通过两个标准原子操作:wait()和signal()来访问,分别为信号量减一和加一
进程P1有语句S1,进程P2有语句S2,P1和P2共享一个信号量sem,且初始化为0,P1的语句为:S1; signal(sem); P2的语句为: wait(sem); S2; 这样的效果是()
- S1和S2一起执行
- S1执行,S2不执行
- 只有S1执行完后才执行S2
- 只有S2执行完后才执行S1
解释:因为sem初始化为0,P2只有在P1调用signal(sem) (即S1)之后,才会执行S2
自旋锁会要求忙等待,会浪费CPU时钟,但是它也有优点,自旋锁的优点是()
- 不用阻塞
- 等待锁时不进行上下文切换
- 不会出现死锁