进程间通信(三)信号量

信号量

信号量用于实现进程间的同步与互斥
互斥: 保证同一时间只有一个进程访问临界资源实现临界资源的互斥访问保证安全性。
同步: 通过一种条件判断,不能访问则等待,能访问再唤醒,实现对临界资源访问的合理性。

本质: 内核中的一个计数器+pcb等待队列(对资源进行计数);
互斥的实现: 通过只有0/1的计数器,实现对临界资源访问状态的标记;在临界资源访问之前获取信号量,计数减一,若计数小于<0则使进程等待(将进程pcb加入队列中);否则可以对临界资源进行访问(并且在访问期间,已经将临界资源的状态置位不可访问状态,因此可以保证其他进程不会再访问临界资源),当前进程访问完毕之后,则对计数进行+1,则唤醒一个进程(将一个pcb出队,置位运行状态)

同步的实现: 信号量是一个对资源的计数,可以通过判断计数判断是否能够获取一个资源进行处理,若计数<0,则表示不能获取,并且对计数进行-1,需要等待(加入pcb队列)。这时候若其它进程生产一个资源,则会对计数进行+1,若计数<=0,则唤醒一个进程;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值