Внедрение JVM потокового распределения и многоядерности - PullRequest
3 голосов
/ 17 ноября 2010

Я занимаюсь изучением языковых реализаций на многоядерных платформах.В настоящее время я пытаюсь выяснить пару вещей:

  • Как реализация JVM отображает java.lang.Thread в собственный поток ОС ?
  • Например, скажем Open JDK, я думаю, что даже не знаю, на какие части мне стоит взглянуть, чтобы узнать больше об этом.Есть ли документ, описывающий, как реализованы функции native ?Поскольку в java.lang.Thread есть части, которые являются родными, я предположил, что, возможно, некоторые дополнительные внутренние части закодированы в собственных частях.

Принимая это к многоядерности, как это отображение сделано для многоядерности?Как потоки отображаются на разные ядра для одновременной работы?Я знаю, что есть реализация ExecutorService, которую мы можем использовать, чтобы воспользоваться преимуществами многоядерных функций.Это может быть следствием предыдущих ответов: если собственные потоки ОС отвечают за распределение работы и планирование потоков, то верно ли сказать, что JVM делает через ThreadPool и ExecutorService только создание потоков и передачу задачих?

Буду благодарен за ваши ответы, а также если я нахожусь на правильном пути по теме.

1 Ответ

1 голос
/ 17 ноября 2010

Например, скажем Open JDK, я думаю, я даже не знаю, на какие части мне стоит взглянуть, чтобы узнать больше об этом.

Вы должны начать с рассмотрения частейисходный код, который написан на C ++.AC / C ++ IDE может помочь вам в исследовании кодовой базы.

Если принять это к многоядерности, как это сопоставление сделано для многоядерности?Как потоки отображаются на разные ядра для одновременной работы?

Я уверен, что операционная система заботится об этом аспекте, а не JVM.

..Правда ли, что JVM через ThreadPool и ExecutorService создает только потоки и передает им задания?

AFAIK, да.

...