據我所知,在多對一映射中,一個內核線程管理許多用戶線程。這個內核線程可以幫助用戶線程使用系統調用等什麼我不明白的是:用戶線程與內核線程的多對一映射
- 爲什麼我們有很多一對一的映射,如果一個阻塞調用會 塊中的所有用戶線程由管理內核線程?
- 在用戶線程與內核線程的多對一映射中,用戶線程的所有 必須來自相同的進程嗎?
- 在多對一映射中,所有用戶線程可以同時運行在不同的內核/ CPU上,還是一次只能運行其中一個?
據我所知,在多對一映射中,一個內核線程管理許多用戶線程。這個內核線程可以幫助用戶線程使用系統調用等什麼我不明白的是:用戶線程與內核線程的多對一映射
1)爲什麼我們有很多一對一的映射,如果一個阻塞調用會 塊中的所有用戶線程內核線程管理?
當在線程之間有上下文切換時,具有一對一映射的缺點是內核參與。內核結果涉及幾個開銷。
2)在很多一對一的映射用戶線程的內核線程,做所有 用戶線程都從同一個進程?
是
3)在許多對一映射,可以將所有的用戶線程對不同 核/ CPU上執行或僅它們中的一個在一個時間運行?
具有多對一映射的pro功能是整個線程上下文切換由您使用的用戶級線程庫維護,並且就內核而言,它不知道您有多少線程讓它給進程一個時間片來執行,並由線程庫來控制任何線程。由此可以很容易地看到,在多對一的映射中,只有一個線程可以獲得控制權。
這個問題每月大約出現一次。這是'爲我做的所有工作':( –
清除我所有的疑惑,謝謝。 – Viraj
Google搜索有什麼問題?例如,[第四個參考](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html):'如果阻塞的系統調用被完成,那麼整個過程阻塞''因爲一個單個內核線程只能在單個CPU上運行,多對一模型不允許單個進程在多個CPU中拆分。 – Tsyvarev
在投票回答問題之前,我建議你閱讀所有的子問題,以確保你在谷歌或其他地方的某個地方有答案。僅供參考,我無法在Google上找到他們,因此發佈在此處。另外,子問題有些相關。 – Viraj
其實,[參考](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html)我提供了包含所有問題的答案:1.線程管理由線程處理用戶空間中的庫,這是非常有效的。 2.'多線程應用程序在單個進程中有多個線程,每個線程都有自己的程序計數器......'3.因爲單個內核線程只能在單個CPU上運行......'。是的,細節的程度因不同的問題而有所不同,但這是因爲你一次有幾個細節。 – Tsyvarev