2013年1月31日

linux并发控制之总章

摘要: 一.概念 1.并发(concurrency)指多个执行单元同时,并行被执行。 2.并发的执行单元对共享资源,(比如说,硬件资源,全局变量,静态变量等)访问很容易导致竞态(race conditions)。 举个简单事例,古代皇帝有很多妃子,皇帝第一个时辰是宜妃的,第二个时辰是萱妃,最后时间是皇... 阅读全文

posted @ 2013-01-31 17:24 胡永光 阅读(118) 评论(0) 推荐(0) 编辑

linux并发控制之原子操作

摘要: 原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 分为两类:整型原子操作 和 位原子操作。 特点: 1.任何情况下操作都是原子的。 2.都依赖底层的CPU的原子操作来实现,所以和CPU架构密切相关。 注意: 1.原子操作在不同体系架构实现的方法不同,基本采用汇编实现 ... 阅读全文

posted @ 2013-01-31 17:23 胡永光 阅读(284) 评论(0) 推荐(0) 编辑

linux并发控制之中断屏蔽

摘要: 在单CPU范围内避免竞态的一个简单方法。 注意: 中断对系统正常运行很重要,长时间屏蔽很危险,所以中断屏蔽后应尽可能快的执行完毕。 宜与自旋锁联合使用。 使用 local_irq_disable() local_irq_enable() 只能禁止和使能本... 阅读全文

posted @ 2013-01-31 17:22 胡永光 阅读(228) 评论(0) 推荐(0) 编辑

linux并发控制之顺序锁

摘要: 顺序锁是对读写锁的一种优化。 1.读执行单元绝对不会被写执行单元阻塞。即读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完之后才去进行写操作 2.写执行单元与写执行单... 阅读全文

posted @ 2013-01-31 17:19 胡永光 阅读(160) 评论(0) 推荐(0) 编辑

linux并发控制之RCU

摘要: RCU:读-拷贝-更新 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用,但是它存在两个问题。 1.它的开销相对于CPU速度而言就越来越大 随着计... 阅读全文

posted @ 2013-01-31 17:16 胡永光 阅读(217) 评论(0) 推荐(0) 编辑

linux并发控制之读写自旋锁

摘要: 读写自旋锁(rwlock)是一种比自旋锁粒度更小的自旋锁机制,它保留了“自旋”的概念。 但是在写操作方面,只能最多有一个写进程,在读方面,同时可拥有多个执行单元,当然读和写也不能同时进行。 一句话:防写不防读 理解推荐: http://blog.sina.com.cn/s/blog_6d7... 阅读全文

posted @ 2013-01-31 17:15 胡永光 阅读(429) 评论(0) 推荐(0) 编辑

linux并发控制之自旋锁

摘要: 自旋锁是一种对临界资源进行互斥访问的典型手段,其名来源于它的工作方式。 通俗的讲,自旋锁就是一个变量,该变量把一个临界区标记为“我当前在运行,请等待”或者标记为“我当前不在运行,可以被使用”, 如果A执行单元首先获得锁,那么当B进入同一个例程时将获知自旋锁已被持有,需等待A释放后才能进入,所以... 阅读全文

posted @ 2013-01-31 17:14 胡永光 阅读(154) 评论(0) 推荐(0) 编辑

linux并发控制之完成量

摘要: 完成量:表示一个执行单元需要等待另一个执行单元完成某事后方可执行。 1.它是一种轻量级机制,为了完成进程间的同步而设计 2.使用完成量等待时,调用进程是以独占睡眠方式进行等待的 3.不是忙等待 理解: 定义于#include 其结构体为 struct completion { unsign... 阅读全文

posted @ 2013-01-31 17:12 胡永光 阅读(216) 评论(0) 推荐(0) 编辑

linux并发控制之读写信号量

摘要: 读写信号量与信号量之间的关系类似于自旋锁与读写自旋锁。 读写信号量可能会引起进程阻塞,但是它允许N个读执行单元同时访问共享资源,而最多只允许有一个写执行单元访问共享资源;因此,读写信号量是一种相对放宽条件的、粒度稍大于信号量的互斥机制。 注意: 信号量不允许任何操作之间有并发。 理解: 定义... 阅读全文

posted @ 2013-01-31 17:11 胡永光 阅读(283) 评论(0) 推荐(0) 编辑

linux并发控制之信号量

摘要: 信号量(semaphore)是用于保护临界区的一种常用方法,它的使用方式与自旋锁类似 与自旋锁相同的是:只有得到信号量的进程才能执行临界区的代码 与自旋锁不同的是:当获取不到信号量的时候,进程不会在原地打转,而是进入休眠等待状态; 理解: 定义于#include struct semaphor... 阅读全文

posted @ 2013-01-31 17:08 胡永光 阅读(199) 评论(0) 推荐(0) 编辑

导航