memory barrier使用是一个比较高级的话题,在shared memory的多处理器的架构使用
尤为重要. linux kernel同时支持UP和SMP的处理器架构,这就要求包括device drivers/fs等
所有的component都必须在SMP和UP很好的运行. 传统上spin_lock用于多处理器并行处理过程中对
数据完整性的保护,其原理很简单:当某个CPU持有spin_lock时候,其他CPU再需要请求持有该lock
,需要一直忙等直到持有spin_lock的CPU释放该lock,才会获得。本质上,spin_lock将对于关键区
的访问强制串行化,达到保护的目的。 spin_lock同时也降低了系统的性能。 linux kfifo的实现
支持同时一个CPU reader和一个CPU writer的并发访问,使用了lock-free的实现,不需要
spin_lock的保护,其中奥妙就是增加了两对memory barrier.阅读全文>
发表于 @ 2008年08月19日 22:26:00|评论(loading...)|举报|收藏