Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在非preemtive linux内核上锁定 – spin_lock大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在一个具有1个CPU和非预处理 Linux内核(2.6.x)的系统上读到,spin_lock调用相当于一个空调用,因此以这种方式实现. 我无法理解:它不应该相当于在互斥上睡一觉吗?即使在非preemtive内核上,中断处理程序仍然可能被执行,或者我可能会调用一个将原始线程置于休眠状态的函数.因此,空的spin_lock调用是“安全的”并不是真的,如果它被实现为互斥锁的话. 有没有我得不到的东西?
我在一个具有1个cpu和非预处理 Linux内核(2.6.x)的系统上读到,spin_lock调用相当于一个调用,因此以这种方式实现.

我无法理解:它不应该相当于在互斥上睡一觉吗?即使在非preemtive内核上,中断处理程序仍然可能被执行,或者我可能会调用一个将原始线程置于休眠状态的函数.因此,空的spin_lock调用是“安全的”并不是真的,如果它被实现为互斥锁的话.

有没有我得不到的东西?

解决方法

引自“Linux设备驱动程序”,Jonathan Corbet,Alessandro Rubini和Greg Kroah-Hartman:

如果您对在中断上下文(硬件或软件)中运行的代码可以使用的自旋锁感兴趣,则必须使用一种禁用中断的spin_lock_ *形式.如果在您进入关键部分时中断到达,则不会这样做会使系统死锁.

大佬总结

以上是大佬教程为你收集整理的在非preemtive linux内核上锁定 – spin_lock全部内容,希望文章能够帮你解决在非preemtive linux内核上锁定 – spin_lock所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: