iOS denen şey acaba tam olarak nasıl çalışıyor? Mesela donanım ve yazılım arasındaki senkron nasıl oluyor, çekirdekten kullanıcı arayüzüne kadar olan süreçler genelde nasıl ilerliyor? Bir de sandbox denen güvenlik yöntemiyle uygulamaların birbirine etkisi nasıl engelleniyor? Kısaca altyapı nasıl oluyor anlatabilen var mı?
iOS nasıl çalışıyor, temelde nelere dayanıyor?
👁️ 7 görüntüleme💬 2 cevap❤️ 0 beğeni
2 Cevap
iOS’un arkasında aslında çok düzgün bir mimari var, kanka. Temelde bir Unix tabanlı sistem üzerine kurulmuş durumda, yani macOS’e hatta Linux’a benzeyen bir çekirdek (kernel) kullanıyor. Darwin adı verilen bu açık kaynaklı çekirdek üzerine, Apple’ın özel donanımını desteklemek için optimize edilmiş bir katman ekliyorlar. iPhone’larda (ve diğer Apple cihazlarında) kullanılan A-serisi çipler (A15, A16 gibi) donanımla yazılım arasındaki bu uyumu öyle sıkı sağlamış ki, sistem neredeyse hiç takılıp kalmıyor. Mesela, donanım belleği (RAM) ve depolama (flash) yönetimi o kadar optimize ki, arka planda çalışan uygulamalar bile çok az güç harcıyor. Bu da batarya ömrünü direkt etkiliyor.
Kullanıcı arayüzünden başlayacak olursak, iOS’un Core Animation, UIKit gibi framework’leri burada devreye giriyor. Uygulamaların ekrana bir şeyleri çizmesiyle senin parmağının ekrana dokunması arasındaki süreç o kadar kısa ki neredeyse gerçek zamanlı hissettiriyor. Mesela, bir uygulama arka planda çalışırken bile (multitasking’de) kullanıcı arayüzü çizimleri anında yenileniyor. Bu da GPU ve CPU’nun birlikte nasıl çalıştığını gösteriyor. Core Animation gibi katmanlar sayesinde, kaydırma, animasyon gibi işlemler direkt GPU’ya aktarılıyor ve performans kaybı olmuyor.
Sandbox kısmına gelince, valla bu cidden akıllıca bir sistem. iOS’ta her uygulama kendi sandbox’ında, yani kendi "kavanozunda" yaşıyor. Dosya sistemiyle ilgili hiçbir şeyi diğer uygulamalarla paylaşmıyorsun, sadece sistem izin verdiğinde (örneğin fotoğraflar uygulamasına erişimde olduğu gibi) dışarıdan veri alabiliyorsun. Bu sayede kötü niyetli bir uygulama, mesela senin banka uygulamanın dosyalarına ulaşamıyor. Ayrıca, sistemdeki anahtar zinciri (Keychain) gibi güvenlik katmanları da uygulamaların özel verilerini şifreli şekilde saklıyor. Sandbox’ın bir diğer faydası da, eğer bir uygulama çökerse sistemin diğer uygulamaları etkilememesi. Bu da sistem kararlılığını ciddi şekilde artırıyor.
iOS’un çekirdeğinde, aslında Apple’ın yıllar içinde geliştirdiği ve Unix tabanlı bir sistem olan **XNU (X is Not Unix)** çekirdeği yatıyor. Bu çekirdek, Mach mikroçekirdeği ve BSD bileşenlerinden oluşuyor, bu da hem güvenliği hem de çoklu görev performansını sağlamanın yanı sıra donanım soyutlamasını mümkün kılıyor. Örneğin, bir iPhone’da bulunan A-serisi yongalar (A16, A17 Pro gibi), bu çekirdeğin optimize edilmiş versiyonlarıyla çalışacak şekilde tasarlanıyor. Donanım ve yazılım arasındaki senkron, çekirdek seviyesinde **I/O Kit** sayesinde gerçekleşiyor; bu da cihazı tanıyarak sürücülerin dinamik olarak yüklenmesini sağlıyor. Peki, eğer Apple gelecekte ARM yerine farklı bir mimariye geçseydi (örneğin RISC-V), bu senkronu nasıl yeniden dizayn etmek zorunda kalırdı?
Sandbox mekanizmasının altında **Apple’s Sandbox Framework** ve **Seatbelt** adı verilen bir güvenlik modeli yatıyor. Her uygulama, sistem kaynaklarına erişim konusunda sıkı bir izolasyonda çalışıyor; dosya sistemine, donanım fonksiyonlarına ya da diğer uygulamaların verilerine doğrudan erişim engelleniyor. Örneğin, bir fotoğraf uygulaması sadece kullanıcının izin verdiği albümleri okuyabiliyor, kamera ya da mikrofon erişimi ise ayrı bir sistemden talep edilmek zorunda. Bu sistemin arkasındaki politika motoru, **MAC (Mandatory Access Control)** adını taşıyor. Peki, eğer bir uygulama, kullanıcıdan zorla daha geniş izinler alabilseydi (örneğin jailbreak ortamında), bu sandbox korumasını nasıl zayıflatırdı?
Tartışmaya katılmak için giriş yap
Giriş Yap