Урок 9. Загрузка системы

Завершение работы и перезагрузка

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

Продолжение ...

Выход из системы

Пользователи могут в любое время выйти из системы, если они захотят завершить свой сеанс работы. Чтобы завершить работу или перезагрузить Mac, они также должны выйти из системы. Когда находящийся в системе пользователь решает выйти из нее, его процесс loginwindow управляет всеми функциями выхода из системы с помощью процесса launchd этого пользователя. Как только пользователь запрашивает выход из системы, его процесс loginwindow посылает событие Quit Application Apple всем приложениям. Приложения, которые поддерживают новые в Lion функции автосохранения и возобновления, немедленно сохранят изменения во всех открытых документах и завершат работу. Приложения, которые не поддерживают эти функции, отреагируют на событие Quit, но они запрограммированы спрашивать у пользователя, нужно ли сохранить изменения. Если приложение не отвечает или не завершается в течение 60 секунд, процесс выхода из системы будет остановлен и процесс loginwindow отобразит сообщение об ошибке.

Продолжение ...

Спящие режимы

При переводе компьютера в спящий режим активные процессы или приложения не закрываются. Вместо этого ядро системы приостанавливает все процессы, а затем фактически выключает все оборудование, кроме системной памяти и питания портов USB и FireWire. Это уменьшает объем потребляемой энергии - ноутбук Mac остается в спящем режиме несколько дней на одной зарядке батареи. При пробуждении перезапускается все оборудование, а ядро восстанавливает все процессы и приложения в точке остановки.

Продолжение ...

Спящие режимы, выход из системы и завершение работы

Теперь рассмотрим процессы приостановки или завершения сеанса пользователя. Функция сна (sleep) не закрывает никакие открытые процессы, а функции выхода пользователя из системы (logout) и завершения работы (shutdown) завершают открытые процессы. В большинстве случаев пользователь вручную выполняет команды Режим сна (Sleep), Завершить сеанс (Logout) или Выключить (Shutdown) из меню Apple или нажимая кнопку питания компьютера.

Продолжение ...

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

Процессы launchd и loginwindow пользователя будут продолжать работать до тех пор, пока пользователь находится в системе. Процесс launchd будет запускать все процессы и приложения пользователя, а процесс loginwindow -выполнять мониторинг и обслуживание сеанса.

Продолжение ...

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

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

Продолжение ...

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

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

Продолжение ...

64-разрядный режим ядра

По умолчанию ОС Lion запускает ядро в 64-разрядном режиме на оборудовании, которое его поддерживает. Однако 64-разрядное ядро Lion не позволит использовать 32-разрядные КЕХТ-расширения. Многие КЕХТ-расширения поддерживают только 32-разрядный режим. Как рассматривалось в уроке 8, приложение /Программы/Утилиты/Информация о системе (Applications/Utilities/System Information) позволяет узнать, какие из установленных КЕХ'Г-расширений поддерживают 64-разрядный режим.

Продолжение ...

Инициализация системы: ядро

Когда загрузчик успешно загрузил ядро и основные КЕХТ-расширения, ядро берет управление процессом загрузки на себя. Теперь загружено достаточно расширений ядра, чтобы прочитать всю файловую систему, и ядро загружает любые дополнительные КЕХТ-расширения, а также запускает базовую систему BSD UNIX. Вращающийся серый значок звездочки под значком Apple указывает на ход процесса запуска ядра. Наконец, ядро запускает первый обычный процесс (не ядро) - системный процесс launchd, являющийся родительским для всех других процессов. Появление индикации на белом загрузочном экране с логотипом Apple является подтверждением того, что ядро полностью загружено и процесс launchd запускает другие объекты.

Продолжение ...

Инициализация системы: загрузчик

Загрузчик запускается прошивкой Mac и отвечает за загрузку ядра ОС Lion и ряда ключевых расширений ядра, достаточных для того, чтобы оно могло взять управление системой на себя и продолжить процесс загрузки. Прошивка Mac также передает все специальные инструкции режима запуска, такие как нажатие пользователем клавиши | Shift |. Это говорит о том, что Lion должна запускаться в безопасном режиме (Safe Mode). Сам по себе процесс загрузчика находится в файле /Система/Библиотеки/ CoreServices/boot.efi (/System/Library/CoreServices/boot.efi).

Продолжение ...