Сеанс пользователя

В конце концов, после того как достаточное количество системных процессов будет запущено, системный процесс launchd запустит приложение /Система/Библиотеки/CoreServices/loginwindow.app (/System/Library/ CoreServices/loginwindow.app). Процесс loginwindow уникален тем, что работает и как фоновый процесс, и как приложение графического интерфейса. Этот процесс координирует экран входа в систему и совместно с процессом opendirectoryd проводит проверку подлинности пользователя. После аутентификации процесс loginwindow совместно с пользовательским процессом launchd также инициализирует графический интерфейс рабочей среды пользователя и продолжает работать как фоновый процесс для поддержки сеанса пользователя.

Пользователь может проходить проверку подлинности вручную с использованием экрана входа в систему, или же процесс loginwindow может быть настроен на автоматический вход определенного пользователя при загрузке. Как рассматривалось ранее, система будет выполнять автоматический вход, когда пользователь при загрузке проходит проверку подлинности для разблокировки системного тома, защищенного системой FileVault 2. Настройки процесса loginwindow хранятся в файле настроек /Библиотеки/Настройки/сот.apple.loginwindow.plist (/Library/Preferences/ com.apple.loginwindow.plist). Как было рассмотрено в уроке 2, можно сконфигурировать настройки процесса loginwindow на панели настроек Пользователи и группы (Users & Groups).

Если в системе еще нет ни одного пользователя, то процессом loginwindow владеет пользователь root. Когда пользователь успешно проходит проверку подлинности, процесс loginwindow делает этого пользователя владельцем, а затем переходит к настройке графической рабочей среды пользователя с помощью пользовательского процесса launchd. В действительности системный процесс launchd запускает другой свой экземпляр, владельцем которого будет вошедший в систему пользователь. Все процессы и приложения пользователя, даже те, которые он открывает вручную, будут запускаться специфичным для пользователя процессом launchd. Если включена функция быстрого переключения пользователей, системный процесс launchd будет запускать дополнительные процессы loginwindow и launchd для инициализации и обслуживания рабочей среды каждого пользователя.

Инициализация рабочей среды пользователя

Пользовательские процессы loginwindow и launchd настраивают графическую рабочую среду пользователя следующим образом.

► Извлекается информация учетной записи пользователя из процесса opendirectoryd и применяются все настройки учетной записи.

► Конфигурируются мышь, клавиатура и системный звук, исходя из предпочтений пользователя.

► Загружается вычислительная рабочая среда пользователя: предпочтения, переменные окружения, разрешения устройств и файлов и связки ключей.

► Открывается панель Dock (отвечающая за Mission Control), приложение Finder и SystemUIServer, которое отвечает за элементы пользовательского интерфейса, такие как дополнительные меню с правой стороны строки меню.

► Автоматически открываются объекты входа в систему пользователя.

► По умолчанию в Lion автоматом восстанавливается состояние приложений, которые были открыты на момент выхода из системы.

Важно понимать отличия между механизмами автоматического запуска в Lion: демонами запуска, объектами запуска, агентами запуска и объектами входа в систему. Повторим еще раз: демоны запуска (Launch Daemons) и объекты запуска (Startup Items) запускаются в ходе инициализации системы системным процессом launchd от имени пользователя root. С другой стороны, агенты запуска и объекты входа в систему запускаются только от имени конкретного пользователя. Другими словами, демоны запуска и объекты запуска относятся ко всей системе в целом, в то время как агенты запуска и объекты входа в систему относятся только к одному пользователю.

Таким образом, агенты запуска инициируются пользовательским процессом launchd от имени пользователя. Они могут запускаться в любое время, пока работает пользовательский процесс launchd. Большинство агентов запуска активируются в ходе инициализации рабочей среды пользователя, но они могут также запускаться и после этого (или же на регулярной основе по мере необходимости). Агенты запуска, предоставляемые системой, находятся в папке /Библиотеки/LaunchAgents, в то время как сторонние агенты запуска должны находиться либо в папке /Библиотеки/Launch-Agents,(/Library/LaunchAgents) либо в папке -/Библиотеки/LaunchAgents (-/Library/LaunchAgents).

Наконец, объекты входа в систему запускаются только в самом конце инициализации рабочей среды пользователя. Процесс loginwindow с помощью пользовательского процесса launchd отвечает за запуск объектов входа в систему пользователя. Список этих объектов находится в файле настроек ~/Библиoтeки/Hacтpoйки/loginwindow.plist (~/Library/Preferences/ loginwindow.plist). Как говорилось ранее в уроке 2, список объектов входа в систему пользователя настраивается из панели настроек Пользователи и группы (Users & Groups).