SMP:对称多处理器:多个CPU使用共同的系统总线,因此可访问共同的外设和存储器
宏观并行 微观串行
并发(concurrency):多个执行单元同时、并行地执行,而并发的执行单元对共享资源的访问很容易导致竞态(race conditions).
解决竞态的途径是保证对共享资源的互斥访问
互斥访问是一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问
访问共享资源的代码区域就是临界区(critical setions)
互斥的方法:中断屏蔽、原子操作、自旋锁(spin lock)、信号量
原子操作是执行过程中不会被别的代码路径所中断的操作 针对位和整型变量进行原子操作
自旋锁主要针对SMP或者单CPU但内核可抢占的情况,对于单CPU和内核不支持抢占的系统,自旋锁退化为空操作。在单CPU和内核可抢占的系统中,自旋锁持有期间内核的抢占将被禁止
进程获得自旋锁之后再阻塞,可能导致死锁的发生,copy_from_user()、copy_to_user()和kmalloc()都有可能引起阻塞,故在自旋锁占用期间不能调用这些函数
阅读(443) | 评论(0) | 转发(0) |