System V信号量

1.信号量
信号量本质上就是一把计数器(资源计数器)
表示资源数目的计数器,每一个执行流想访问公共资源内部的某一份资源,不应该让执行流先访问,而是先申请信号量资源,其实就是先对信号量计数器进行–操作,本质上,只要–成功,就完成了对资源的预订机制
如果申请不成功,执行流被挂起阻塞
2.互斥与同步
信号量主要用于同步和互斥的
多个执行流看到的是同一份资源,公共资源->并发访问->数据不一致问题->保护起来->互斥和同步
互斥:任何一个时候只允许一个执行流(进程)访问公共资源
同步:多个执行流执行的时候,按照一定的顺序执行
互斥(Mutual Exclusion):互斥是指在多进程或多线程环境中,对共享资源的访问是排他的,即同一时间只允许一个进程或线程访问共享资源。这样可以避免多个进程或线程同时修改共享资源而导致的数据不一致性问题。常见的互斥机制包括使用互斥锁(Mutex)或信号量(Semaphore)来保护共享资源,确保在任意时刻只有一个进程或线程能够访问该资源。
同步(Synchronization):同步是指在多进程或多线程环境中,控制进程或线程之间的执行顺序,以保证它们按照某种规定的顺序执行或在特定的时间点上进行协作。同步机制可以用来确保进程或线程之间的通信、协作和数据一致性。常见的同步机制包括使用信号量、条件变量(Condition Variable)、屏障(Barrier)等,以及各种同步原语和算法,如互斥锁、读写锁、原子操作等。
3.临界资源和临界区
临界资源:多个进程都可以访问到的资源(例如:同一块内存)。
临界区:访问临界资源时的代码,所在区域称之为临界区。
4.PV
P操作(也称为Wait操作):这是信号量管理的入口点,用于检测进程是否能够继续执行或者进入临界区。当进程尝试进行上述操作时,它会先检查信号量的值。如果信号量的当前值等于零,则表明有待处理的消息或其他进程正在等待这个资源,因此进程不会立即得到资源而必须等待。此时,进程会进入阻塞状态,直到信号量的值变为非零,这时它才能继续执行。
V操作(也称为Signal操作):这是信号量的出口点,用于释放已获得的资源或离开临界区。在执行完临界区的代码后,进程会增加信号量的值,表示释放了一个资源。如果此时有其他进程在等待这个资源,那么有一个进程将被唤醒并获得资源,从而继续执行。
5.原子性
只有2态,要么不做,要么做完

申请信号量->计数器减1->P操作必须具有原子性。
释放信号量->计数器加1->B操作必须具有原子性。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值