同步与进程间通信

在多核或抢占式环境下,系统需要防止资源竞争导致的错误。Linux采用信号量、原子操作、自旋锁和读写锁等机制来确保资源安全访问。信号量用于资源保护,原子操作保证整数操作的完整性,自旋锁适合短时间保护,而读写锁允许多个读者并发访问。
摘要由CSDN通过智能技术生成

系统运行在多核情况或者抢占式时,可能对某些系统资源或者共用代码段进行访问。

资源的读取,修改和写回必须一次完成。如果两个进程同时进行操作,A读取后,B做了修改,

A再做修改,就会覆盖B之前的修改并可能产生错误的结果。

所以Linux使用一些机制来解决这个问题。

1.信号量  进行要对某个资源进行访问,首先要尝试获取信号量,如果没有获取就进入等待。

这样通过一个信号量就对保护了一个资源。

2.原子操作 对整数的加减操作是原子的

3.自旋锁  尝试去访问资源,如果资源被锁了会一直尝试获取锁。这比较耗费资源,所以用于短代码的保护。自旋锁同一个进程获取后不能再次获取,这个要注意。

4.信号量  尝试去访问资源,如果资源被占用会进入睡眠进行等待。由于睡眠操作耗费资源,不适合做睡眠与唤醒的频繁切换,所以适合保护较长的代码段。

5.读写锁  对读的进程不进行限制,但每次写的进程只能有一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值