Ядро XNU | |
Разработчик | Apple Inc. |
---|---|
Написано на | C, C ++ |
Семейство ОС | Unix-like, Unix |
Рабочее состояние | Текущая |
Исходная модель | Открытый исходный код |
Первоначальный выпуск | Декабрь 1996 г.; 23 года назад (1996-12) |
Репозиторий | |
Доступен на | английском и других языках |
Платформы | 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.
XNU - это гибридное ядро , содержащее особенности как монолитных ядер, так и микроядер, пытаясь наилучшим образом использовать обе технологии. такие как возможность передачи сообщений микроядрами, обеспечивающая большую модульность и большие части ОС для получения преимуществ от защиты памяти, а также сохранение скорости монолитных ядер для некоторых критических задач.
По состоянию на 2007 год XNU работает на процессорах ARM, IA-32 и x86-64, как с одним процессором, так и с модели симметричной многопроцессорной обработки (SMP). Поддержка PowerPC была удалена в версии Mac OS X 10.6.
В основе ядра 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 Университета Карнеги-Меллона.
Часть ядра 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 год.
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:
Загрузка при удерживании нажатыми 6 и 4 заставляет машину загружать K64 на машинах, поддерживающих 64-битные ядра. K64 будет запускать 32-битные приложения, но он не будет запускать 32-битные расширения ядра (KEXT), поэтому они должны быть перенесены на K64 для возможности загрузки.
XNU в OS X Mountain Lion, v10.8 и более поздних версиях предоставляет только 64-битное ядро.
I / O Kit - это структура драйвера устройства, написанная в подмножестве C ++ на основе Embedded C ++. Благодаря его объектно-ориентированному дизайну в структуре предоставляются функции, общие для любого класса драйверов, что помогает писать драйверы устройств с меньшими затратами времени и кода. Комплект ввода-вывода является многопоточным, симметричным многопроцессорным (SMP) -безопасным, и допускает горячее подключение устройств и автоматическую, динамическую конфигурацию устройств.
Многие драйверы могут быть написаны для запуска из пользовательского пространства, что еще больше повышает стабильность системы. Если произойдет сбой драйвера пользовательского пространства, это не приведет к сбою ядра. Однако если произойдет сбой драйвера пространства ядра, это приведет к сбою ядра. Примеры драйверов пространства ядра включают драйверы дискового адаптера и сетевого адаптера, графические драйверы, драйверы для универсальной последовательной шины (USB ) и FireWire хост-контроллеры, а также драйверы для виртуальной машины программного обеспечения, такого как VirtualBox, Parallels Desktop для Mac и VMware Fusion.