Кіріспе

XNU ("X is Not Unix") – 1996 жылдың желтоқсанынан бастап Apple Inc. компаниясында Mac OS X (қазіргі macOS) операциялық жүйесінде пайдалану үшін әзірленген, Darwin OS құрамында тегін және ашық кодты бағдарламалық жасақтама ретінде жарияланған компьютерлік операциялық жүйе (ОЖ) ядросы. MacOS-тан басқа, Apple TV бағдарламалық жасақтамасы, iOS, iPadOS, watchOS, visionOS және tvOS операциялық жүйелерінің негізі болып табылады. XNU бастапқыда NeXT компаниясы NeXTSTEP операциялық жүйесі үшін жасаған. Бұл Карнеги Меллон университетінде әзірленген Mach ядросының 2.5 нұсқасынан туындаған гибрид ядросы, ол Mach негізгі элементтерінде жұмыс істеу үшін 4.3BSD ядросының көп бөлігін, сондай-ақ Driver Kit деп аталатын драйверлерді жазуға арналған Objective C тіліндегі қолданбалық бағдарламалау интерфейсін (API) қамтыды. Apple NeXT компаниясын сатып алғаннан кейін ядро OSF-тен алынған OSFMK 7.3 кодымен және FreeBSD жобасымен жаңартылды, ал Driver Kit I/O Kit деп аталатын C++ (Embedded C++ негізінде) тілінің шектеулі жиынтығындағы жаңа API-мен алмастырылды.

Ядроның құрылымы

XNU - гибридті ядро, монолиттік ядролар мен микроядролардың ерекшеліктерін біріктіреді. Ол екі технологияның артықшылықтарын пайдалануға тырысады, мысалы, микроядролардың хабар алмасу мүмкіндігі арқасында жоғары модульділікке қол жеткізіледі және операциялық жүйенің үлкен бөліктері жадты қорғаудан пайда көреді, сонымен қатар кейбір маңызды тапсырмаларды орындау үшін монолиттік ядролардың жылдамдығы сақталады. 2021 жылғы мәліметтер бойынша, XNU ARM64 және x86 64 процессорларында, сондай-ақ бір процессорлы және симметриялық көппроцессорлық (SMP) жүйелерде жұмыс істейді. PowerPC қолдауы Mac OS X Snow Leopard нұсқасынан бастап жойылды. IA 32 қолдауы Mac OS X Lion нұсқасынан бастап, ал 32 биттік ARM қолдауы iOS 11 нұсқасынан бастап алынып тасталды.

Мах

XNU ядросының негізі – көп өзгеріс енгізілген (гибридтік) Open Software Foundation Mach ядросы (OSFMK) 7.3. Ол Юта университетінің Mach 4 ядросынан және түпнұсқа Карнеги Меллон университетінің Mach 3.0 микроядросынан таралған көптеген Mach 3.0 нұсқаларынан алынған тиісті кодты қамтиды. OSFMK 7.3 операциялық жүйенің негізгі бөлігін жеке процестер ретінде іске асыруға мүмкіндік береді, бұл үлкен икемділікті қамтамасыз етеді (Mach ядросының үстінде бірнеше операциялық жүйені параллель түрде іске қосуға болады), бірақ бұл көбінесе ядро/пайдаланушы режиміндегі контексттік ауысулардың және ядроның адрестік кеңістіктері мен қызметтік демон арасындағы хабарламаларды бейнелеу немесе көшіруден туындайтын қосымша шығындарға байланысты өнімділікті төмендетеді. Apple OSF-тен OSFMK 7.3 лицензиясын алды және Mach кодымен бірге BSD функцияларын ядроға енгізу арқылы кейбір тапсырмаларды оңайлатуға тырысты. Нәтижесінде OSFMK 7.3 ядросы көп өзгеріс енгізілген (гибридтік) болып табылады.

БСҚ

Беркли бағдарламалық жасақтамасының (BSD) ядросының бөлігі портативті операциялық жүйе интерфейсін (POSIX) бағдарламалық интерфейсін (API, BSD жүйелік шақырулары), Mach тапсырмаларының үстіндегі Unix процесі моделін, негізгі қауіпсіздік саясатын, пайдаланушы және топ идентификаторларын, рұқсаттарды, желілік протокол стегін (протоколдарды), виртуалды файл жүйесі кодын (файл жүйесіне тәуелсіз журнал қабатын қоса алғанда), бірнеше жергілікті файл жүйелерін, мысалы Иерархиялық файл жүйесін (HFS, HFS Plus (HFS+)) және Apple файл жүйесін (APFS), Желілік файл жүйесінің (NFS) клиентін және серверін, криптографиялық құралдарды, UNIX System V процестер аралық байланысын (IPC), аудит подсистемасын, міндетті кіруді бақылауды және бірнеше құлыптау примитивтерін қамтиды. XNU-дағы BSD коды соңғы рет FreeBSD ядросының кодымен синхрондалды. Оның көп бөлігі айтарлықтай өзгертілгенімен, 2009 жылға дейін Apple және FreeBSD жобасы арасында кодты бөлісу жалғасуда.

K32/K64

Mac OS X Snow Leopard, v10.6 (Дарвин нұсқасы 10) жүйесінде XNU екі нұсқада келеді: 32 биттік нұсқасы K32 және 64 биттік нұсқасы K64 деп аталады. K32 пайдаланушы режимінде 64 биттік қолданбаларды іске қоса алады. Mac OS X 10.6-дағы жаңалық – XNU-ды 64 биттік ядролық кеңістікте іске қосу мүмкіндігі. K32, 2008 жылдан бастап Mac Pro және Xserve модельдерінен басқа барлық машиналарда 10.6 Server үшін әдепкі ядро болып табылады және 64 биттік бағдарламаларды іске қоса алады. K64, K32-ге қарағанда бірнеше артықшылықтарға ие:

32 ГБ-тан астам жедел жадты басқара алады, себебі жад картасы 32 биттік ядролық кеңістіктің тым үлкен бөлігін пайдаланады. Кэш буферінің көлемі 32 биттік ядролық кеңістікке қарағанда үлкен болуы мүмкін, бұл I/O өнімділігін арттыруға әкелуі мүмкін. Жоғары өнімділік желілік құрылғыларды немесе бірнеше графикалық процессорларды (GPU) пайдаланғанда өнімділік артады, себебі ядро барлық құрылғыларды 64 биттік кеңістікте карталай алады, тіпті олардың кейбіреуінде өте үлкен тікелей жадқа қол жеткізу (DMA) буферлері болса да. 6 және 4 пернелерін басып тұрып жүктеу, 64 биттік ядроны қолдайтын машиналарда K64-ті іске қосуға мәжбүрлейді. K64 32 биттік қолданбаларды іске қосады, бірақ 32 биттік ядролық кеңейтімдерді (KEXT) іске қоспайды, сондықтан оларды K64-ке ауыстыру қажет. OS X Mountain Lion (10.8) және одан кейінгі нұсқаларында XNU тек 64 биттік ядроны ұсынады.

I/O жиынтығы

I/O Kit – құрылғы драйверлерінің фреймворкі, ол Embedded C++ негізінде құрылған C++ тілінің бір бөлігінде жазылған. Объектіге бағытталған дизайнының арқасында, кез келген драйвер класына тән мүмкіндіктер фреймворк ішінде ұсынылады, бұл драйверлерді жазу уақытын және код көлемін қысқартуға көмектеседі. I/O Kit көп жіпті, симметриялық көп процессорлық (SMP) жүйеде қауіпсіз, сондай-ақ құрылғыларды ыстық қосылыммен (hot plug) қосуға және автоматты, динамикалық құрылғы конфигурациясына мүмкіндік береді. Көптеген драйверлерді пайдаланушы кеңістігінен (user space) іске қосуға болады, бұл жүйенің тұрақтылығын арттырады. Пайдаланушы кеңістігі драйвері қателік тудырса, ол ядроны құлатпайды. Дегенмен, ядролық кеңістіктегі драйвер қателік тудырса, ол ядроны құлатады. Ядролық кеңістікте жұмыс істейтін драйверлердің мысалдары: дискілік адаптерлер және желілік адаптерлер, графикалық драйверлер, Universal Serial Bus (USB) және FireWire хост контроллерлері, сондай-ақ VirtualBox, Parallels Desktop for Mac және VMware Fusion сияқты виртуалды машина бағдарламалық қамтамасының драйверлері.