İşletim sistemi cihazın donanımıyla kullanıcı etkileşimi arasında ki yönetimi sağlayan yazılımdır. iOS işletim sistemi Apple tarafından ilk olarak 2007 yılında iPhone, iPod Touch ve Apple TV için yayınlandı. Apple bilgisayarlarda kullanılan OS X işletim sisteminin mobil versiyonudur. App Store ve apple sertifikalı uygulamalar haricinde cihaza uygulama kurulamamasından dolayı kapalı bir kutu olarakta bilinir. Diğer mobil işletim sistemlerine göre güvenlik seviyesi çok daha fazladır. iOS işletim sisteminde geliştirilen uygulamalar tersine mühendislik (Reverse Engineering) ile deşifre edilemez.
iOS işletim sistemi Face ID ile yüz tanımayı çok başarılı bir şekilde kullanmayı başarmıştır. Tuş kilidi açma, alarmı susturma ve kimlik doğrulama özelliklerini etkin bir şekilde yüz tanıma ile entegre edildiğini görüyoruz. Yurt dışında Apple Pay ile yüzünüzü tanıtarak ödeme işlemlerini gerçekleştirebiliyorsunuz fakat; ülkemizde henüz izinleri olmadığı için bu özellik hizmette değil.
iOS uygulamaların yayınlandığı ve indirildiği platform olan App Store’da yaklaşık 2,1 milyon uygulama mevcuttur. Android uygulamaların yayınlandığı platform olan Play Store’da ise uygulama sayısı 2018 haziranda 3,6 milyona ulaşmıştı ancak Play Store’un son zamanlarda uygulamaya başladığı kurallar ile beraber bu kurallara uymayan uygulamalar yayından kaldırıldı ve şu anda mevcut uygulama sayısı 2,6 milyon civarında.
iOS işletim sistemi Objective-C, C, C++, Swift dillerini destekler. Bu makalenin devamında iOS işletim sistemi katmanlarını ve teknik detaylarını inceleyeceğiz.
iOS işletim sistemi mimarisini incelediğimiz zaman 4 katmandan oluşmaktadır.
Core OS Katmanı
Core OS katmanında bulunan teknolojiler ve frameworkler; donanım ve network (ağ) ile alakalı alt seviye (low level) servisler sunar. Bu servisler Kernel ve cihaz sürücü katmanlarında yer alır.
Core OS Katmanınında bulunan teknolojiler aşağıdaki gibidir:
Gatekeeper
Kullanıcıların App Store’da yayınlanan uygulamalar haricinde uygulama yüklemesini engeller. Sadece geçerli geliştirici kimliği (Developer ID) ile imzalanmış uygulamaların indirilebilmesini sağlar.
App Sandbox
Zararlı bir kod uygulamanızı ihlal ettiği durumda devreye giren verilerinizin çalınmasını, silinmesini ve bozulmasını önleyen son savunma hattı App Sandbox’dır.
App Sandbox uygulamanızın işletim sistemi ile nasıl etkileşim halinde olacağını tanımlar. Böylece sistem uygulamanın sadece ihtiyaç duyduğu özelliklere erişim verir.
Code Signing
Apple code signing (kod imzalama) teknolojisi ile uygulamanın kimin tarafından oluşturulduğunu sertifikalar. Bir uygulama kod imzalı olduktan sonra; sistem uygulamaya yapılan değişiklikleri tespit edebilir. Böylece uygulamada ki değişikliğin zararlı bir kod ya da hata ile mi gerçekleştiği anlaşılır.
Core OS Frameworkleri
Aşağıdaki teknoloji ve frameworkler Core OS katmanında yer almaktadır:
Accelerate
Accelerate framework komplike işlemleri hızlandırmaya sağlayan API’ları(Application Programming Interface) bulundurur ve performansı arttırır. Donanım tabanlı vektör birimler kullanılarak veri paralelliğini hızlandırarak uygulama performansı yükseltilir. Böylelikler 3D grafik gösterimi, görüntü işleme, ses sıkıştırma ve yazılım tabanlı iletişim hızlanır.
Disk Arbitration
Disk Arbitration framework bildirimlerin hayat döngüsünü ve durumunu kontrol eder.
OpenCL
OpenCL (Open Computing Language) ekran kartının yüksek performans paralel işlem gücünü genel hesaplama işlemleri için kullanılmasını sağlar. Sinyal işleme, görüntü manipülasyonu ve çok boyutlu dizi üzerinde işlemler yapmak için kullanılır.
Open Directory (Directory Services)
Network ve yerel cihaz veri tabanında bulunan bilgilerin/verilerin elde edilmesini sağlayan dizin/klasör servis mimarisidir.
System Configuration
Uygulamaların ağ (network) konfigürasyonlarını sağlar ve ağa bağlanmadan önce erişilebilir olup olmadığına karar verir. Wi-fi, hotspot gibi ağlara bağlanmadan önce kullanıcı izni alınmasını yönetir. Uygulamaları ağ konfigürasyonlarında ve erişilebilirliklerinde olan değişiklikler hakkında bilgilendirir.
Core Services Katmanı
Bu katmanda bulunan teknolojiler çekirdek servis olarak adlandırılır. Çünkü uygulamaların ihtiyaç duyduğu temel servisleri sağlar fakat kullanıcı ara yüzüne doğrudan bir etkisi yoktur. Çekirdek katmanı ve kernel ile bağıntılı çalışır.
Core Data
Uygulamaların veri modelini MVC (Model-View-Controller) tasarım mimarisini kullanarak yönetir. Veri yapılarını kod kullanarak oluşturmak yerine XCode içerisindeki görsel araçları kullanarak şema oluşturulması buna bir örnektir. XML’ den SQLite’a kadar farklı yapılarda verinin yerel hafıza da saklanabilmesini sağlar. İşlemi geri alma veya tekrar yapma gibi hamlelere olanak sağlar.
Core Foundation ve Foundation
2 framework’ün de temel hedefleri aynıdır.
Nesne davranışlarını, nesne sıkıştırılması, bildirimlerin tanımlanması. Nesne devamlılığını sağlamak. String, ates, data, numbers, collections gibi temel nesne tiplerini tanımlamak.
Security
Güvenlik çözümlerini basitleştirmek için yüksek seviyeli servis sağlayan frameworktür. Kodu bozmadan güvenlik önlemleri alınmasını sağlar. Certificate, key chain, key, trust services gibi özellikleri bizlere sunar.
WebKit
WebKit frameworkü uygulamanın HTML içerik göstermesine olanak sağlar. Web Core ve JavaScript Core olmak üzere 2 alt frameworkten oluşur. Web Core HTML içeriği gösterirken JavaScript Core ise javascript kodlarını çalıştırır.
Social Framework
Social frameworkü http çağrı yapısını tanımlayıp bizlere sunarak uygulamalarda sosyal ağ servislerinin entegre edilmesini sağlar. Bu framework sayesinde uygulamaya sosyal ağ hesap verilerinin çekilmesi sağlanır.
Media Katmanı
2D ve 3D grafikleri, animasyonları, görsel efektleri, yüksek kalite ses ve video özelliklerini uygulamaya entegre edilmesini sağlar. OS X 100’e yakın medya dosya tipini destekler. Bu listenin bir kısmı aşağıdaki gibidir:
Image formats | PICT, BMP, GIF, JPEG, TIFF, PNG, DIB, ICO, EPS, PDF |
Audio file and data formats | AAC, AIFF, WAVE, uLaw, AC3, MPEG-3, MPEG-4 (.mp4, .m4a), .snd, .au, .caf, Adaptive multi-rate (.amr) |
Video file formats | AVI, AVR, DV, M-JPEG, MPEG-1, MPEG-2, MPEG-4, AAC, OpenDML, 3GPP, 3GPP2, AMC, H.264, iTunes (.m4v), QuickTime (.mov, .qt) |
Web streaming protocols | HTTP, RTP, RTSP |
Core Animation
Komplike 2D render ve animasyon için kullanılan Objective-C sınıflarıdır. Core Animation kullanarak basit bir pencereden, slaytta kadar kullanıcı ara yüzleri oluşturulabilir.
Core Image
Core Image uygulamaların komplex görsel davranışları yapmasını sağlayan framework’ü sunar. Kırpma, blurlama, renk efektleri, resim ve video geçiş efektleri, yüz tanıma gibi özellikleri destekler.
AV Foundation
Görsel ve işitsel medya elemanlarını oynatma, düzenleme, inceleme ve yönetme erişimlerini sağlar.
OpenGL
Endüstride sıkça kullanılan 3 boyutlu uygulamaların geliştirilmesinde büyük rol oynar. Performans ve güç gerektiren uygulamalar da genellikle oyunlarda kullanılması için tasarlanmış bir frameworktür.
Cocoa Application Katmanı
Cocoa Application katmanı uygulamanın görünümünden ve kullanıcı aksiyonlarından asıl sorumlu katmandır.
AppKit
Cocoa’nın en önemli framework’dür. Bu framework içerisindeki sınıflar pençelere, dialoglar, kontroller, menüler ve eventler gibi kullanıcı ara yüzünü tanımlar. AppKit engelliler için API sunar ve uygulamayı engellilerin kullanabileceği şekilde geliştirilmesine olanak tanır.
Bu makaledeki bazı bilgiler Apple dokümanından referans alınarak yazılmıştır. Detayla bilgi için apple dokümanını inceleyebilirsiniz:
Siz de fikrinizi belirtin