XNU

редактировать

XNU
The XNU Kernel Graphic.svg Ядро XNU
Разработчик Apple Inc.
Написано на C, C ++
Семейство ОСUnix-like, Unix
Рабочее состояниеТекущая
Исходная модельОткрытый исходный код
Первоначальный выпускДекабрь 1996 г.; 23 года назад (1996-12)
Репозиторий Отредактируйте это в Wikidata
Доступен на английском и других языках
ПлатформыIA-32, x86-64, ARM
Тип ядра Гибрид
Лицензия Лицензия Apple Public Source License 2.0
ПредыдущийMach, Nukernel
Официальный сайтopensource.apple.com / source / xnu

XNU - компьютер операционная система (OS) ядро ​​, разработанное Apple Inc. с декабря 1996 года для использования в macOS <26.>и выпущена как бесплатное программное обеспечение с открытым исходным кодом как часть Darwin OS, которая является основой для программного обеспечения Apple TV, Операционные системы iOS, iPadOS, watchOS и tvOS. XNU - это сокращение от X is Not Unix.

Первоначально разработанный NeXT для операционной системы NeXTSTEP, XNU был гибридным ядром объединяющей версией 2.5 ядра Маха , разработанного в Университете Карнеги-Меллона с компонентами из 4.3BSD и интерфейсом прикладного программирования (API) в Objective-C для написания драйверов с именем Driver Kit.

После того, как Apple приобрела NeXT, компонент Mach был обновлен до OSFMK 7.3 от OSF, компоненты BSD были обновлены кодом из проект FreeBSD, а Driver Kit был заменен на C ++ API для написания драйверов с именем I / O Kit.

Содержание

  • 1 Дизайн ядра
    • 1,1 Маха
    • 1.2 BSD
    • 1.3 K32 / K64
    • 1.4 Комплект ввода / вывода
  • 2 См. Также
  • 3 Ссылки
  • 4 Внешние ссылки

Дизайн ядра

XNU - это гибридное ядро ​​, содержащее особенности как монолитных ядер, так и микроядер, пытаясь наилучшим образом использовать обе технологии. такие как возможность передачи сообщений микроядрами, обеспечивающая большую модульность и большие части ОС для получения преимуществ от защиты памяти, а также сохранение скорости монолитных ядер для некоторых критических задач.

По состоянию на 2007 год XNU работает на процессорах ARM, IA-32 и x86-64, как с одним процессором, так и с модели симметричной многопроцессорной обработки (SMP). Поддержка PowerPC была удалена в версии Mac OS X 10.6.

Mach

В основе ядра XNU лежит сильно модифицированное (гибридное) открытое программное обеспечение Основа ядро ​​Маха (OSFMK ) 7.3. Таким образом, он может запускать ядро ​​операционной системы как отдельные процессы, что обеспечивает большую гибкость (он может запускать несколько операционных систем параллельно над ядром Mach), но это часто снижает производительность из-за трудоемкости ядра / переключение контекста пользовательского режима и накладные расходы, связанные с отображением или копированием сообщений между адресными пространствами ядра и сервисных демонов. В macOS разработчики попытались упростить некоторые задачи, и поэтому функции BSD были встроены в ядро ​​с помощью Mach. В результате получилось сильно модифицированное (гибридное) ядро ​​OSFMK 7.3, лицензированное Apple OSFMK 7.3, которое является микроядром, от OSF. OSFMK 7.3 включает применимый код из ядра Mach 4 Университета Юты и из множества вариантов Mach 3.0 , ответвленных из исходного микроядра Mach 3.0 Университета Карнеги-Меллона.

BSD

Часть ядра Berkeley Software Distribution (BSD) обеспечивает интерфейс переносимой операционной системы (POSIX ) прикладное программирование интерфейс (API, системные вызовы BSD), модель процесса Unix поверх задач Mach, базовые политики безопасности, идентификаторы пользователей и групп, разрешения, сетевой стек протоколов (протоколы), код виртуальной файловой системы (включая файловую систему независимый уровень журналирования ), несколько локальных файловых систем, таких как иерархическая файловая система ( HFS, HFS Plus (HFS +)) и Apple File System (APFS), клиент и сервер сетевой файловой системы (NFS), криптографическая структура, UNIX System V межпроцессное взаимодействие (IPC), подсистема аудита, обязательный контроль доступа и некоторые примитивы блокировки. Код BSD, присутствующий в XNU, взят из ядра FreeBSD. Хотя большая часть этого была значительно изменена, совместное использование кода все еще происходит между Apple и проектом FreeBSD по состоянию на 2009 год.

K32 / K64

XNU в Mac OS X Snow Leopard, v10.6, (Darwin версия 10) поставляется в двух вариантах: 32-битная версия под названием K32 и 64-битная версия под названием K64. K32 может запускать 64-битные приложения в пользовательской среде. Новым в Mac OS X 10.6 была возможность запускать XNU в 64-битном пространстве ядра. K32 был ядром по умолчанию для сервера 10.6 при использовании на всех машинах, кроме моделей Mac Pro и Xserve, начиная с 2008 года, и может запускать 64-разрядные приложения. K64 имеет несколько преимуществ по сравнению с K32:

  • Может управлять более 32 ГБ ОЗУ, поскольку карта памяти будет занимать непропорционально большую область 32-разрядного пространства ядра.
  • Размер буфера кеша может быть больше, чем что позволяет 32-битное пространство ядра, потенциально увеличивая производительность ввода-вывода.
  • Производительность увеличивается при использовании высокопроизводительных сетевых устройств или нескольких графических процессоров (GPU) в качестве ядра может отображать все устройства в 64-битном пространстве, даже если некоторые из них имеют очень большие буферы прямого доступа к памяти (DMA).

Загрузка при удерживании нажатыми 6 и 4 заставляет машину загружать K64 на машинах, поддерживающих 64-битные ядра. K64 будет запускать 32-битные приложения, но он не будет запускать 32-битные расширения ядра (KEXT), поэтому они должны быть перенесены на K64 для возможности загрузки.

XNU в OS X Mountain Lion, v10.8 и более поздних версиях предоставляет только 64-битное ядро.

I / O Kit

I / O Kit - это структура драйвера устройства, написанная в подмножестве C ++ на основе Embedded C ++. Благодаря его объектно-ориентированному дизайну в структуре предоставляются функции, общие для любого класса драйверов, что помогает писать драйверы устройств с меньшими затратами времени и кода. Комплект ввода-вывода является многопоточным, симметричным многопроцессорным (SMP) -безопасным, и допускает горячее подключение устройств и автоматическую, динамическую конфигурацию устройств.

Многие драйверы могут быть написаны для запуска из пользовательского пространства, что еще больше повышает стабильность системы. Если произойдет сбой драйвера пользовательского пространства, это не приведет к сбою ядра. Однако если произойдет сбой драйвера пространства ядра, это приведет к сбою ядра. Примеры драйверов пространства ядра включают драйверы дискового адаптера и сетевого адаптера, графические драйверы, драйверы для универсальной последовательной шины (USB ) и FireWire хост-контроллеры, а также драйверы для виртуальной машины программного обеспечения, такого как VirtualBox, Parallels Desktop для Mac и VMware Fusion.

См. также

  • Бесплатное ПО с открытым исходным кодом программный портал

Ссылки

Внешние ссылки

  • Официальный сайт, в браузере с открытым исходным кодом Apple
  • darwin-xnu на GitHub, официальное зеркало
  • XNU: The Kernel - обзор компонентов XNU, написанный Амитом Сингхом в декабре 2003 г.
  • Внутри ядра Mac OS X - «Этот доклад призван прояснить путаница при представлении деталей ядра Mac OS X "
Последняя правка сделана 2021-06-22 06:42:03
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте