我正在研究ULT和KLT,並有這個疑慮。如果操作系統無法區分ULT和進程,那麼它的線程表中是否有任何ULT條目?操作系統維護的線程表中是否有用戶級線程的條目?
1
A
回答
2
如果操作系統無法區分ULT和進程,那麼它的線程表中是否有ULT條目?
否 - 就操作系統而言,用戶級別線程不存在。相反,只有一個線程/進程,通過調用setjmp()和longjmp()來執行「有趣的事情」。
2
號
操作系統(內核)只知道內核級線程,並沒有用戶級線程的知識。用戶級線程由提供線程功能的用戶庫管理。
例如,Linux不區分線程和進程。可以調度的實體由task_struct數據結構表示。 所以當你的庫想創建一些線程時,它會要求內核創建(使用clone())相應的task_structs。您的庫可能只需要一個task_struct,在這種情況下,您的所有用戶級別線程都複用在同一個task_struct中,或者它可能會爲每個用戶級別線程請求一個task_struct,在這種情況下,每個用戶級別線程都可以被內核用於調度,因爲每個線程有一個task_struct。我們可以說 內核只知道內核級線程。用戶級別的線程由相應的庫創建和管理。
相關問題
- 1. 是否有可能使用操作系統線程創建自己的線程?
- 2. forkIO線程和操作系統線程
- 3. 是否有任何操作系統不支持線程?
- 4. 操作系統線程調度程序是否被JVM覆蓋?
- 5. 進程和線程在操作系統
- 6. Java線程和操作系統線程之間的通信
- 7. GPars actors模型是否使用用戶線程或本地操作系統線程
- 8. 操作系統和併發線程
- 9. 系統線程vs非系統線程
- 10. 無效Java線程和本地操作系統線程
- 11. 是否多線程Java進程比操作系統的單線程程序更經常地調度?
- 12. i7處理器與Windows8操作系統的多線程問題操作系統
- 13. 是java的多線程對操作系統可見
- 14. 如何在單線程中使用java實現多線程操作系統?
- 15. 當我運行單線程Java程序時,爲什麼在操作系統級別有多個線程?
- 16. Linux操作系統:系統()+ SIGCHLD處理多線程+
- 17. 實時嵌入式操作系統的線程調度程序
- 18. 託管的主UI線程是否停留在同一個(非託管的)操作系統線程上?
- 19. 操作系統線程在Go程序中
- 20. 守護進程線程是否也是守護進程線程啓動的線程?
- 21. 託管線程切換操作系統線程的頻率如何?
- 22. weblogic線程監控顯示不正確的數字與操作系統線程
- 23. 操作系統多線程有哪些困難?
- 24. 將java線程池中的線程作爲守護程序線程是否存在任何問題
- 25. 是否可以在操作系統或編程語言級別實施無共享多線程? (OSX,Objective-C)
- 26. 從多線程過程調用系統(3)是否安全?
- 27. 通過Mule中的守護進程線程維護多個HttpRequests
- 28. Ruby中的多線程系統調用
- 29. C#中的線程操作
- 30. 線程是否表示線程安全?
然後TCB的地址被存儲在哪裏以及它如何管理? –
這將是用戶進程內部的數據結構,就像任何其他用戶級別的數據結構一樣。它將由用戶級線程庫管理。 –
好的,謝謝。我明白了:) –