Инициализация системы: системный launchd

Когда ядро загружено и работает, Mac готов запускать процессы от лица системы и в конечном счете от имени пользователей. Первым обычным (не ядро) запускаемым процессом является системный процесс launchd, расположенный в /sbin/launchd, который запускается от имени пользователя root и которому присваивается идентификатор процесса с номером 1. В терминах UNIX системный процесс launchd - это первый родительский процесс, который порождает все другие дочерние процессы, а те, в свою очередь, порождают следующие.

Первая задача для системного процесса launchd - завершить инициализацию системы, запустив все остальные системные процессы. В предыдущих версиях Mac OS X показывалось диалоговое окно Welcome to Mac OS X (Добро пожаловать в Mac OS X) с индикатором хода выполнения для обозначения состояния инициализации системы в процессе загрузки различных системных процессов. Однако в Mac OS X 10.5 процесс launchd был значительно оптимизирован, поэтому инициализация системы занимает только несколько мгновений и обозначается белым фоном на всех мониторах. Когда отображается белый фон, процесс launchd запускает процесс WindowServer, который отвечает за прорисовку пользовательского интерфейса Lion, и это явный признак того, что все идет хорошо.

Процесс launchd ускоряет инициализацию системы, запуская несколько системных процессов одновременно, где это только возможно, и инициируя сначала только самые важные системные процессы. После запуска системный процесс launchd по мере необходимости автоматом запускает и останавливает дополнительные системные процессы. Динамически управляя системными процессами, launchd повышает эффективность и быстродействие Mac.

Дополнительная информация, launchd является очень мощной системой с открытым исходным кодом для управления службами. Узнать больше о процессе launchd можно, прочитав его страницу руководства в программе Terminal (Терминал).

Объекты системного процесса launchd

Как было рассмотрено в уроке 4, процесс launchd управляет системными процессами, как задано в файлах настроек launchd в папке /Система/ Библиотеки/LaunchDaemons (/System/Library/LaunchDaemons). Процессы сторонних поставщиков также могут управляться этим процессом, если они описываются файлами настроек процесса launchd в папке /Библиотеки/ LaunchDaemons.

Компания Apple рекомендует разработчикам использовать систему launchd для всех автоматом запускаемых процессов. Но системный процесс launchd также поддерживает устаревшие процедуры автоматического запуска. К ним относятся поддержка выполнения традиционного сценария UNIX /etc/rc.local в ходе инициализации системы (если он присутствует), хотя по умолчанию данный сценарий не включен в состав Lion. Системный процесс launchd запускает также процесс /sbin/SystemStarter, который управляет устаревшими объектами запуска Mac OS X. Lion не включает никаких встроенных объектов запуска, но процесс SystemStarter все равно проведет поиск сторонних объектов запуска в папках /Система/Библиоте-ки/StartupItems (/System/Library/Startupltems) и /Библиотеки/Startupltems (/Library/Startupltems).

Просмотр иерархии процесса launchd

Приложение /Программы/Утилиты/Мониторинг системы (/Applications/ Utilities/Activity Monitor) перечисляет все процессы вместе с их идентификаторами и связями «родитель/потомок». В Мониторинге системы (Activity Monitor) можно отсортировать список процессов, щелкнув на заголовке столбца PID (Process ID). Для того чтобы узнать процесс-родитель данного процесса, нужно дважды щелкнуть на его имени в списке. Показывая список процессов, приложение Мониторинг системы (Activity Monitor) оказывает бесценную помощь в анализе того, как Lion запускает рабочую среду пользователя. Подробная информация об использовании приложения Мониторинг системы (Activity Monitor) приводится в уроке 5.