2015-12-02 65 views
-3

我有兩個問題,我不知道哪一個更好,什麼時候?更喜歡用戶線程而不是內核線程

1.我們有沒有更喜歡單核而不是多核?當所有內核都相同?

2.when我們更喜歡使用內核線程,而我們更喜歡使用用戶線程?我們是否有任何時間只使用用戶線程?我的意思是當我們更喜歡使用內核級別和用戶級線程來實現我們的程序時?

示例: 我想從磁盤讀取一些文件,並對這些文件中的每一個執行一些操作,哪一個更適合選擇?

  • 多核系統中使用內核級線程
  • 多核系統中使用用戶級線程
  • 單核系統中使用用戶級線程
  • 單核系統中使用內核級線程
+1

你的兩個問題都很模糊,我們不能說出你在問什麼。你是指多核CPU上的單核CPU,否則這兩個CPU可能完全不同?或者你的意思是所有其他的都是平等的,我們更喜歡單核心CPU到一個CPU,每個CPU有更多核心,每個核心與單核心相同?或者是什麼?而在第二個問題中,你是否更喜歡安排它們?或者你是否更喜歡使用內核線程來實現某些內容? –

+0

對不起,我已經糾正了它,它變得更好了嗎? @DavidSchwartz – user4615534

+0

喜歡哪個理由?比如,爲了節約成本,我們比較喜歡單核多核。 – SergeyA

回答

1
  1. 只要其他內核不會主動侵犯的任何不變(在單一內核上運行)的程序,那麼就theoreticall沒有理由選擇單核多核。但實際上,應該考慮的事情有很多:

    • 緩存未命中,當程序調度到不同的內核時導致。只有核心擁有自己的緩存。而且,這在現代操作系統中可以防止。
    • 潛在的更多的中斷處理:其它內核可以運行,導致代碼它們發射inter-processor interrupts

    此外,有喜歡的成本和可用性顯然非技術問題有待考慮。

  2. 通常,用戶級別線程似乎比內核級別線程更有效。因此對於例如並行計算我會推薦用戶級別的線程。

    我想從磁盤讀取一些文件,並對這些文件中的每一個執行一些操作,哪一個更好選擇?

    你給可能,而另一方面,需要使用的 內核級線程的例子:有什麼閱讀文件和其他互動節目之外通常涉及髮卡系統調用。它們中的很多將會是阻塞系統調用,阻塞整個內核線程。這也意味着在該內核線程上運行的所有(如果有的話)用戶級線程都將被阻塞。

    是否可以利用多核系統提供的額外處理能力高度依賴於具體的任務以及它可並行化的等級。

+0

感謝您的良好回答:) – user4615534

+0

「您是否可以利用多核系統提供的額外處理能力高度依賴於具體的任務,以及它可並行化的等級。」那麼在我的示例中,您提供了多核系統?@DanielJour – user4615534

+0

這取決於您如何處理文件中的數據。並行打開文件很好,但不是真正的性能因素。 –

0

唯一一次我所能想象的(和它需要大量的想象力如此),其中一個用戶線程將是最好的內核線程時,有一些獨特的類型,你需要鎖定問題確保只有一個線程正在執行。

實際使用用戶線程的唯一時間是內核線程不可用時。

+1

如何使用綠線諸如Go之類的「新人」語言和諸如例如Go等已建立的語言。二郎? –

相關問題