分类: LINUX
2009-03-31 12:28:17
根据Harvey M.Deitel等著的操作系统(第三版)的说法,linux内核提供了两种机制进行互斥访问:锁与信号量。
1. 自旋锁
自旋锁禁止抢占,但本身可能导致无限延期、甚至死锁,通常通过抢占锁计数器进行控制。
2. 阅读程序/写程序锁
阅读锁可以被多重持有,写入锁只能被一个程序持有。
3. 顺序锁
有写入程序在等待时,拒绝新的读取程序进入。
计数的信号量, 由等待队列与计数器表示。
1. 信号
不支持进程间交换多于一个字的数据;
进程或者线程以三种方式中的一种处理信号,这三种方式分别是:
忽略信号;
捕捉信号;
执行内核为信号定义的默认动作,包括放弃、执行内存转储、简单忽略信号、停止和继续。
2. 管道
利用生产者消费者模型进行通信。
3. 套接字
主要类型包括:
流套接字,以字节流传输信息;
数据文报套接字,在数据文报的独立单元中传输信息。
4. 消息队列
5. 共享内存
6. System V信号量