我已經明白,因爲其他的處理器可以達到在多處理器系統中的共享數據,即使中斷被禁止,我們實施多處理器系統的同步爲什麼多處理器系統需要禁用中斷
環形鎖,但是教科書說:如果多處理器系統同步沒有禁止中斷(只實現了自旋鎖,而不是「禁止中斷」),則其他處理器可能會佔用資源。所以禁用中斷在多處理器系統同步中也是必不可少的
我不明白爲什麼我們仍然要禁用多處理器系統的中斷 任何人都可以回答我的問題嗎?
我已經明白,因爲其他的處理器可以達到在多處理器系統中的共享數據,即使中斷被禁止,我們實施多處理器系統的同步爲什麼多處理器系統需要禁用中斷
環形鎖,但是教科書說:如果多處理器系統同步沒有禁止中斷(只實現了自旋鎖,而不是「禁止中斷」),則其他處理器可能會佔用資源。所以禁用中斷在多處理器系統同步中也是必不可少的
我不明白爲什麼我們仍然要禁用多處理器系統的中斷 任何人都可以回答我的問題嗎?
但教科書上說,如果多處理器系統同步(僅實現了自旋鎖,而不是「禁止中斷」)未禁用中斷,資源可能會被其他處理器佔用。因此,在多處理器系統同步中禁用中斷也很重要
教科書過度簡化並不罕見。
根據您的CPU架構,您當然可以實現一箇中斷未禁用的系統 - 事實上,您會發現多核PC具有中斷並且工作得很好。
但這當然要求你對共享狀態的理解,搶佔和優先級反轉甚至比多線程單核機器更好。禁用所有中斷實際上是一個窮人的解決方案,您的教科書可能不會描繪出最佳實踐解決方案。
我甚至不確定什麼中斷OP是在談論。任何先發制人的操作系統都是以破解爲基礎的,如果沒有這些操作系統就無法運作。 – SergeyA
@SergeyA是的;但我記得許多「業餘愛好者」書籍對微控制器多任務的介紹(另外,在中斷優先級處理的MCU上編寫搶佔式節省ISR的典型最小示例,令人遺憾的是,似乎微控制器公司喜歡讓他們的實習生寫實例)是在關鍵代碼片段之前禁用中斷(通常是等待另一個內核完成其工作)以及之後激活。這太糟糕了,這是不好的做法,它是實時的,現代CPU支持更好的方法,但它仍然被廣泛傳播。 –
有趣!我承認,我從來沒有讀過任何這些書(並且從來沒有爲MCU編寫過程),所以我甚至都不理解OP可能在談論什麼。現在至少它是有意義的,謝謝! – SergeyA
即使是單處理器系統也會禁止中斷以進行同步。這是操作系統序列化的主要方法。
當你獲得螺旋鎖時,儘快完成你的工作,然後釋放。
如果你不阻止中斷,你可以獲得一個自旋鎖然後中斷。
您的文本似乎暗示中斷在所有處理器上都被禁用。這並非總是如此。
我想知道我是否理解你的意思是否清楚。如果其中一個處理器的進程(假設爲A)獲得一個自旋鎖然後被中斷,則該進程進入阻塞狀態,所以如果其他處理器的進程(B)嘗試訪問進入關鍵部分,它必須等待進程A回到運行狀態並退出自旋鎖,這會導致開銷? –
btw非常感謝! –
理論上,處理器可能會阻止自己嘗試獲取它已有的自旋鎖。它也可以增加旋轉鎖定的時間。 – user3344003
這個問題看起來像是由一臺計算機和多線程詞庫中的隨機單詞組合在一起。 – SergeyA
@SergeyA我認爲語言障礙(我希望OP可以幫助我們克服!)和語言障礙相結合。 –