gpt4 book ai didi

operating-system - 自旋锁在单处理器单核架构中有用吗?

转载 作者:行者123 更新时间:2023-12-03 23:29:08 25 4
gpt4 key购买 nike

我对自旋锁的功能感到困惑。

自旋锁用于阻止进程重新调度。
但是,在只有一个内核的机器中,使用自旋锁有用吗?
防止上下文切换?

最佳答案

您的观察很好:在单处理器系统上,旋转等待资源是没有意义的,因为您最好尽早切换线程。互斥体和信号量正是这样做的。

在多处理器系统上,另一个处理器上的线程可能会在没有上下文切换的情况下释放锁。如果您不希望等待很长时间,自旋锁可能会很有用,因为在另一个线程解锁之前等待它可能会更快。如果您在互斥锁上 sleep ,您基本上可以确保在重新安排之前有一些重要的死区时间。

然而,在内核代码中,情况发生了变化:中断处理程序需要访问与内核其余部分共享的资源,但它们无法休眠。互斥量会使内核进入休眠状态,因此您不能使用它们,但自旋锁也没有用,因为没有任何东西会中断单处理器上的中断处理程序(好吧,也许是另一个中断,但这很可怕)。

然后,在内核中,中断处理程序中的自旋锁编译为无操作。就像您想的那样,它们被完全省略了。同时,为了防止竞争,内核其余部分中的自旋锁在它们实际自旋之前禁用中断(因为可以调度内核任务)。如果这些代码与中断处理程序共享代码,则它们只需要自旋锁(而不是互斥锁)。

一般来说,你是对的:如果您有互斥锁,自旋锁在单处理器上真的没有多大意义,因为互斥锁浪费的时间更少。

关于operating-system - 自旋锁在单处理器单核架构中有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025859/

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