linux 内核同步自学报告

内核同步保护的是数据(data),而不是逻辑(logic).


中断处理程序中能避免并发访问的安全代码称为中断安全代码,在对称多处理的机器中能避免并发访问的安全代码称为SMP安全代码(SMP-safe),在内核抢占时能避免并发访问的安全代码称为抢占安全代码(preempt-safte).


1,原子操作,只能针对整数或者bit,用atomic_t类型(只能用24位,因为在SPARC体系上,在int类型的低八位中嵌入一个锁)。


2,自旋锁(spin lock),最多只能被一个可执行线程持有。一个被争用的自旋锁使得请求它的线程在等待锁重新可用时自旋(占用cpu等待)。所以自旋锁不应该长时间占有。一般适用于SMP。在单处理器机器上,编译的时候并不会加入自旋锁,仅仅被当做一个设置内核抢占机制是否被开机的开关。自旋锁不能递归(中断处理程序中使用自旋锁时,一定要在获取锁之前,首先禁止本地中断,因为中断处理程序就会打断正持有锁的内核代码)。


3,信号量。可以睡眠的同步机制。因为出现睡眠的情况,所以使用这种锁可能引发进程切换的消耗。信号量被称为计数信号量(counting semaphone),数目可以大于1.信号量和自旋锁不能同时使用。


顺序和屏障,保障程序的顺序执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值