Ядро XNU | |
Разработчик | Apple Inc. |
---|---|
Написано в | C , C ++ |
Семейство ОС | Unix-подобный , Unix |
Рабочее состояние | Текущий |
Исходная модель | Открытый исходный код |
изначальный выпуск | Декабрь 1996 г . |
Репозиторий | |
Доступно в | Английский, другие |
Платформы | IA-32 , x86-64 , ARM |
Тип ядра | Гибридный |
Лицензия | Лицензия Apple Public Source License 2.0 |
Предшествует | Мах , Нукернель |
Официальный веб-сайт | с открытым исходным кодом |
XNU является компьютерная операционная система (ОС) ядро разработано на Apple Inc. с декабря 1996 года для использования в Mac OS X (теперь MacOS ) операционной системы и выпущен в качестве свободного и открытого программного обеспечения в рамках Darwin OS, которая является основа для программного обеспечения Apple TV , iOS , iPadOS , watchOS и tvOS . XNU - это аббревиатура от X is Not Unix . [1]
Первоначально разработанный NeXT для операционной системы NeXTSTEP , XNU представлял собой гибридное ядро, объединяющее версию 2.5 ядра Mach, разработанного в Университете Карнеги-Меллона, с компонентами из 4.3BSD и интерфейсом прикладного программирования (API) в Objective-C для написания драйверов под названием Driver Kit. . [ необходима цитата ]
После того, как компания Apple приобрела NeXT, компонент Mach был повышен до OSFMK 7.3 из OSF , [2] компоненты BSD были обновлены с кодом из FreeBSD проекта и набор драйверов был заменен на C ++ API для написания драйверов именованных I / O Kit. [ необходима цитата ]
Дизайн ядра [ править ]
XNU - это гибридное ядро , содержащее функции как монолитных ядер, так и микроядер , пытающееся наилучшим образом использовать обе технологии, такие как способность микроядер передавать сообщения, что обеспечивает большую модульность и большие части ОС, чтобы получить выгоду от защиты памяти , и сохраняя скорость монолитных ядер для некоторых критических задач.
По состоянию на 2021 год [Обновить]XNU работает на процессорах ARM64 и x86-64 , как с однопроцессорной, так и с симметричной многопроцессорной обработкой (SMP). Поддержка PowerPC была удалена из версии в Mac OS X 10.6 . Поддержка IA-32 была удалена с версии Mac OS X 10.7 ; поддержка 32-битной ARM была удалена с версии iOS 11 .
Мах [ править ]
В основе ядра XNU лежит сильно модифицированное (гибридное) ядро Open Software Foundation Mach ( OSFMK ) 7.3. [2] Таким образом, он может запускать ядро операционной системы как отдельные процессы, что обеспечивает большую гибкость (он может запускать несколько операционных систем параллельно над ядром Mach), но это часто снижает производительность из-за времени - использование переключателей контекста режима ядра / пользователя и накладных расходов, связанных с отображением или копированием сообщений между адресными пространствами ядра и сервисных демонов. В macOS дизайнеры попытались упростить некоторые задачи, и поэтому BSDфункции были встроены в ядро с помощью Mach. В результате получилось сильно модифицированное (гибридное) ядро OSFMK 7.3, лицензированное Apple OSFMK 7.3, которое является микроядром [3] от OSF. OSFMK 7.3 включает применимый код из ядра Mach 4 Университета Юты и из множества вариантов Mach 3.0, разветвленных из исходного микроядра Mach 3.0 Университета Карнеги-Меллона .
BSD [ править ]
Часть ядра Berkeley Software Distribution (BSD) предоставляет интерфейс прикладного программирования Portable Operating System Interface ( POSIX ) (API, системные вызовы BSD), модель процессов Unix поверх задач Mach, базовые политики безопасности, идентификаторы пользователей и групп, разрешения, стек сетевого протокола (протоколы), код виртуальной файловой системы (включая независимый от файловой системы уровень ведения журнала ), несколько локальных файловых систем, таких как иерархическая файловая система (HFS, HFS Plus (HFS +)) и файловая система Apple (APFS), Сетевая файловая система(NFS) клиент и сервер, криптографическая структура, межпроцессное взаимодействие UNIX System V (IPC), подсистема аудита, принудительный контроль доступа и некоторые примитивы блокировки. [4] Код BSD, присутствующий в XNU, взят из ядра FreeBSD . Хотя большая часть кода была значительно изменена, совместное использование кода по-прежнему происходит между Apple и проектом FreeBSD по состоянию на 2009 год . [5][Обновить]
K32 / K64 [ править ]
Этот раздел необходимо обновить . Причина этого: не описывает никаких изменений с 10.6. Декабрь 2017 г. ) ( |
XNU в Mac OS X Snow Leopard , v10.6 ( Дарвин версия 10) поставляется в двух вариантах: 32-разрядная версия под названием K32 и 64-битная версия под названием K64 . [6] K32 может запускать 64-битные приложения в пользовательской среде . [7] Новым в Mac OS X 10.6 была возможность запускать XNU в 64-битном пространстве ядра . K32 был ядром по умолчанию для сервера 10.6 при использовании на всех машинах, кроме Mac Pro и Xserve, начиная с 2008 года [8], и может запускать 64-битные приложения. K64 имеет несколько преимуществ по сравнению с K32:[9]
- Может управлять более 32 ГБ ОЗУ, поскольку карта памяти будет занимать непропорционально большую область 32-разрядного пространства ядра.
- Размеры буфера кэша могут быть больше, чем позволяет 32-разрядное пространство ядра, что потенциально увеличивает производительность ввода-вывода.
- Производительность повышается при использовании высокопроизводительных сетевых устройств или нескольких графических процессоров (GPU), поскольку ядро может отображать все устройства в 64-битном пространстве, даже если некоторые из них имеют очень большие буферы прямого доступа к памяти (DMA).
Загрузка с удержанием 6 и 4 заставляет машину загружать K64 на машинах, поддерживающих 64-битные ядра. [10] K64 будет запускать 32-битные приложения, но не будет запускать 32-битные расширения ядра (KEXT), поэтому они должны быть перенесены на K64, чтобы иметь возможность загружаться.
XNU в OS X Mountain Lion , v10.8 и более поздних версиях предоставляет только 64-битное ядро.
Комплект ввода / вывода [ править ]
I / O Kit - это структура драйверов устройств , написанная на подмножестве C ++ на основе Embedded C ++ . [11] Благодаря объектно-ориентированному дизайну, в структуре предоставляются функции, общие для любого класса драйверов, что помогает писать драйверы устройств с меньшими затратами времени и кода. Комплект ввода-вывода является многопоточным, симметричным многопроцессорным (SMP) -безопасным, и позволяет выполнять горячее подключение устройств и автоматическую, динамическую конфигурацию устройств.
Многие драйверы могут быть написаны для запуска из пользовательского пространства , что еще больше повышает стабильность системы. Если произойдет сбой драйвера пользовательского пространства, это не приведет к сбою ядра. Однако если произойдет сбой драйвера пространства ядра, это приведет к сбою ядра. Примеры драйверов пространства ядра включают драйверы дискового адаптера и сетевого адаптера, графические драйверы, драйверы для универсальной последовательной шины ( USB ) и хост-контроллеров FireWire , а также драйверы для программного обеспечения виртуальных машин, такого как VirtualBox , Parallels Desktop для Mac и VMware Fusion .
См. Также [ править ]
- Ядро (операционная система)
- A / UX
- mkLinux
- OSF / 1
- Дарвин (операционная система) - операционная система с открытым исходным кодом, выпущенная Apple, Inc., с XNU в качестве ядра
- macOS - операционная система, выпущенная Apple, Inc., с XNU в качестве ядра
Ссылки [ править ]
- Лопере, Кит. «MK ++: микроядро с высокой производительностью и надежностью» .
- ^ «Перенос приложений UNIX / Linux на Mac OS X: Глоссарий» . Компьютер Apple. 2005 . Проверено 7 июня 2017 года .
- ^ а б Маги, Джим. WWDC 2000 Сессия 106 - Mac OS X: ядро . 14 минут в.
- ^ Уэллс, Дуглас М. «Надежная, масштабируемая среда операционной системы реального времени» (PDF) . Семантический ученый . Институт ИИ Аллена (AI2). S2CID 5205380 .
- ↑ Ватсон, Роберт (2 августа 2008 г.). "Re: freebsd-Advocacy Digest, том 248, выпуск 1" . freebsd-advacy (список рассылки) . Проверено 24 октября 2013 года .
- ^ «Ежеквартальный отчет о состоянии FreeBSD (Grand Central Dispatch - порт FreeBSD)» . Апрель 2009 . Проверено 24 октября 2013 года .
- ^ Mac OS X 10.6 Snow Leopard: обзор Ars Technica, стр.
- ↑ Сиракуза, Джон (31 августа 2009 г.). «Mac OS X 10.6 Snow Leopard: обзор Ars Technica» . Ars Technica .
Наконец, стоит повторить: помните, что вам не нужно запускать 64-битное ядро, чтобы запускать 64-битные приложения или устанавливать более 4 ГБ ОЗУ на вашем Mac.
Приложения отлично работают в 64-битном режиме поверх 32-битного ядра, и даже в более ранних версиях Mac OS X можно было установить и использовать более 4 ГБ оперативной памяти.
- ^ Mac OS X Server v10.6: компьютеры Mac с 64-разрядным ядром
- ^ «Что нового в Mac OS X: Mac OS X v10.6» . Разработчик Apple . Apple, Inc.
- ^ Mac OS X Server v10.6: запуск с 32-разрядным или 64-разрядным ядром
- ^ I / O Kit использует ограниченное подмножество C ++
Внешние ссылки [ править ]
- Официальный веб-сайт в Apple Open Source Browser
- darwin-xnu на GitHub , официальное зеркало
- XNU: The Kernel - обзор компонентов XNU, написанный Амитом Сингхом в декабре 2003 г.
- Внутри ядра Mac OS X - « Цель этого выступления - устранить путаницу, представив детали ядра Mac OS X»