打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
进程同步之信号量机制(pv)操作
昵称25381642
>《待分类1》
2015.07.06
关注
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功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×