-
P是荷兰语的Passeren(通过),V是荷兰语言的Verhoog(释放)
-
PV操作是一种实现进程互斥与同步的有效方法。PV操作与信号量的处理相关。
-
信号量:是一种特殊的变量
-
信号量可以表示资源量
-
信号量为负数时还可以表示排队进程数
-
PV操作示意图:
S:信号量
P操作:申请/锁定资源,判断S是否小于零(检查资源是否足够),当S大于零时表示资源足够用,当S小于零时表示资源不够,进入阻塞队列。
V操作:释放/解锁资源,判断S是否小于等于零(检查是否在进程阻塞),当小于或等于零时表示有进程存在阻塞,当大于零时通知进程可以继续。
因为P操作是先申请操作,所以S要先减去1,当S为零时资源正好够用
而V操作就需要在S加1,所以当S等于零时正好有一个进程阻塞
PV操作是操作系统提供的具有特定功能的原语。利用PV操作可以()。
A 保证系统不发生死锁 B 实现资源的互斥使用 C 提高资源利用率 D 推迟进程使用共享资源的时间
B
对于资源来讲,给他加锁就是降低他的利用率,所以C选项错了
而PC操作使用的是临界资源,所以D错误
假设系统中有n个进程共享3台扫描仪,并采用PV操怍实现进程同步与互斥。若系统信号量S的当前值为-1,进程P1、P2又分别执行了1次P (S) 操作,那么信号量S的值应为( )。
A3 B-3 C1 D-1
B
PV操作互斥模型
S为资源数量
个人感觉就是单线程顺序执行:从给资源上锁、使用资源、给资源解锁、然后通知进程使用完毕。
PV操作同步模型
S_1初始值为1,S_2初始值为0。
相对于互斥模型,比他多了一个缓冲区。可以通过缓冲区接受并发的操作。
缓冲区可以拥有多个,有多少个缓冲区就有多少个S_1
PV操作综合模型:
因为缓冲区是不支持并行操作的所以,可以将两个缓冲区操作看为互斥模型。
假设铁路自动售票系统有n个售票终端,该系统为每个售票终端创建一个进程Pi (i=,2,",n) 管理车票销售过程。假设Tj (=,,**,m) 单元 存放某日某趟车的车票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的购票张数。Pi进程的工作流程如下图所示,用P操作和V操作实现进程间的同步与互斥。初始化时系统应将信号量S赋值为( )。图中(a)、(b)和(c)处应分别填入()。
A n-1 B 0 C 1 D 2
A V(S)、P(S)和P(S) B P(S)、P(S)和V(S) C V(S)、V(S)和P(S) D P(S)、V(S)和V(S)
C、D
因为进入缓冲区是互斥模型所以信号量是1