-
互斥:某资源(即临界资源)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机。
-
同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。
-
临界资源:各进程间需要以互斥方式对其进行访问的资源。
-
临界区:指进程中对临界资源实施操作的那段程序。本质是一段程序代码。
-
互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。
-
同步信号量:对共享资源的访问控制,初值一般是共享资源的数量。
信号量
很重要,基本上年年都考
-
P操作:申请资源,S=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
S>=0 —> 资源;S < 0 —> 阻塞任务数 -
V操作:释放资源,S=S+1,若S>0,代表此时资源有空余,没有阻塞的进程,则该进程继续执行;若S<=0,代表此时线程在被阻塞,所以需要从阻塞状态唤醒一个进程,并将其插入就绪都队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行V操作的进程继续。
生产者和消费者
经典问题:生产者和消费者的问题
三个信号量:互斥信号量S0(仓库独立使用权),同步信号量S1(仓库空闲位置),同步信号量S2(仓库商品个数)。
生产者流程 | 消费者流程 |
---|---|
生产一个商品S P(S0) P(S1) 将商品放入仓库中 V(S2) V(S0) | P(S0) P(S2) 取出一个商品 V(S1) V(S0) |
先P后V,申请和释放数是对称的P(S0) V(S0),P(S1) V(S1)
练习题
【(2016年】进程P1、P2、P3、P4和P5的前趋图如下图所示:
若用PV操作控制进程P1、P2、P3、P3、P4和P5并发执行的过程,则需要设置5个信号S1、S2、S3、S4和S5,且信号量S1~S5的初值都等于零。下图中a和b处应分别填(26);c和d处应分别填写(27);,e和f玫处应分别填写(28)。
26、
A.V(S1)P(S2)和V(S3)
B.P(S1)V(S2)和V(S3)
C.V(S1)V(S2)和V(S3)
D.P(S1)P(S2)和V(S3)
27、
A.P(S2)和P(S4)
B.P(S2)和V(S4)
C.V(s2)和P(s4)
D.V(S2)和V(S4)
28、
A.P(S4)和V(S4)V(S5)
B.V(S5)和P(S4)P(S5)
C.V(S3)和v(s4)v(s5)
D.P(S3)和P(S4)V(P5)
答案C B B
任务开始前都是P操作,任务结束都是V操作。所以a b d e都是V操作,c f是P操作
先P后V,P和V是对称的可以推导出以下图。首先a b是V(S1)V(S2),但是P1->P2是S1还是S2,不知道,可以先假设S1;然后右图P2:V(S1),由于P和V是对称的,所以P1->P2就是S1
【2019年】进程P1、P2、P3、P4、P5和P6的前趋图如下所示,若用PV操作控制这6个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为();空③和空④处应分别为();空⑤和空⑥处应分别()。
A.V(S1)V(S2)和P(S2)
B.P(S1)P(S2)和V(S2)
C.V(S1)V(S2)和P(S1)
D.P(S1)P(S2)和V(S1)
A.V(S3)和V(S5)V(S6)
B.P(S3)和V(S5)V(S6)
C.V(S3)和P(S5)P(S6)
D.P(S3)和P(S5)P(S6)
A.P(S6)和P(S7)V(S8)
B.V(S6)和V(S7)V(S8)
C.P(S6)和P(S7)P(S8)
D.V(S7)和P(S7)P(S8)
答案C B D
开始是P,结束是V,所以①肯定是V操作,②是P操作。看答案知道①是V(S1)V(S2)但是P1->P2,P1->P3哪个是S1,哪个是S2不知道,所以②也不确定;接着看P2:V(S3)V(S4)可以知道P2->P3,P2->P4一个是S3,一个是S4;接着看P3:③是P,④是V,所以答案是B。P3:P(S2)P(S3),可以确定P1->P3是S2,P2->P3是S3。。。。