OS零碎知识整理(6)
进程管理部分
1.临界资源与临界区的含义?
临界资源:一次仅允许一个进程使用的资源。
临界区:不允许多个并发进程交叉执行的一段程序 / 访问公用数据的那段程序 / 那段代码。
2.信号量机制的含义(P、V操作定义)?
信号量(semaphore) - 管理相应临界区的公有资源。
信号量又分为公用信号量(互斥)与私用信号量(同步)
在操作系统中,信号量sem是一整数,sem >= 0 时,表示可供并发进程使用的资源实体数。
sem < 0 时,表示正在等待使用临界区的进程数。
信号量的数值仅能由P、V原语操作改变。
一次P原语操作使得信号量sem-1
一次V原语操作使得信号量sem+1
且P、V原语在执行期间不允许中断发生。
P、V原语主要操作(图来自《计算机操作系统教程》 张学尧)
可以使用P、V原语操作以及信号量实现进程间的互斥。
将临界区放置于P(sem)与V(sem)之间
当一个进程想要进入临界区时,必须先执行P原语操作以将信号量sem-1;
当一个进程完成对临界区的操作之后,必须执行V原语操作以释放它所占用的临界区。
由于信号量初始值为1,任一进程在执行P原语操作之后将sem的值变为0,该进程进入临界区,在该进程未执行V原语操作之前如果有另一进程想进入临界区的话,其要先执行P原语操作,此时sem-1 = -1 ,导致第二个进程被阻塞。直到第一个进程执行V原语操作之后,sem的值变为0,从而可唤醒第二个进程进入就绪队列,经调度后再进入临界区。
用P、V原语实现进程互斥
P1:
P(sem)
<S>
V(sem)
P2:
P(sem)
<S>
V(sem)
用P、V原语实现进程同步
semaphore S=0;
P1(){
...
x;
V(S);
...
}
P2(){
...
P(S)
y;
...
}