Mac OS X - каковы отношения между демоном и jvm - PullRequest
0 голосов
/ 28 мая 2011

Насколько я понимаю, в Mac OS X демон работает в фоновом режиме (так же, как служба Windows). Могу ли я установить связь между демоном, сказав, что dameon, написанный на Java, считается JVM? Я читал кое-что, где люди упоминали о нити демона и нити jvm, как они связаны?

1 Ответ

1 голос
/ 28 мая 2011

Нет. JVM - виртуальная машина Java - это исполняемый файл, который запускает вашу Java-программу. daemon - это любая программа, которая запускается без привязки к определенному терминалу, например, oh launchd.

Итак, рассмотрите возможность запуска java-программы из командной строки: файл jar - это myapp.jar, и вы набираете

 $ java -jar myapp.jar

Запускает исполняемую программу по пути /usr/bin/java, которая является обычной программой. Это просто тот, который включает в себя интерпретатор для Java-инструкций, "java virtual machine ". Он запускает и имитирует эту специальную абстрактную Java-машину и работает до тех пор, пока все нормальные потоки Java-программы не завершатся. Затем он возвращает код возврата и завершает работу. Поскольку этот java-процесс был запущен оболочкой, он является дочерней программой оболочки, и оболочка получает уведомление о завершении.

Теперь можно написать программу, например, на C, которая создает процесс, не принадлежащий оболочке; его родитель становится процессом с идентификатором процесса 1, который в большинстве систем UNIX называется init (1) или launchd в Mac OS / X. Процесс, принадлежащий PID 1, выполняется до тех пор, пока он не будет остановлен командой shutdown или завершится сам (или завершится сбоем).

Эти процессы называются демонами в честь более чем человеческих духов в греческой мифологии. Их так называют, потому что (а) это милое имя; (б) они обладают «сверхъестественными способностями» по сравнению с обычной пользовательской программой; и (c) хакеры старого времени, такие как милые имена.

...