XNU
XNU — это операционная система, основанная на микроядре Mach и содержащая компоненты из ядра FreeBSD, разработанная компанией Apple Inc. XNU является основой для операционных систем macOS, iOS, iPadOS, tvOS и watchOS. Название представляет собой рекурсивный акроним от «X is Not Unix».
История
Разработка XNU началась в 1996 году, когда Apple приобрела компанию NeXT, основанную Стивом Джобсом. Операционная система NeXTSTEP, созданная в NeXT, использовала гибридное ядро, сочетавшее микроядро Mach 2.5 и компоненты из 4.3BSD. После приобретения Apple приняла решение использовать NeXTSTEP как основу для новой операционной системы для Macintosh.
В 1997 году Apple начала проект Rhapsody, целью которого было создание преемника классической Mac OS. В рамках этого проекта ядро NeXTSTEP было модифицировано: микроядро Mach 2.5 заменили на более современное Mach 3.0, а компоненты BSD были обновлены до версии FreeBSD 3.x. Полученное ядро получило название XNU.
Первая публичная версия XNU была выпущена в составе Mac OS X Server 1.0 в 1999 году. В 2000 году Apple выпустила Mac OS X Public Beta, а в 2001 году — финальную версию Mac OS X 10.0 Cheetah. С этого момента XNU стала основой всех операционных систем Apple.
В 2000 году Apple открыла исходный код XNU под лицензией Apple Public Source License (APSL) в рамках проекта Darwin. Darwin представляет собой открытую версию macOS, включающую XNU и другие компоненты операционной системы, но без графического интерфейса Aqua и проприетарных приложений Apple.
Архитектура
XNU является гибридным ядром, сочетающим элементы микроядра и монолитного ядра. Такая архитектура позволяет совмещать преимущества обоих подходов: модульность и изоляцию процессов микроядра с производительностью и низкой задержкой монолитного ядра.
Микроядро Mach
Основой XNU является микроядро Mach 3.0, предоставляющее базовые механизмы управления памятью, межпроцессного взаимодействия (IPC) и планирования задач. В XNU используется модифицированная версия Mach, разработанная в Университете Карнеги — Меллон.
Ключевые функции Mach в XNU:
- Управление виртуальной памятью
- Планирование потоков (threads)
- Межпроцессное взаимодействие через порты Mach
- Обработка прерываний
Компоненты BSD
Над микроядром Mach располагается слой BSD, заимствованный из FreeBSD. Этот слой предоставляет:
- POSIX-совместимый интерфейс системных вызовов
- Модель процессов и сигналов
- Сетевой стек (на основе FreeBSD)
- Файловые системы (HFS+, APFS, UFS, FAT и другие)
- Систему безопасности (модель разрешений Unix, ACL, sandbox)
I/O Kit
I/O Kit — это объектно-ориентированная подсистема управления драйверами устройств, написанная на C++. Она предоставляет фреймворк для разработки драйверов, поддерживающий горячее подключение устройств, управление питанием и многопоточность. I/O Kit является частью XNU и обеспечивает взаимодействие ядра с аппаратным обеспечением.
Версии
XNU развивалась параллельно с операционными системами Apple. Ниже приведены основные версии XNU и соответствующие им версии macOS:
| Версия XNU | Версия macOS | Год выпуска | Примечания |
|---|---|---|---|
| XNU-124 | Mac OS X 10.0 Cheetah | 2001 | Первая версия XNU для Mac OS X |
| XNU-201 | Mac OS X 10.1 Puma | 2001 | Улучшена поддержка USB |
| XNU-344 | Mac OS X 10.2 Jaguar | 2002 | Оптимизация производительности |
| XNU-517 | Mac OS X 10.3 Panther | 2003 | Переход на Mach 3.0 |
| XNU-792 | Mac OS X 10.4 Tiger | 2005 | Поддержка Intel x86 |
| XNU-1228 | Mac OS X 10.5 Leopard | 2007 | 64-битное ядро |
| XNU-1456 | Mac OS X 10.6 Snow Leopard | 2009 | Оптимизация для многопоточности |
| XNU-1699 | Mac OS X 10.7 Lion | 2011 | Поддержка iOS-приложений |
| XNU-2050 | OS X 10.8 Mountain Lion | 2012 | Интеграция iCloud |
| XNU-2422 | OS X 10.9 Mavericks | 2013 | Улучшение управления памятью |
| XNU-2782 | OS X 10.10 Yosemite | 2014 | Переход на Swift |
| XNU-3247 | OS X 10.11 El Capitan | 2015 | Защита целостности системы (SIP) |
| XNU-3789 | macOS 10.12 Sierra | 2016 | Поддержка Apple File System (APFS) |
| XNU-4570 | macOS 10.13 High Sierra | 2017 | APFS по умолчанию |
| XNU-4903 | macOS 10.14 Mojave | 2018 | Тёмная тема |
| XNU-6153 | macOS 10.15 Catalina | 2019 | Отказ от 32-битных приложений |
| XNU-7195 | macOS 11 Big Sur | 2020 | Переход на ARM64 |
| XNU-8020 | macOS 12 Monterey | 2021 | Улучшение производительности |
| XNU-8792 | macOS 13 Ventura | 2022 | Поддержка Stage Manager |
| XNU-10002 | macOS 14 Sonoma | 2023 | Оптимизация для игр |
Особенности и критика
Преимущества
- Стабильность: Гибридная архитектура XNU обеспечивает изоляцию драйверов устройств и пользовательских процессов, что снижает вероятность системных сбоев.
- Производительность: Сочетание микроядра и монолитного ядра позволяет достичь высокой производительности при обработке системных вызовов и управлении памятью.
- Совместимость: POSIX-совместимость XNU позволяет запускать на macOS множество Unix-приложений без существенных изменений.
Недостатки
- Сложность: Гибридная архитектура XNU сложнее как монолитного ядра Linux, так и чистого микроядра, что затрудняет разработку и отладку.
- Закрытость: Несмотря на открытый исходный код XNU в рамках Darwin, многие компоненты macOS (графический интерфейс, драйверы, библиотеки) остаются проприетарными.
- Производительность IPC: Механизмы межпроцессного взаимодействия Mach могут быть медленнее, чем аналоги в Linux, что критикуется некоторыми разработчиками.
Применение
XNU используется во всех операционных системах Apple, работающих на процессорах Intel x86-64 и Apple Silicon ARM64:
- macOS — настольная операционная система для компьютеров Mac
- iOS — операционная система для iPhone
- iPadOS — операционная система для iPad
- tvOS — операционная система для Apple TV
- watchOS — операционная система для Apple Watch
Кроме того, XNU используется в проекте Darwin, который позволяет запускать macOS-совместимые приложения на других платформах, а также в эмуляторах и виртуальных машинах (например, QEMU).
Интересные факты
- Название XNU является рекурсивным акронимом: «X is Not Unix», что является отсылкой к акрониму GNU («GNU is Not Unix»).
- Исходный код XNU доступен на GitHub под лицензией Apple Public Source License (APSL) версии 2.0.
- XNU поддерживает как 32-битные, так и 64-битные приложения, хотя с macOS 10.15 Catalina поддержка 32-битных приложений была прекращена.
- В XNU реализована поддержка технологии sandbox, которая ограничивает доступ приложений к системным ресурсам.
- XNU использует систему управления памятью, основанную на виртуальной памяти Mach, с поддержкой страниц размером 4 КБ, 2 МБ и 1 ГБ.
Источники
- Apple Inc. «XNU Kernel Source Code». GitHub.
- Singh, Amit. «Mac OS X Internals: A Systems Approach». Addison-Wesley, 2006.
- Apple Inc. «macOS Kernel Programming Guide». Apple Developer Documentation.
- Love, Robert. «Linux Kernel Development». 3rd Edition, Addison-Wesley, 2010.
- «The Mach Project». Carnegie Mellon University.
- «FreeBSD Handbook». The FreeBSD Documentation Project.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →