XNU

Çekirdek tasarımı

XNU hem monolitik çekirdeklerin hem de mikro ç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.
2007 itibarıyla, XNU hem bir işlemci, hem de simetrik çoklu işlem (SMP) modelleri olan ARM, IA-32 ve x86-64 işlemciler üzerinde çalışmaktadır. PowerPC desteği, sürüm 10'dan itibaren kaldırılmıştır (Mac OS X Snow Leopard).

Mach

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). 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 X ile 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. 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.

BSD

Çekirdekteki Berkeley Software Distribution (BSD) bölümü POSIX uygulama 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. 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.

I/O Kit

I/O Kit Embedded 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.
Ç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) ve IEEE 1394 FireWire ana bilgisayar denetleyicileri için sürücüler ve VirtualBox, Mac için Parallels Desktop ve VMware Fusion gibi sanal makine yazılımı için sürücüler bulunur.

Paylaşılan kaynakları koruma

Ç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. Linux ve 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.