XNU - XNU

XNU
XNU Kernel Graphic.svg
XNU yadrosi
TuzuvchiApple Inc.
YozilganC, C ++
OS oilasiUnixga o'xshash, Unix
Ishchi holatJoriy
Manba modeliOchiq manbali
Dastlabki chiqarilish1996 yil dekabr; 24 yil oldin (1996-12)
Ombor Buni Vikidatada tahrirlash
Mavjud:Ingliz tili va boshqalar
PlatformalarIA-32, x86-64, ARM
Kernel turiGibrid
LitsenziyaApple ommaviy manba litsenziyasi 2.0
OldingiMach, Nukernel
Rasmiy veb-saytochiq manbalar.olma.com/manba/ xnu

XNU bu kompyuter operatsion tizim (OS) yadro da ishlab chiqilgan Apple Inc. 1996 yil dekabridan boshlab Mac OS X-da foydalanish uchun (hozirda macOS ) operatsion tizim va sifatida chiqarilgan bepul va ochiq manbali dasturiy ta'minot qismi sifatida Darvin Uchun asos bo'lgan OS Apple TV dasturiy ta'minoti, iOS, iPadOS, watchOS va tvOS Operatsion tizimlar. XNU ning qisqartmasi X emas Unix.[1]

Dastlab tomonidan ishlab chiqilgan Keyingisi uchun Keyingi qadam operatsion tizim, XNU a gibrid yadro ning 2.5 versiyasini birlashtirish Mach yadrosi da ishlab chiqilgan Karnegi Mellon universiteti dan komponentlar bilan 4.3BSD va an dastur dasturlash interfeysi (API) in Maqsad-C Driver Kit nomli drayverlarni yozish uchun.[iqtibos kerak ]

Apple NeXT-ni sotib olgandan so'ng, Mach komponenti yangilandi OSFMK 7.3 dan OSF,[2] kodi bilan yangilangan BSD komponentlari FreeBSD loyihasi amalga oshirildi va Driver Kit a bilan almashtirildi C ++ I / U Kit deb nomlangan drayverlarni yozish uchun API.[iqtibos kerak ]

Yadro dizayni

XNU a gibrid yadro, ikkalasining xususiyatlarini o'z ichiga olgan monolit yadrolari va mikrokernellar kabi har ikkala texnologiyadan ham unumli foydalanishga harakat qilmoqda xabar o'tmoqda katta modullik va operatsion tizimning katta qismlaridan foydalanishga imkon beradigan mikrokernellarning qobiliyati xotirani himoya qilish va ba'zi bir muhim vazifalar uchun monolitik yadrolarning tezligini saqlab qolish.

2007 yildan boshlab XNU ishlaydi ARM,[3] IA-32 va x86-64 protsessorlar, ikkalasi ham bitta protsessor va nosimmetrik ko'p ishlov berish (SMP) modellari. PowerPC versiyasi bo'yicha qo'llab-quvvatlash o'chirildi Mac OS X 10.6.

Mach

XNU yadrosining asosini og'ir modifikatsiyalangan (gibrid) tashkil etadi. Dasturiy ta'minot fondi Mach yadrosi (OSFMK ) 7.3.[2] Shunday qilib, u operatsion tizimning yadrosini ajratilgan jarayonlar sifatida boshqarishi mumkin, bu esa katta moslashuvchanlikni ta'minlaydi (Mach yadrosi ustida bir nechta operatsion tizimlarni parallel ravishda ishlashi mumkin), lekin bu ko'p vaqt talab qiladigan yadro tufayli ishlashni pasaytiradi / foydalanuvchi rejimi kontekstli kalitlari va yadro va xizmat ko'rsatuvchi xizmatlarning manzil bo'shliqlari orasidagi xabarlarni xaritalash yoki nusxalashdan kelib chiqadi. Bilan macOS, dizaynerlar ba'zi vazifalarni soddalashtirishga harakat qilishdi va shu bilan BSD funktsiyalari Mach bilan yadroga o'rnatildi. Natijada juda modifikatsiyalangan (gibrid) OSFMK 7.3 yadrosi, Apple litsenziyalangan OSFMK 7.3, ya'ni mikrokernel,[4] OSF-dan. OSFMK 7.3 ga tegishli kod kiradi Yuta universiteti Mach 4 yadrosi va ko'plab Mach 3.0 variantlaridan vilkalar asl nusxadan Karnegi Mellon universiteti Mach 3.0 mikrokernel.

BSD

The Berkli dasturiy ta'minotini tarqatish (BSD) yadrosining bir qismi Portativ operatsion tizim interfeysini (POSIX ) dastur dasturlash interfeysi (API, BSD tizim qo'ng'iroqlari), Unix Mach vazifalari ustidagi jarayon modeli, asosiy xavfsizlik siyosati, foydalanuvchi va guruh identifikatorlari, ruxsatlar, tarmoq protokol to'plami (protokollar), virtual fayl tizimi kod (shu jumladan a fayl tizimi mustaqil jurnalga yozish kabi bir nechta mahalliy fayl tizimlari Ierarxik fayl tizimi (HFS, HFS Plus (HFS +)) va Apple fayl tizimi (APFS), Tarmoq fayl tizimi (NFS) mijoz va server, kriptografik ramka, UNIX tizimi V jarayonlararo aloqa (IPC), audit quyi tizimi, majburiy kirishni boshqarish va ba'zi bir qulflash ibtidoiylari.[5] XNUda mavjud bo'lgan BSD kodi FreeBSD yadro. Garchi ularning aksariyati sezilarli darajada o'zgartirilgan bo'lsa ham, kod almashish Apple va FreeBSD loyihasi o'rtasida 2009 yildan beri davom etmoqda.[6]

K32 / K64

XNU in Mac OS X Snow Leopard, v10.6, (Darvin versiya 10) ikkita turga kiradi, a 32-bit deb nomlangan versiya K32 va a 64-bit deb nomlangan versiya K64.[7] K32 64 bitli dasturlarni ishga tushirishi mumkin foydalanuvchi maydoni.[8] Mac OS X 10.6-da yangi narsa XNU-ni 64-bitda ishlatish qobiliyati edi yadro maydoni. K32 10.6 uchun standart yadro edi Server tashqari barcha mashinalarda ishlatilganda Mac Pro va Xserve 2008 yildan boshlab modellar[9] va 64 bitli dasturlarni ishga tushirishi mumkin. K64 K32 bilan taqqoslaganda bir nechta afzalliklarga ega:[10]

  • 32 Gb dan ortiq RAMni boshqarishi mumkin, chunki xotira xaritasi 32 bitli yadro maydonining nomutanosib katta maydonini iste'mol qiladi.
  • Kesh buferining o'lchamlari 32-bitli yadro maydoni ruxsat berganidan kattaroq bo'lishi mumkin va bu I / U ishlashini oshiradi.
  • Yuqori mahsuldor tarmoq qurilmalaridan yoki bir nechta qurilmalardan foydalanishda ishlash kuchayadi grafik ishlov berish birliklari (GPU), chunki yadro barcha qurilmalarni 64 bitli bo'shliqda aks ettirishi mumkin, hatto bir nechtasi juda katta bo'lsa xotiraga bevosita kirish (DMA) buferlar.

Ushlab turganda yuklash 6 va 4 K64-ni 64 bitli yadrolarni qo'llab-quvvatlaydigan mashinalarda yuklashga majbur qiladi.[11] K64 32-bitli dasturlarni ishlaydi, ammo u 32-bitli ishlamaydi yadro kengaytmalari (KEXTlar), shuning uchun ularni yuklash uchun K64 ga ko'chirish kerak.

XNU in OS X Mountain Lion, v10.8 va undan keyin faqat 64 bitli yadro taqdim etiladi.

I / O to'plami

I / U to'plami qurilma drayveri pastki qismida yozilgan ramka C ++ asoslangan O'rnatilgan C ++.[12] Uning yordamida ob'ektga yo'naltirilgan Har qanday sinf drayveri uchun xos bo'lgan dizayn, xususiyatlar doirasida taqdim etilib, qurilma drayverlariga kamroq vaqt va kodda yozilishiga yordam beradi. I / U to'plami ko'p ipli, nosimmetrik ko'p ishlov berish (SMP) -xavfsiz va ulanadigan qurilmalar va avtomatik, dinamik qurilmalar konfiguratsiyasiga imkon beradi.

Ko'pgina drayverlarga ishlatish uchun yozish mumkin foydalanuvchi maydoni, bu tizim barqarorligini yanada oshiradi. Agar foydalanuvchi maydoni drayveri ishdan chiqsa, u yadroni ishdan chiqarmaydi. Ammo, agar yadro-bo'shliq drayveri ishdan chiqsa, u yadroni buzadi. Disk adapteri va tarmoq adapterlari drayverlari, grafik drayverlar, Universal Serial Bus (USB ) va FireWire xost tekshirgichlari va haydovchilar uchun virtual mashina kabi dasturiy ta'minot VirtualBox, Parallels Desktop for Mac va VMware Fusion.

Shuningdek qarang

Adabiyotlar

  • Loepere, Keyt. "MK ++: yuqori mahsuldorlik va yuqori mikrosernel".
  1. ^ "UNIX / Linux dasturlarini Mac OS X-ga ko'chirish: Lug'at". Apple Computer. 2005 yil. Olingan 7 iyun, 2017.
  2. ^ a b Mage, Jim. WWDC 2000 Session 106 - Mac OS X: Yadro. 14 daqiqa.
  3. ^ IPhone protsessori topildi: 620MHz ARM protsessor (2007 yil 1-iyul) 2008 yil 6-yanvarda olingan
  4. ^ Uells, Duglas M. "Ishonchli, o'lchovli, real vaqtda operatsion tizim muhiti" (PDF). Semantik olim. Allen instituti (AI2).
  5. ^ Vatson, Robert (2008 yil 2-avgust). "Re: freebsd-advocacy Digest, 248-jild, 1-son".. freebsd-advokatlik (Pochta ro'yxati). Olingan 24 oktyabr, 2013.
  6. ^ "FreeBSD-ning choraklik holati to'g'risidagi hisoboti (Grand Central Dispatch - FreeBSD porti)". 2009 yil aprel. Olingan 24 oktyabr, 2013.
  7. ^ Mac OS X 10.6 Snow Leopard: Ars Technica-ning sharhi, 5-bet
  8. ^ Sirakuza, Jon (2009 yil 31-avgust). "Mac OS X 10.6 Snow Leopard: Ars Technica sharhi". Ars Technica. Va nihoyat, buni takrorlashga arziydi: iltimos, 64 bitli dasturlarni ishga tushirish yoki Mac-da 4 GB dan ortiq RAM o'rnatish uchun 64 bitli yadroni ishga tushirishingiz shart emasligini yodda tuting. Ilovalar 32-bitli yadroning yuqori qismida 64-bitli rejimda juda yaxshi ishlaydi va hatto Mac OS X-ning oldingi versiyalarida 4 Gb dan ortiq RAMni o'rnatish va undan foydalanish imkoniyati mavjud edi.
  9. ^ Mac OS X Server v10.6: 64-bitli yadrodan foydalanadigan Mac-lar
  10. ^ "Mac OS X-dagi yangiliklar: Mac OS X v10.6". Apple Developer. Apple, Inc.
  11. ^ Mac OS X Server v10.6: 32 yoki 64 bitli yadrodan boshlash
  12. ^ I / O to'plami cheklangan C ++ to'plamidan foydalanadi

Tashqi havolalar