İçeriğe atla

XNU

Vikipedi, özgür ansiklopedi
XNU
Geliştirici(ler)Apple
Kaynak türüAçık kaynak
LisansApple Public Source License
ÇekirdektürüMelez çekirdek
İlk Yayınlanma
  • Aralık 1996
PlatformdesteğiIA-32,x86-64,ARM
Programlama diliC,C++

XNU,MacOSişletim sisteminde kullanılmak üzere Aralık 1996'dan beriApple'da geliştirilen veDarwinişletim sisteminin bir parçası olarak ücretsiz ve açık kaynaklı yazılım olarak piyasaya sürülen bilgisayar işletim sistemi çekirdeğidir.[1]Ayrıca,iOS,tvOSvewatchOSişletim sistemlerinin çekirdeği olarak da kullanılır. XNU, "X Not Unix" 'in bir kısaltmasıdır.

NextStepişletim sistemi içinNeXTtarafından geliştirilen XNU,Carnegie Mellon Üniversitesi'nde geliştirilenMachçekirdeğinin 2.5 sürümünü 4.3BSDbileşenleri ve Driver Kit adlı sürücüleri yazmak için birObjective-CAPI'si ile birleştiren karma bir çekirdekti.[2]

Apple, NeXT'yi satın almasının ardından,Machbileşeni OSF'den OSFMK 7.3'e yükseltildi, BSD bileşenleriFreeBSDprojesinden alınan kodla yükseltildi ve Sürücü Kiti,G/ÇKiti adı verilen sürücüleri yazmak için birC++API ile değiştirildi.[3]

Çekirdek tasarımı

[değiştir|kaynağı değiştir]
XNU

XNU hemmonolitik çekirdeklerinhem demikro çekirdeklerinözelliklerini içeren, her iki teknolojiden en iyi şekilde yararlanmaya çalışan melez bir çekirdektir; mikrokernellerin mesajlaşma yeteneği daha büyük modülerlik sağlar ve işletim sisteminin daha büyük bölümleri hafıza korumasından yararlanabilir.[4]

2007 itibarıyla, XNU hem bir işlemci, hem de simetrik çoklu işlem (SMP) modelleri olan ARM,IA-32vex86-64işlemciler üzerinde çalışmaktadır.[5]PowerPCdesteği, sürüm 10'dan itibaren kaldırılmıştır (Mac OS X Snow Leopard).

XNU çekirdeğinin temeli, ağır modifiye (melez) bir OSFMK 7.3 çekirdeğidir. Bu nedenle, bir işletim sisteminin çekirdeğini, ayrı bir süreç olarak çalıştırmak mümkündür; bu da büyük bir esneklik sağlar (Mach çekirdeğinin üzerinde paralel birkaç işletim sistemini çalıştırabilir).[6]Ancak çekirdek / kullanıcı modu bağlam anahtarı ve çekirdeklerin adres alanları ile hizmet çağrı merkezleri arasındaki eşleme veya kopyalama mesajından kaynaklanan zamana bağlı çekirdek / kullanıcı modu nedeniyle genelde performansı düşürür.Mac OS Xile tasarımcılar bazı görevleri hızlandırmaya çalıştılar ve böylece BSD işlevselliği Mach ile çekirdeğe yerleştirildi.[7]Sonuç, ağır bir şekilde değiştirilmiş (melez) OSFMK 7.3 çekirdeğidir; Apple, OSFMK 7.3 lisanslıdır, OSFMK 7.3, OSF'den bir mikrokerneldir. OSFMK 7.3, University of Utah Mach 4 çekirdeği ve orijinal Carnegie Mellon University Mach 3.0 mikro çekirdeğinden çıkarılan birçok Mach 3.0 varyantından geçerli kodun uygulanabilir kodunu içerir.

XNU grafiği

Çekirdekteki Berkeley Software Distribution (BSD) bölümüPOSIXuygulama programlama arayüzü(API, BSD sistem çağrıları), Mach görevlerinin üstündeki Unix işlem modeli, temel güvenlik ilkeleri, kullanıcı ve grup kimlikleri, izinler, ağ protokolleri, sanal dosya sistemi kodu (bir dosya sistemi bağımsız günlük kaydı katmanı dahil),HFS/HFS Plus,Ağ Dosya Sistemi(NFS) istemcisi ve sunucusu, şifreleme çerçevesi, UNIX Sistem V işlemler arası iletişim (IPC), denetim alt sistemi, zorunlu erişim kontrolü ve bazı kilitleme ilkelleri gibi birkaç yerel dosya sistemidir.[8]XNU'da bulunan BSD kodu FreeBSD çekirdeğinden geldi. Birçoğu önemli ölçüde değiştirilmiş olsa da, Apple ile FreeBSD Projesi arasında hala kod paylaşımı gerçekleşiyor.

XNU, Mac OS X Snow Leopard, v10.6 (Darwin sürüm 10) ve daha sonraki sistemde iki çeşittir; 32 bitlik bir sürüm olan K32 ve 64 bitlik bir sürüm olan K64. K32, kullanıcı arazisinde 64 bitlik uygulamaları çalıştırabilir. Mac OS X 10.6'da yeni olan şey, 64-bit çekirdek alanında XNU'yu çalıştırma yeteneğiydi. K32,Mac ProveXservemodelleri dışındaki tüm makinelerde kullanıldığında 10.6 Server için varsayılan çekirdekti ve 2008'den itibaren ve 64 bit uygulamaları çalıştırabiliyordu.[9]K64, K32'ye kıyasla birkaç avantaja sahiptir:

  • Bellek haritası 32-bit çekirdek alanının orantısız olarak geniş bir alanını tüketirken 32 GB'den fazla RAM yönetebilir.
  • Önbellek arabellek boyutları, 32-bit çekirdek alanının izin verdiğinden daha büyük olabilir, bu da g / Ç performansını potansiyel olarak artıracaktır.
  • Çekirdek, çok büyük doğrudan bellek erişimi (DMA) arabelleklerine sahip olsa bile 64-bit alanındaki tüm aygıtları eşleyebildiği için, yüksek performanslı ağ aygıtlarını veya çoklu grafik işlemci birimlerini (GPU) kullanırken performans artar.

6 ve 4'ü basılı tutarken önyükleme yapmak, 64-bit çekirdeği destekleyen makinelerde K64'i önyüklemeye zorlar. [11] K64 32-bit uygulamaları çalıştıracak, ancak 32-bit çekirdek uzantılarını (KEXT) çalıştırmayacaktır, böylece yükleyebilmek için bunlar K64'e taşınmalıdır.[10]

I/O KitEmbedded C ++ tabanlı C ++ alt kümesiyle yazılmış aygıt sürücüsü çerçevesidir. Nesne yönelimli tasarımını kullanarak, aygıt sürücülerinin daha az zaman ve kodla yazılmasına yardımcı olan, herhangi bir sürücüler sınıfında ortak olan özellikler çerçevede sağlanmaktadır. G / Ç Seti, çok dişli, simetrik çok işlemcili (SMP) güvenlidir ve çalışırken aygıtlara otomatik, dinamik aygıt yapılandırmasına olanak tanır.[11]

Çoğu sürücü, kullanıcı alanından çalıştırılacak şekilde yazılabilir; bu da sistemin kararlılığını daha da geliştirir. Bir kullanıcı alanı sürücüsü çökerse, çekirdeği çökertmez. Bununla birlikte, bir çekirdek-alan sürücüsü çökerse çekirdeği çöker. Çekirdek alanı sürücülerine örnek olarak disk adaptörü ve ağ adaptörü sürücüleri, grafik sürücüleri, Evrensel Seri Veri Yolu (USB) veIEEE 1394FireWire ana bilgisayar denetleyicileri için sürücüler veVirtualBox,Mac için Parallels DesktopveVMware Fusiongibi sanal makine yazılımı için sürücüler bulunur.[12]

Paylaşılan kaynakları koruma

[değiştir|kaynağı değiştir]

Çok işlemcili makinelerde güvenle çalıştırmak için, paylaşılan kaynaklara (dosyalar, veri yapıları vb.) Erişim dizileri veya işlemler aynı anda aynı kaynağı değiştirmeye çalışmaması için serileştirilmelidir. Atomik işlemler, spinlock'lar, kritik bölümler, karşılıklı dışlamalar ( "muteksler" ) ve dizgelerin seri hale getirilmesi eş zamanlı erişimi önlemek için kullanılabilecek tüm yöntemlerdir.Linuxve FreeBSD'nin son sürümlerinde olduğu gibi, XNU, Mac OS X 10.4 ve Darwin 8.0 itibarıyla çok işlemcili sistemlerde daha yüksek performans elde etmek için ince taneli mutex modeli kullanmaktadır.

  1. ^"Darwin-xnu: The Darwin Kernel".15 Aralık 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  2. ^"Opensource-Apple / XNU".24 Eylül 2018 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  3. ^"iOS and macOS researcher is seeking people to work on open-source kernel".15 Aralık 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  4. ^"Kernel Architecture Overview".17 Şubat 2018 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  5. ^"Apple open-sourced the kernel of iOS and macOS for ARM processors".15 Aralık 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  6. ^"A Trusted, Scalable, Real-Time Operating System Environment"(PDF).22 Ağustos 2017 tarihinde kaynağındanarşivlendi(PDF).Erişim tarihi: 15 Aralık 2017.
  7. ^"What is Mac OS X?".19 Nisan 2019 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  8. ^"Grand Central Dispatch - FreeBSD port".15 Aralık 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  9. ^"XNU Kernel: Source Code".15 Aralık 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  10. ^"Mach IPC Interface".21 Mayıs 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  11. ^"Introduction to I/O Kit Fundamentals".15 Aralık 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.
  12. ^"I/O Kit Overview".3 Ağustos 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 15 Aralık 2017.

Dış bağlantılar

[değiştir|kaynağı değiştir]

Ayrıca bakınız

[değiştir|kaynağı değiştir]