计算机领域中,锁(lock)是一种用于在并发环境中保护数据不被破坏的数据结构…
打捞于2024-02-07 22:36
阅读2.03K
NO.000644
计算机领域中,锁(lock)是一种用于在并发环境中保护数据不被破坏的数据结构。它的工作原理很简单,当我想要使用某个数据时,我需要给这份数据上锁;而如果这把锁已经被锁上,那就说明有其它的什么东西正在并发地使用它,如此我就只能等待。
锁有多种变体,自旋锁(Spinlock)即是其中一种。自旋锁通常假定「即便有『其他人』正在使用数据,也会很快使用完毕然后解锁」,因此自旋锁会「持续不断地尝试抢占数据并上锁」。这种持续不断的尝试正是「自选(spin)」之所以得名的原因。
由于 spinlock 的这一特性,它经常被用在操作系统内核当中。这就联系上了第二个单词:panic。所谓 panic,直译叫做「恐慌」。内核恐慌(kernel panic)无非只是内核崩溃(kernel crash)的一种约定俗成的称呼罢了。之所以起了这么个名字,是因为在早期的操作系统(AT&T 系及 BSD 系)里使用了 panic() 这个系统调用来处理内核崩溃的日志信息。
因此,所谓的 Spinlock Panic 就是一个因为自旋锁而导致的内核崩溃。内核一旦崩溃,操作系统就无法正常工作了,那也就只能重启了。
