2015-02-09 52 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