Расширения ядра (Kernel Extensions)
В Mac OS X реализован механизм, который позволяет динамически загружать дополнительные модули в ядро без необходимости перекомпиляции. Эти модули называютсярасширениямиядра (KernelExtension, KEXT).
Многие компоненты основной части операционной системы поддерживают этот механизм расширений, хотя и в несколько ином виде. Например, некоторые сетевые технологии используют сетевые расширения ядра (Network Kernel Extension, NKE), драйверы устройств ввода-вывода тоже реализованы как расширения ядра.
Расширения ядра реализованы как пакеты (bundles), то есть папки, которые интерпретируются Finder’oм как единые файлы. Пакет расширения ядра содержит следующие компоненты:
• Список информационных свойств (Informationproperty list) — тексто
вый файл в формате XML, описывающий содержимое, настройки и
необходимые ресурсы для данного расширения. Этот файл должен
присутствовать в каждом расширении ядра.
• Модули ядра (KMOD). Это файлы в формате объектных модулей микро
ядра Mach (форматMach-O), содержащие двоичный код, которые исполь
зуются в данном расширении. KMOD — это минимальная единица кода,
которая может быть загружена в ядро. Расширение ядра может не иметь
ни одного модуля KMOD. В этом случае Information property list должен
содержать ссылку по крайней мере на один модуль KMOD другого рас
ширения ядра и изменить соответствующие настройки по умолчанию.
• Дополнительные файлы ресурсов (resources) — иконки, словари лока
лизации и так далее. Наличие таких ресурсов может быть полезно для
отображения специфических диалоговых окон или меню. В настоя
щий момент нет никаких обязательных ресурсов для использования в
расширениях ядра, хотя большинство расширений ядра, поставляе
мых вместе с системой, содержат пустую папку для будущих ресурсов.
Стандартное место для размещения расширений ядра: v System т-Library у Extensions
Так как расширения ядра работают в адресном пространстве ядра и, по сути, являются его частью, их значительно сложнее писать и отлаживать, потому что они не защищены системой от сбоев. Поэтому ошибки в расширениях ядра могут приводить к полному краху всей системы. Фирма Apple настоятельно рекомендует, чтобы все, что может быть реализовано средствами более высоких уровней, чем уровень ядра, было реализовано в виде библиотек с общим доступом, так называемых демонов пользовательского уровня, или с помощью дополнений (Plug-In) соответствующих технологий (например, QuickTime). Из этого следует, что не все компоненты, ранее входившие в состав папки Extensions в системе Mac OS 9, автоматически должны стать расширениями ядра в Mac OS X.
Будьте внимательны, аккуратны и осторожны при создании расширений ядра.
Страниц: 1 2