gpt4 book ai didi

linux - SMP linux 中的互斥所有者

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:58 25 4
gpt4 key购买 nike

在mutex的内核实现中,thread owner字段只有在SMP构建时才存在。我可以理解,在良好且干净的代码下,线程只会在获取成功时调用释放,因此我们可以通过不跟踪线程来节省一些缓存和 cpu 周期。但是为什么 SMP 需要它呢?是因为在 SMP 中,互斥体是混合的并且自旋,而线程所有者在另一个 cpu 上并且需要这个字段作为引用,还是背后有更多原因?

最佳答案

老实说,我现在不记得 linux 内核互斥体的实现,但我至少看到三个将互斥体所有者直接存储在数据结构中的原因:

  1. 用于调试。从内核崩溃转储中很容易检测到所有者
  2. 用于运行时断言。检测到获取您已经获取的互斥量的尝试变得非常容易。
  3. 为了实现优先级继承协议(protocol)或任何其他解决优先级倒置问题的机制:http://en.wikipedia.org/wiki/Priority_inversion

关于linux - SMP linux 中的互斥所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com