2014-01-27 117 views
1

調度我的操作系統上學習處理過程,和我到達了它討論進程和線程的一部分。我知道CPU一次只能運行一個進程,因此有幾種調度算法可用於優先處理就緒隊列中的進程。進程和線程在操作系統

現在,當我搬到線程事情開始變得有點混亂。由於一個進程可能由多個線程組成,那麼對於每個單獨的線程或每個進程而言,調度會是什麼?

例如:

我在Windows上。我雙擊一首歌曲在VLC中啓動它,然後雙擊MS Word開始編寫報告,最後打開Chrome瀏覽器檢查我的郵件。

讓我們假設把事情簡單化如下:

  • VLC進程只有一個線程。
  • MS Word在其進程中有5個線程。
  • 瀏覽器會爲每個我在瀏覽器中打開的選項卡的線程。
  • 所有這些程序都用Java編寫的,並在這些程序中的所有線程都使用Thread class創建。

現在哪個是用戶線程,哪個是內核線程?

在安排上的過程或者線程?

線程數量較多的進程會運行較長時間還是操作系統不知道每個進程中的線程數量?

+1

線程==輕量級進程。調度發生在線程級別,而不是進程。 –

回答

1

應用程序通過不同的語言發展,不同語言實現的線程不同。基本上有2種不同的實現。

  1. 爲應用程序中創建的每個線程創建單獨的內核線程。
  2. 在應用程序的主線程中管理應用程序創建的線程。

注意:Java的實現也可能將JVM改變爲JVM,因此它取決於使用哪個JVM和OS。

來到你的下一個問題。計劃將在線程上不在進程上。