2
A
回答
2
'或者多線程和中斷之間有什麼關係?
在大多數現代搶佔式操作系統中,中斷是操作系統進入的方式 - 除非出現中斷,否則操作系統什麼都不做。中斷有兩種形式 - 從設備/驅動程序(即磁盤,鍵盤,NIC,鼠標,USB,內存管理硬件,計時器硬件)和'軟件中斷'(即軟件中斷)的硬件中斷。系統調用。任何一種中斷都可以改變就緒/運行線程的集合。本質上,OS是一個大的中斷處理程序,可以選擇更改中斷返回後將運行的一組線程。
硬件中斷的重新調度允許搶先式多線程操作系統在硬件(和/或其相關驅動程序)需要關注時能夠快速響應。
線程級對硬件信號的這種高性能響應是搶佔式多任務器對協作系統的最大優勢,也是我們忍受線程間信令,同步等複雜性的主要原因。
沒有中斷和搶佔,磁盤,網絡,USB的性能顯示,幾乎在我們的桌面系統上的一切都會非常糟糕,以至於像視頻流這樣的應用程序將無法正常工作。當一個網卡芯片有一個很好的大視頻緩衝區時,它可以引發一個硬件中斷,讓它的驅動程序運行,並用數據加載一個用戶緩衝區,並在視頻流應用程序中創建一個線程,等待I/O,準備/運行,以便它可以顯示數據。
3
時間和事件驅動線程調度的最常見實現是基於中斷。例如,硬件定時器會產生週期性中斷。處理它們的ISR可以將當前正在執行的線程的狀態保存到線程的狀態結構中,然後從另一個結構中加載另一個線程的狀態,並在執行最後的ISR指令(某種「中斷返回」/ IRET)使CPU執行另一個線程。
1
這恰恰類似於多任務處理的時間劃分。如果一個線程可以被中斷來運行另一個線程,則不必擔心線程佔用處理器並阻止其他線程進行任何前進。
0
多線程
thread1 ______ _____
thread2 _____ _____
thread3 _____ _____
線程共享CPU時間
中斷
isr ________
threadn _________ _________
中斷總是導致上下文切換的中斷處理程序/中斷服務程序和武力奪取的CPU時間。
相關問題
- 1. 需要幫助實現多線程在C#中
- 2. 如何實現反應本地技術
- 3. Spring如何實現該技術?今天
- 4. 需要數據緩存技術幫助
- 5. 需要幫助選擇技術
- 6. 哪個Windows幫助技術使用DLL來包含實際的幫助內容?
- 7. @prototype範圍如何幫助多線程
- 8. 實現類推技術
- 9. IVR技術實現細節
- 10. 需要幫助實現多線程進入我的TreeView(C#,WPF)
- 11. 幫助Python多線程
- 12. .NET多線程幫助
- 13. Python多線程幫助
- 14. wxPython:多線程幫助
- 15. java中的多線程程序幫助
- 16. 幫助!如何創建UI技術規格
- 17. 線程「main」中的異常java.awt.AWTError:未找到輔助技術
- 18. 在Android中實現iBeacon技術
- 19. 如何在ewam中實現多線程?
- 20. 如何在wpf中實現多線程
- 21. Android中的多線程幫助類
- 22. 如何在Tensorflow中實現新的池化技術?
- 23. 散列中的摺疊技術以及如何實現它?
- 24. 幫助避免在python/django中出錯的工具或技術
- 25. 在PowerShell中,技術上的「幫助」命令是什麼?
- 26. 幫助使用滑動門技術幫助造型asp:按鈕控件
- 27. Play Framework的幫助如何實現?
- 28. 實現多線程
- 29. 建議的重新實現技術stackoverflow.com
- 30. IOS Notification實現設計技術
+1沒有提及'time-slicing',雖然它會更好,你可以選擇除定時器中斷之外的其他例子。 – 2012-02-29 12:23:02
@MartinJames:定時器中斷有什麼問題?它肯定不是唯一的中斷源,但它有什麼問題?許多操作系統都將其用於此目的。 – 2012-02-29 17:56:53
沒有什麼錯,除了定時中斷,這麼多的「如何穿線工作」在網絡上的文本暗示定時器中斷是唯一一個改變集運行的線程,(注意:我不包括你的帖子在那一套!)。一般來說,如果這樣的文本在前幾段中提到了「時間分割」或「量子」,那麼如果不是實際上不正確的話,這是令人遺憾的誤導。 – 2012-03-01 11:19:53