摘要:
相关数据结构 首先看看信号量的相关数据结构: <include/linux/semaphore.h> struct semaphore { spinlock_t lock; #lock应该是这个信号量的自旋锁 unsigned int count; #count表示的是这个信号量的计数器 struct list_head wait_list; #wait_list顾名思义应该是等待链表... 阅读全文
摘要:
2005 年 7 月 01 日 本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用。 一、 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬... 阅读全文
摘要:
从2.6.10开始,Linux内核提供了一个通用的环形缓存(我喜欢称为环形队列);它的头文件是<linux/kfifo.h>,kfifo.c是实现代码。 在设备驱动中环形缓存出现相当多. 网络适配器, 特别地, 常常使用环形缓存来与处理器交换数据(报文)[LDD3]。 见下面的图“LDD3中描述的队列”。 我们来看下kfifo的数据结构: struct kfifo { unsign... 阅读全文
摘要:
锁无关的(Lock-Free)数据结构 在避免死锁的同时确保线程继续 http://blog.csdn.net/pongba/archive/2006/01/26/588638.aspx Andrei Alexandrescu 刘未鹏 译 Andrei Alexandrescu是华盛顿大学计算机科学系的在读研究生,也是《Modern C++ Design》一书的作者。他的邮箱是 andr... 阅读全文
摘要:
lock-base 机制 semaphore(P 减操作, V是加操作) semaphore 在SMP中都要用到 memory barrier , 通过唯一的内存访问来保证一致性。 mutex( 资源为 1 的semaphore) read/write lock (semaphore的衍生, reade pv: 1, write pv... 阅读全文
摘要:
Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactio... 阅读全文