• расширение ядра (Kernel Extension, KEXT)

• сетевое расширение ядра (Network Kernel Extension, NKE)

• модуль ядра (KMOD)

В Mac OS X реализован механизм, который позволяет динамически загружать дополнительные модули в ядро без необходимости перекомпиляции. Эти модули называютсярасширениями ядра (Kernel Extension, KEXT).

Многие компоненты основной части операционной системы поддерживают этот механизм расширений, хотя и в несколько ином виде. Например, некоторые сетевые технологии используют сетевые расширения ядра (Network Kernel Extension, NKE), драйверы устройств ввода-вывода тоже реализованы как расширения ядра.

Расширения ядра реализованы как пакеты (bundles), то есть папки, которые интерпретируются FinderW как единые файлы. Пакет расширения ядра содержит следующие компоненты:

• Список информационных свойств (Informationproperty list) - текстовый файл в формате XML описывающий содержимое, настройки и необходимые ресурсы для данного расширения. Этот файл должен присутствовать в каждом расширении ядра.

• Модули ядра (KMOD). Это файлы в формате объектных модулей микроядра Mach (формат Mach-O), содержащие двоичный код, которые используются в данном расширении. KMOD - это минимальная единица кода, которая может быть загружена в ядро. Расширение ядра может не иметь ни одного модуля KMOD. В этом случае Information property list должен содержать ссылку по крайней мере на один модуль KMOD другого расширения ядра и изменить соответствующие настройки по умолчанию.

• Дополнительные файлы ресурсов (resources) - иконки, словари локализации и так далее. Наличие таких ресурсов может быть полезно для отображения специфических диалоговых окон или меню. В настоящий момент нет никаких обязательных ресурсов для использования в расширениях ядра, хотя большинство расширений ядра, поставляемых вместе с системой, содержат пустую папку для будущих ресурсов.

Стандартное место для размещения расширений ядра:

- System

- Library

► Extensions

Так как расширения ядра работают в адресном пространстве ядра и, по сути, являются его частью, их значительно сложнее писать и отлаживать, потому что они не защищены системой от сбоев. Поэтому ошибки в расширениях ядра могут приводить к полному краху всей системы. Фирма Apple настоятельно рекомендует, чтобы все, что может быть реализовано средствами более высоких уровней, чем уровень ядра, было реализовано в виде библиотек с общим доступом, так называемых демонов пользовательского уровня, или с помощью дополнений (Plug-In) соответствующих технологий (например, QuickTime). Из этого следует, что не все компоненты, ранее входившие в состав папки Extensions в системе Mac OS 9, автоматически должны стать расширениями ядра в Mac OS X.

Будьте внимательны, аккуратны и осторожны при создании расширений ядра.

Дополнения (Plug-Ins)

• дополнения (Plug-Ins)

В Mac OS X введена архитектура дополнений (Plug-Ins), поддерживаемая на уровне системы. Новый подход имеет ряд достоинств как с точки зрения пользователей, так и с точки зрения разработчиков прикладных программ.

Пользователи могут динамически загружать в работающие программы те или иные дополнительные модули или выгружать их, если необходимость в них отпала, тем самым более эффективно использовать ресурсы системы.

Разработчики могут, в свою очередь, создавать программы, в которых для добавления новых функций или улучшения уже существующих не требуется переписывать все заново - достаточно добавить новый модуль или переписать уже имеющийся. Кроме того, теперь вовсе не обязательно дожидаться полного завершения многолетнего проекта, можно начинать с малого и постепенно наращивать «мощь» программ.

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

Пакеты (bundles) | Mac OS X | Графика


Mac OS X



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31