Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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 [ править ]

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 ++: микроядро с высокой производительностью и надежностью» .
  1. ^ «Перенос приложений UNIX / Linux на Mac OS X: Глоссарий» . Компьютер Apple. 2005 . Проверено 7 июня 2017 года .
  2. ^ а б Маги, Джим. WWDC 2000 Сессия 106 - Mac OS X: ядро . 14 минут в.
  3. ^ Уэллс, Дуглас М. «Надежная, масштабируемая среда операционной системы реального времени» (PDF) . Семантический ученый . Институт ИИ Аллена (AI2). S2CID 5205380 .  
  4. Ватсон, Роберт (2 августа 2008 г.). "Re: freebsd-Advocacy Digest, том 248, выпуск 1" . freebsd-advacy (список рассылки) . Проверено 24 октября 2013 года .
  5. ^ «Ежеквартальный отчет о состоянии FreeBSD (Grand Central Dispatch - порт FreeBSD)» . Апрель 2009 . Проверено 24 октября 2013 года .
  6. ^ Mac OS X 10.6 Snow Leopard: обзор Ars Technica, стр.
  7. Сиракуза, Джон (31 августа 2009 г.). «Mac OS X 10.6 Snow Leopard: обзор Ars Technica» . Ars Technica . Наконец, стоит повторить: помните, что вам не нужно запускать 64-битное ядро, чтобы запускать 64-битные приложения или устанавливать более 4 ГБ ОЗУ на вашем Mac. Приложения отлично работают в 64-битном режиме поверх 32-битного ядра, и даже в более ранних версиях Mac OS X можно было установить и использовать более 4 ГБ оперативной памяти.
  8. ^ Mac OS X Server v10.6: компьютеры Mac с 64-разрядным ядром
  9. ^ «Что нового в Mac OS X: Mac OS X v10.6» . Разработчик Apple . Apple, Inc.
  10. ^ Mac OS X Server v10.6: запуск с 32-разрядным или 64-разрядным ядром
  11. ^ I / O Kit использует ограниченное подмножество C ++

Внешние ссылки [ править ]

  • Официальный веб-сайт в Apple Open Source Browser
  • darwin-xnu на GitHub , официальное зеркало
  • XNU: The Kernel - обзор компонентов XNU, написанный Амитом Сингхом в декабре 2003 г.
  • Внутри ядра Mac OS X - « Цель этого выступления - устранить путаницу, представив детали ядра Mac OS X»