1. 程式人生 > >一段自旋鎖和中斷不能睡眠的解釋

一段自旋鎖和中斷不能睡眠的解釋

自旋鎖不能睡眠:

    A獲得鎖睡眠,B在等鎖怎麼辦,可能會等很久哦,B就一直自旋等著,光等著不幹活。獲得鎖,本來就是要操作一些共享資源,所以趕快的,別墨跡,還睡個球。

禁止中斷不能睡眠:

    禁止中斷就是希望不被打擾,趕緊幹完自己該做的事,還睡覺,我靠,還想不想幹了。當硬體中斷來的時候,這種情況不能睡眠,想想也對,你來強行打斷人家,還想帶著人家去睡,怎麼可以,中斷上下文不應該睡眠,只有程序上下文可以睡,技術當然可以實現,但沒有意義。

    spinlock的初衷是關排程,別人別和我搶這個臨界區,同時也不讓其他核搶。

    關中斷時不能睡眠,因為睡眠依賴排程器,排程器通過時鐘中斷判斷何時喚醒任務。