本文主要是介绍Spinlock kernel lock mechanism,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、概述
spinlock是kernel的一种锁机制
kernle的锁机制有三种:
spinlock
mutex
semaphore
在设备驱动开发中,spinlock与mutex比较常用
一个thread去获取spinlock的时候是会不断的去轮询的,比较耗用cpu资源。(在mutex的时候,是进入sleep,所以不耗cpu资源)。所以spinlock用在很短的lock任务下。
在thread进入spinlock的时候,kernel会禁用抢占(preemption),抢占是相对于thread或task说的,和中断不同。中断的优先级是高于thread或task的。
所以在单核处理器中,不要使用spin_lock,这会禁用所有其它的task,使用spin_lock_irqsave,用来禁用中断。spin_lock_irqsave和spin_unlock_irqsave会根据处理器的核数自动选择。
spinlock不应该只用在interrupt中,在多核系统中,如果有不同的task使用同一个共享变量,都应该使用spin_lock_irqsave。因为可能被中断阻止。
二、实施
spin_lock
data 。。。
spin_unlock
spin_lock_irqsave
data。。。
spin_unlock_irqsave
这篇关于Spinlock kernel lock mechanism的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!