Потоки Java реального времени и потоки уровня ОС в Linux - PullRequest
4 голосов
/ 09 мая 2011

При использовании потоков Java в реальном времени (RealtimeThread или NoHeapRealtimeThread), существует ли соотношение 1: 1 между потоками уровня ОС и потоками Java?Кроме того, Java использует fork () или clone () для каждого из процессов, созданных на уровне ОС?

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Поток Java в linux зависит от версии, но большинство современных реализаций используют pthread, поток для linux, а не процесс.поток linux также известен как облегченные процессы, которые генерируются не вызовом fork, а вызовом pthread.Потоки выполняются в рамках одного и того же процесса и могут совместно использовать определенные ресурсы.

Да, они имеют отношение 1 к 1 (ps -Lf), но действительно трудно определить, какой именно, как поток osid - это магическое число, которое знает только jvm.

Статья ниже должна помочь.

http://linuxprograms.wordpress.com/2007/12/19/linux-kernel-support-for-threads-light-weight-processe/

0 голосов
/ 09 мая 2011

в Java используется fork () или clone () для каждого из процессов, созданных на уровне ОС?

Если вы имеете в виду процессы, созданные Runtime.exec (), он должениспользуйте fork ().Если вы все еще обращаетесь к потокам, он не может использовать fork (), поскольку потоки не являются процессами.

0 голосов
/ 09 мая 2011

Из того, что я видел на RedHat 3.x - 5.x с Sun / Oracle JVM, это процесс одной ОС на каждый поток Java.Не знаю насчет вилки против клона.

...