OS零碎知识整理(6)

进程管理部分

 

1.临界资源与临界区的含义?

临界资源:一次仅允许一个进程使用的资源。

临界区:不允许多个并发进程交叉执行的一段程序 / 访问公用数据的那段程序 / 那段代码


2.信号量机制的含义(P、V操作定义)?

信号量(semaphore) - 管理相应临界区的公有资源。

信号量又分为公用信号量(互斥)私用信号量(同步)

在操作系统中,信号量sem是一整数,sem >= 0 时,表示可供并发进程使用的资源实体数。

                                                             sem < 0 时,表示正在等待使用临界区的进程数。

信号量的数值能由P、V原语操作改变。

一次P原语操作使得信号量sem-1

一次V原语操作使得信号量sem+1

且P、V原语在执行期间不允许中断发生。

P、V原语主要操作(图来自《计算机操作系统教程》 张学尧)

OS零碎知识整理(6)

可以使用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;

...

}