什麼是自願先發制人?我只知道這是一個計劃中的概念。什麼是自願先發制人?
3
A
回答
3
這取決於操作系統。
在某些RTOS,自願搶佔意味着正在運行的進程聲明它是可以被搶佔的點(其中否則將運行到完成)。想到這種變體的另一種方式是產生在協同程序中的。這與內核確定搶佔的大多數桌面操作系統形成鮮明對比。請記住,一些RTOS不具有「用戶模式」的概念。
在Linux中(至少),「自願搶佔」是名不副實的位:
傳統(無被迫搶佔),當用戶進程進行系統調用(在內核模式下),它會阻塞直到完成。只有用戶模式代碼可以被搶佔。
搶佔式內核使內核代碼本身可以被搶佔。這聽起來多餘,但值得注意的是,我們的意思是內核是可搶佔的,而不是「內核支持搶佔」。強制/非自願搶佔意味着即使在爲系統調用提供服務時,對於高優先級用戶進程的中斷也可以「強制」內核進行上下文切換,以便它現在可以運行(從技術上講,它不是真正的上下文切換,但它具有相同的影響)。這減少了用戶進程「看到」硬件狀態變化的延遲。
自願搶佔是內核定期檢查是否應該在「執行內核事務時」重新安排進程的地方。也就是說,它不是隻在預佔點調度/重新調度用戶進程,而是在處理諸如I/O之類的事情時定期執行它。因此,通常高優先級用戶進程可能仍然需要等待低優先級進程完成其片,高級進程現在可能會「提早」運行,因爲內核正在更頻繁地檢查它是否要運行。這減少了用戶進程從掛起狀態轉換到運行狀態的延遲(以整個系統吞吐量爲代價)。
相關問題
- 1. 關於先發制人和非先發制人的內核
- 2. 什麼是發件人?
- 3. Oracle中的自願事務優先級
- 4. saml發行人爲什麼複製
- 5. Linux先發制人的內核影響?
- 6. 什麼是自制軟件?
- 7. 爲什麼i ++先發生?
- 8. 爲什麼 「(UIButton的*)發件人」,而不是 「的UIButton *發件人」?
- 9. RemoteCertificateValidationCallback中的發件人是什麼?
- 10. 從電報機器人發送郵件的限制是什麼
- 11. 什麼是「jetsam優先」?
- 12. 什麼是最先進的人臉識別方法?
- 13. 什麼是發行人的祕密?應該輸入什麼?
- 14. 爲什麼我們更願意自己做,而不是使用AFNetworking?
- 15. 我可以爲自願捐贈使用什麼? (如Tipjoy)
- 16. 「高度非自願情境」開關意味着什麼?
- 17. 什麼是開發者控制檯上的beta/alpha測試?它對開發人員有什麼幫助?
- 18. 爲什麼UIActionSheet是自動發佈的?
- 19. 什麼是Facebook開發者控制檯?
- 20. 首先會發生什麼,MovieClip.onLoad()或Event.ENTER_FRAME?
- 21. 先發生什麼 - Symfony2持續存在
- 22. php header首先發生什麼事?
- 23. Ruby中的祖先是什麼?他們的用途是什麼?
- 24. 什麼是「阻止他人」
- 25. 什麼是在(IBAction)行動中的(id)發件人:(id)發件人;
- 26. Scrum:首先是:產品願景或傳統需求
- 27. 「先行發明與原創作品」是什麼意思?
- 28. 正則表達式 - 不是最先發生的 - 爲什麼?
- 29. 什麼是最先進的自動更新技術?
- 30. 什麼是家庭自動化的先決條件?
http://www.springerlink.com/content/p6011h66m7088163/ – 2011-03-02 23:48:59