macOS, kullanıcı dostu bir arayüzü UNIX’in güç ve kararlılığıyla birleştiren, hem deneyimli hem de sıradan kullanıcılara hitap eden bir işletim sistemi. Özellikle iOS, iPadOS, tvOS watchOS’in de temelini oluşturduğu için, macOS’in iç işleyişini öğrenmek isteyen çokça meraklısı var. Fakat, bazı sitelerde paylaşılan yazılar ve videolar sıklıkla macOS’un temelini yanlış yansıtan mitleri yayarak, iç yapısını öğrenmek isteyenleri yanlış yönlendirmekte.
Bunlardan başlıcaları şöyle:
macOS FreeBSD tabanlıdır
En yaygın mit, macOS’un FreeBSD üzerine inşa edildiği veya hatta “sadece güzel bir kullanıcı arayüzüne sahip bir FreeBSD sürümü” olduğudur. macOS, FreeBSD’den bileşenler içerse ve BSD sistemleriyle birçok benzerliği olsa da, macOS’in FreeBSD tabanlı olduğunu söylemek yanlıştır. Bu ifade, tıpkı Linux dağıtımlarının veya Android’in Linux çekirdeği üzerine inşa edildiği gibi, macOS’un da doğrudan FreeBSD üzerine inşa edildiğini ima ediyor. Ancak, macOS, FreeBSD kodundan türetilmiş kullanıcı alanı araçlarını, kütüphaneleri ve belirli çekirdek bileşenlerini kullansa da, daha çok Apple’ın kendi geliştirdiği, daha karmaşık bir temel olan Darwin üzerine kuruludur.
Aslında, macOS ve Darwin, Steve Jobs tarafından kurulan NeXT Inc. şirketi tarafından geliştirilen NEXTSTEP işletim sistemine dayanmaktadır. Apple, 1990’larda artık teknolojik olarak rakiplerinin gerisinde sayılan ve şimdilerde “Klasik” Mac OS olarak anılan Macintosh işletim sistemini değiştirmek için yaptığı tüm girişimlerin hüsranla sonuçlanmasının ardından (bkz. Copland ve Taligent), NeXT Inc. ve onunla birlikte NEXTSTEP’i satın almıştı.
macOS çekirdeği, FreeBSD çekirdeğinin değiştirilmiş bir versiyonudur
Yanlış. Darwin’in çekirdeği olan XNU (“X is Not Unix” kısaltması), temelinde Mach çekirdeği üzerine inşa edilmiştir. Mach, Carnegie Mellon Üniversitesi’nde (CMU) bir araştırma projesi olarak başlamış ve 3.0 sürümü itibariyle mikro çekirdek yaklaşımının tam bir uyarlamasıdır. Apple, Mach’ı XNU’ya entegre ederken, özellikle süreç yönetimi, dosya sistemleri, ağ iletişimi ve Unix API’leri gibi alanlarda FreeBSD’den türetilen kodlarla birleştirerek önemli değişiklikler yapmıştır.
XNU şu bileşenlerden oluşur:
- OSFMK (Mach)
- BSD Katmanı
- I/O Kit
OSFMK (Mach Çekirdeği)
XNU’da kullanılan Mach çekirdeği Apple’ın Open Software Foundation’dan lisansladığı OSFMK çekirdeğinin 7.3 sürümünün büyük ölçüde değiştirilmiş halidir. OSFMK büyük ölçüde CMU’nun geliştirdiği Mach 3.0 sürümünün üzerine kurulmuş olmasıyla birlikte Utah Üniversitesi’nin geliştirdiği Mach 4.0 sürümünden alınmış bazı kodlar da içerir.
XNU, FreeBSD çekirdeğinden de kod içerse de daha çok Mach çekirdeğinin büyük ölçüde değiştirilmiş bir versiyonu üzerine kurulmuş olup, Apple’ın kendi eklediği değiştirdiği çok fazla kod içerir.
BSD Katmanı
XNU’daki BSD katmanı, OSFMK 7.3’ten farklı olarak 4.4BSD-Lite’dan değil de FreeBSD’den alınmış koddan türetilmiştir. Bu katman sayesinde XNU, Darwin ve macOS üzerinde çalışan uygulamalar açısından bakıldığında bir Unix’miş gibi görünür.
XNU’daki BSD katmanı aşağıdaki işlevleri sağlar:
- POSIX API: Unix ve Unix benzeri işletim sistemleriyle uygulama uyumluğu sağlamak için POSIX API’si sunar
- Süreç Yönetimi: Kaynak atama, süreç numarası, kullanıcı izinleri vs. gibi işlevler de dahil olmak üzere kullancı süreçlerini yönetir.
- Dosya Sistemleri: Okuma yazma ve depolama aygıtlarının yönetimi gibi dosya sistemi ile ilgili işlemleri yönetir. HFS+ ve APFS dosya sistemlerini destekler.
- Ağ: TCP/IP gibi ağ protokollerini destekleyen geniş bir ağ katmanı sunar.
I/O Kit
I/O Kit, donanım aygıtlarını ve sürücülerini yönetmek için tasarlanmış nesne yönelimli bir frameworktür. Aygıt sürücüsü geliştirmek ve yüklemek için esnek ve genişletilebilir bir mimari sunar. Donanımların karmaşık yapılarını soyutlayıp, geliştiricilerin C++ ile daha üst düzeyde aygıt sürücüleri yazmalarını sağlayarak sürücü geliştirmeyi basitleştirir.
macOS bir mikro çekirdeğe sahiptir
Yanlış. Her ne kadar XNU’nun temelini oluşturan Mach tam bir mikro çekirdek olsa da XNU monolitik çekirdeklerin de bazı özelliklerini taşıdığı için hibrit çekirdek olarak kabul edilir.
Geleneksel bir mikro çekirdek mimarisinde, hafıza yönetimi, süreç yönetimi ve süreçler arası iletişim (IPC) gibi temel işlevler çekirdek tarafından yönetilirken, dosya sistemi ve aygıt sürücüleri gibi işlevler daha üst seviyede ve çekirdeğin dışında yani kullanıcı alanında çalışır. Bu tasarım modülerliği artırırken kullanıcı ve çekirdek alanı arasındaki sık geçişler ve IPC nedeniyle performans sorunlarına neden olabilir. Apple, bu dezavantajı ortadan kaldırmak için, FreeBSD koduyla oluşturduğu BSD katmanını doğrudan çekirdek alanına entegre etmiş ve mikro çekirdek yapısının dışına çıkmıştır.
Özet
Özetle macOS’in yapısını şöyle formülize edebiliriz:
macOS = Darwin + Aqua + Cocoa Framework + Quartz + Core Animation + Apple tarafından geliştirilen birçok bileşen
Darwin = XNU çekirdeği + Dosya Sistemleri + Ağ Katmanı + CoreOS Servisleri + Güvenlik Frameworkü + BSD Kullanıcı alanı
XNU Kernel = OSFMK (Mach) + BSD Katmanı + I/O Kit + Çekirdek uzantıları (Kext — Kernel Extensions)
Leave a Reply