linux内核--同步和并发
这是在《linux内核设计与实现》中关于同步和并发的简短解释,看了这种书法也许会有新的认识。不过在计算机领域内关于同步/异步有很多种应用场合。
内核很容易产生竞争条件。和单线程的用户空间程序不同,内核的许多特性都要求能够并发地访问共享数据,这就要求有同步机制以保证不出现竞争条件,特别是:
- linux是抢占式多任务操作系统。内核的进程调用程序既兴对进程进行调度和重新调度。内核必须和这些任务同步。
- linux内核支持对称对处理器系统(SMP)。所以,如果没有适当的保护,同时在两个或两个以上的处理器执行的内核代码很可能会同时访问共享的同一资源。
- 中断是异步到来的,完全不顾及当前正在执行的代码。也就是说,如果不加以适当的保护,中断完全有可能在代码访问资源的时候到来,这样,中断处理程序有可能访问同一资源。
- linux内核可以抢占。所以,如果不加以适当保护,内核中一段正在执行的代码可能会被另一段代码抢占,从而有可能导致几段代码同时访问相同的资源。
- 常用的解决竞争的办法是自旋锁和信号量。