Linux内核中的同步和互斥分析报告

文章作者 100test 发表时间 2007:05:18 10:57:11
来源 100Test.Com百考试题网


先看进程间的互斥。在linux内核中主要通过semaphore机制和spin_lock机制实现。主要的区别是在semaphore机制中,进不了临界区时会进行进程的切换,而spin_lock刚执行忙等(在SMP中)。先看内核中的semaphore机制。前提是对引用计数count增减的原子性操作。内核用atomic_t的数据结构和在它上面的一系列操作如atomic_add()、atomic_sub()等等实现。(定义在atomic.h中)semaphone机制主要通过up()和down()两个操作实现。semaphone的结构为:

struct semaphore

{

atomic_t count.

int sleepers.

wait_queue_head_t wait.

      }.

相应的down()函数为:

static inline void down(struct semaphore*sem)

{

/* 1 */sem->count--. //为原子操作

if(sem->count<0)

{

struct task_struct *tsk = current.

DECLARE_WAITQUEUE(wait, tsk).

tsk->state = TASK_UNINTERRUPTIBLE.

add_wait_queue_exclusive(

相关文章


Linux 笔记本基于“敲打”的命令
C语言中的指针和内存泄漏
Linux内核中的同步和互斥分析报告
基于LINUX蜜网(Honeynet)的防御系统
Linux系统下的集群原理及实战经历
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛