2015-02-09 51 views
1

這裏很新穎的線程和操作系統構造,Java線程和POSIX線程,用戶或內核級別?

想知道是否有人可以爲我清理一些東西。

在C中實現線程時,您有權訪問POSIX線程,是POSIX線程還是OS級線程?在內核級別運行?

而在Java創建和運行線程時,這些用戶級線程是什麼?我們對java中的操作系統級構造有什麼級別的訪問? Java中的信號量是否僅在用戶空間中設置?

在此先感謝您對這些問題的任何見解。

+1

'OS級構造'是什麼?顯然,I/O將需要操作系統支持,信號量等需要線程等待的類似sychro機制。 – 2015-02-09 08:18:45

回答

3

POSIX線程是內核線程。內核線程是「正常」線程;你會知道你是否在C中使用用戶線程(因爲你必須自己編寫整個線程系統)。

Java線程通常也是內核線程。在類Unix系統上,他們可能使用POSIX線程;在Windows上,他們使用Windows線程。可以想象,沒有線程的系統有一個JVM,它自己實現線程(作爲用戶線程)。

+0

感謝@immibis爲我清除了相當多的東西。就信號量而言,在C和Java中實現信號量時。可以肯定地說,C給出了信號量的低一級訪問權限?說過程水平與線程水平?或者這也可以在Java中使用? – pipedreams2 2015-02-09 17:13:58

+0

@ pipedreams2什麼是「進程級別信號量」或「線程級信號量」? – immibis 2015-02-09 18:31:53

+0

對不起,如果我可能得到一些術語錯誤,我在這個領域是相當新的。就我的理解而言,信號量是一種同步工具,在C中,您可以在內核或操作系統級訪問這些信號,並且可以通過不同的進程訪問它們,即使它們駐留在當前程序地址空間之外。在Java中,我所看到的所有對信號量的引用都是通過線程來實現的。所以想知道Java是否通過信號支持進程間通信? Java中的信號燈與C中有什麼不同? – pipedreams2 2015-02-09 18:52:38