linux进程同步与互斥(linux 进程 同步)-冯金伟博客园

Linux内核的同步机制是什么?主要有哪几种内核锁?

从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。

这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡; 伴随着从非抢占内核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。

如何使用Linux提供的信号量来实现进程的互斥和同步?

设互斥信号量mutex初值为1,进程执行操作前P(mutex),操作完成后V(mutex)。P操作使mutex减1,如果mutex

(以前过的关于PV操作的答案一个,你看看有用没)

linux如何实现差异同步?

Linux系统通过信号来实现差异同步。