打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
进程同步之信号量机制(pv)操作
1.信号量:信号量的数据结构分为值和指针。指针指向等待该信号量的下一个进程,信号量的值与相应资源的使用情况有关。信号量的值大于0,表示可用资源数量;信号量的值小于0,其绝对值表示等待使用该资源的进程个数。信号量的值仅能由pv操作来改变。

2.信号量机制:利用pv操作来对信号量进行处理。

3.p操作:申请一个单位资源,进程进入      

   wait(S){
   while(S<0);//如果没有资源,则进入循环等待
   s--;
         

4.v操作:释放一个单位资源,进程出来

  signal(s){

s++;

5.pv操作含义:pv操作由p操作原语和v操作原语组成,对信号量进行操作。

pv操作意义:1、每个程序中用户实现的p、v操作必须成对出现,先做p操作,进临界区,在做v操作,出临界区。如有多个分支,要认真检查其成对性。    2、p、v操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。  3、互斥信号量的处置一般为1。

6.生产者-消费者问题
N:缓冲块数目,共享资源
empty:表示空的缓冲块数,初始值为n;
full:表示有数据的缓冲块数目,初始值为0;
mutex:用于访问缓冲区的互斥,初值为1。  
N=full+empty
生产者结构:           
do{
wait(empty);
wait(mutex);
add nextp to buffer
signal(mutex);
signal(full);
}while(1)
消费者结构:
do{
wait(full);
wait(mutex);
remove an item from buffer to nextp
signa(mutex);
signa(empty);
}while(1)
     这里,每个进程的各个p操作的次序是很重要的,各进程必须要先检查自己对应的资源数,在确信有可用资源后,在申请对整个缓冲区的互斥操作;否则先申请对整个缓冲区的互斥操作,再申请对应自己的缓冲块资源,就很可能引起死锁。
       出现死锁条件:申请对整个缓冲区的互斥操作后,才发现自己对应的缓冲块资源,这是已不可能放弃对整个缓冲区的占用。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于进程同步与互斥以及PV操作的问题 感觉不是很理解 就以生产者和消费者为例子 能有人给讲解一下是
linux 进程PV原语操作
关于PV操作
信号量
操作系统--进程同步,PV操作
互斥量、临界区、信号量、事件标志组和消息邮箱
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服