Architettura di macOS e iOS, come funziona?

Benvenuti in questa nuova rubrica, dove analizzeremo il comportamento, l’architettura, la sicurezza e tanti altri aspetti dei due sistemi operativi più famosi in casa Apple: macOS e iOS!

La prima, significativa differenza che intercorre tra macOS e iOS è data dalla profonda e diversa dell’architettura sulla quale i due sistemi si basano. Mentre per macOS abbiamo i famosissimi chip Intel x86_64, iOS si basa su un’architettura chiamata ARM (il codice sorgente del kernel xnu è stato già reso pubblico).

Overview su macOS

Per studiare l’architettura di macOS conviene adottare un approccio semplificato (disponibile anche nella documentazione ufficiale di Apple), nel quale per comodità si divide il sistema in vari livelli:

  • User Experience: è il livello più vicino all’utente, include Aqua, Dashboard, Spotlight e le varie funzioni di accessibilità.
  • Application Framework: nel quale si trovano le API di Carbon (ormai inutile – se non per eseguire vecchie applicazioni) e di Cocoa (Cocoa Touch per iOS).
  • Core Framework: chiamato molto spesso Graphics e Media Layer; Apple usa questo livello per incorporare nelle app la grafica 2D e 3D, animazioni, effetti per le immagini, funzionalità audio e video di livello professionale.
  • Darwin: è una parte fondamentale del sistema con la quale, insieme all’interfaccia Aqua e all’Application Framework forma il sistema operativo macOS: è il cuore del sistema!

macOS architettura iphoneitalia

 

Non è oro tutto ciò che luccica, l’unico strato completamente open source è Darwin. Tutti i livelli superiori sono closed source e restano di proprietà di Apple!

Un approccio del genere trova la sua utilità in qualsiasi contesto: esistono programmi scritti in modo che si interfaccino direttamente con i livelli inferiori: un classico esempio sono i programmi a riga di comando che non necessitano del livello di User Experience.

Durante gli approfondimenti che effettueremo nel corso di questi articoli ci concentreremo sulla struttura di Darwin, ultimo livello, che risulta meno pulita ed organizzata rispetto alla rappresentazioni a strati vista in precedenza, ma necessaria per capire fino in fondo il comportamento di macOS. Da una prima breve analisi, prima di addentrarci in maniera più tecnica nell’argomento, notiamo che xnu (il kernel) è ibrido, formato da prevalentemente da due tecnologie, Mach e BSD in aggiunta ad una componente fondamentale chiamata IOKit che è una raccolta di framework di sistema, librerie, strumenti e altre risorse per la creazione dei driver in macOS.

xnu Darwin iphoneitalia

In maniera molto sintetica e semplificata, possiamo assumere che:

  1. Mach: fornisce l’ambiente per la memoria virtuale.
  2. BSD:  fornisce le interfacce per il filesystem e le chiamate di sistema.
  3. IOKit: per la gestione delle periferiche.

Una nota positiva in questa struttura apparentemente caotica  è che non si è obbligati a conoscere la struttura di Darwin (o peggio ancora..del kernel) per scrivere applicativi per iOS o macOS; la maggior parte delle applicazioni scritte in usermode nel linguaggio Objective C richiedono la conoscenza esclusivamente del framework Cocoa (e Cocoa Touch).  Tutto il resto sarà invisibile agli sviluppatori, non a noi!

Breve zoom su iOS

Anche iOS è conforme allo stesso tipo di architettura che abbiamo appena visto per macOS anche se presente delle differenze sostanziali all’interno dei vari livelli; se è vero che è esattamente identica nei livelli più bassi del nostro modello, non possiamo dire lo stesso per i livelli superiori. Prendendo nuovamente come esempio il livello di User Experience è noto a tutti che l’esperienza tra macOS e iOS è profondamente diversa: macOS utilizza Aqua mentre iOS la Springboard, un approccio è standard mentre l’altro è di tipo touch. macOS possiede framework che iOS non ha e viceversa.

iOS livelli iphoneitalia

 

  • Cocoa Touch: è il livello più famoso ed utilizzato, serve per sviluppare applicazioni per iOS; le librerie Cocoa Touch vengono fornite con due framework: Foundation e UIKit. Quest’ultimo fornisce gli oggetti che le applicazioni mostrano nella user interface e definisce la struttura per il comportamento della nostra applicazione, inclusa la gestione degli eventi. Praticamente è l’intermediario tra noi e il dispositivo. Foundation, invece,  dispone i comportamenti base degli oggetti (come anche i tipi di dati primitivi) e i servizi del sistema operativo.
  • Media: gli sviluppatori di app in genere utilizzano questo livello per comprendere, accedere e sviluppare applicazioni e servizi mobili su dispositivi iOS che forniscono interfacce grafiche, animazioni e accesso agli elementi visivi nativi del dispositivo e al comparto audio.
  • Core Services: viene chiamato in questo modo perchè fornisce servizi essenziali per le app, senza avere nulla a che vedere con la loro interfaccia grafica. Questi servizi dipendono strettamente dal livello ancora più basso, Core OS.
  • Core OS: E’ il livello più importante, il livello più basso dell’architettura di iOS: si trova sopra l’hardware del dispositivo! Questo livello offre una varietà di servizi tra cui il networking di basso livello, accesso ad accessori esterni e i soliti servizi fondamentali del sistema operativo come la gestione della memoria, gestione del filesystem e dei thread.

Dopo questa carrellata di definizioni e concetti, fatta per la maggioranza di argomenti che potrebbero essere per molti banali e scontati (ma necessari) passeremo nel prossimo articolo ad analizzare la User Experience di macOS, per addentrarci sempre più nelle viscere di entrambi i sistemi operativi.

HotAcquista iPhone 15 su Amazon!
Approfondimenti