Elaborato Mauriello Rina Michela N46000137

Transcript

Elaborato Mauriello Rina Michela N46000137
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Elaborato finale in Sistemi Operativi
Il Sistema Operativo
OS X 10.8 Mountain Lion
Anno Accademico 2011/2012
Candidato:
Rina Michela Mauriello
matr. N46/000137
A mio nonno,
che è e sempre sarà
la mia àncora.
E al mio Capitano,
Per Aspera, Ad Astra.
Il Sistema Operativo OS X 10.8 Mountain Lion
Indice
Introduzione
4
Capitolo 1. Core & Application Services
1.1
1.2
10
Application Services
Core Services
10
21
Capitolo 2. API & GUI
2.1
2.2
29
Application Programming Interface
Graphical User Interface
29
39
Capitolo 3. Il Kernel
3.1
3.2
3.3
3.3.1
3.3.2
48
Mach
I/O Kit
BSD
File System
Networking
50
54
55
57
59
Conclusioni
61
Bibliografia
63
Ringraziamenti
64
III
Il Sistema Operativo OS X 10.8 Mountain Lion
Introduzione
L’evoluzione di questo Sistema Operativo ha origini lontane.
Era il 1976 quando tre ragazzi statunitensi, Steve Jobs, Steve Wozniak e Ronald Wayne,
fondarono l’oramai nota Apple.
Il loro sogno era costruire un computer economico, utilizzando il quantitativo minimo di
componenti ed accessibile a tutti.
Cominciarono a lavorare nel garage della famiglia di Steve Jobs, e con non poche
difficoltà sono riusciti a sviluppare l’Apple I.
Il primo Apple Macintosh fu presentato nel 1984, ma solo nel 2000, dopo l’acquisizione
della NeXT nel 1996, si è avuta la presentazione del padre di Mountain Lion, Mac OS X
10.0 Cheetah (Giaguaro).
Da allora sono passati 13 anni, e il Sistema Operativo ha subito dei cambiamenti radicali.
OS X 10.8 Mountain Lion ha come primo cambiamento il nome: Mountain Lion perde il
suffisso Mac.
Alla pagina seguente, una tabella che riassume la storia dell’evoluzione di Mac OS X.
4
Il Sistema Operativo OS X 10.8 Mountain Lion
Versione
Nome In Codice
Data di rilascio
Grail1Z4 /
RhapsodyDeveloper Release
Ultima release
DR2
31 Agosto 1997
Titan1U
(14 Maggio 1998)
1.2v3
Mac OS X Server 1.0
Hera
16 Marzo 1999
(27 Ottobre 2000)
Mac OS X Developer Preview
16 Marzo 1999
Public Beta
Kodiak
13 Settembre 2000
Mac OS X 10.0
Cheetah
24 Marzo 2001
DP4 (5 Aprile 2000)
10.0.4
(22 Giugno 2001)
10.1.5
Mac OS X 10.1
Puma
25 Settembre 2001
(6 Giugno 2002)
10.2.8
Mac OS X 10.2
Jaguar
24 Agosto 2002
(3 Ottobre 2003)
10.3.9
Mac OS X 10.3
Panther
24 Ottobre 2003
(15 Aprile 2005)
10.4.11
Mac OS X 10.4
Tiger
29 Aprile 2005
(14 Novembre 2007)
10.5.8
Mac OS X 10.5
Leopard
26 Ottobre 2007
(5 Agosto 2009)
10.6.8 v1.1
Mac OS X 10.6
Snow Leopard
28 Agosto 2009
(25 Luglio 2011)
10.7.5
Mac OS X 10.7
Lion
20 Luglio 2011
(19 Settembre 2011)
10.8.2
OS X 10.8
Mountain Lion
25 Luglio 2012
(19 Settembre 2012)
Tabella I.1
5
Il Sistema Operativo OS X 10.8 Mountain Lion
Apple ci offre oltre 200nuove funzioni e molti cambiamenti interni.
Vediamo alcune novità interne:1

Maggiore integrazione con iCloud (iPhone, iPad, iMac, MacBook e iPod).

Accessibilità, il pannello di accesso alle preferenze di sistema è stato
completamente ridisegnato.

Sincronizzazione automatica dei documenti in iWork con iCloud.

Reminders, una nuova applicazione per gestire i promemoria.

Notes, una nuova applicazione per creare note con testo e immagini, integrandole
anche in altri dispositivi con iCloud.

Messaggi, client di messaggistica istantanea multi protocollo (che sostituisce iChat),
supportando il servizio iMessage per iPhone, iPad e iPod Touch utilizzando il
servizio iCloud.

Centro Notifiche, un’applicazione che consente di vedere tutte le notifiche di
calendario, Facebook, Twitter, Messaggi, Mail, ecc…

Power Nap. Il Mac resta aggiornato anche se spento (solo MacBook Pro con
display Retina e MacBook Air Early 2009 o successivi).

Un pulsante “Condividi” nella finestra di dialogo in Safari e in altre applicazioni
per condividere sui principali social network e nelle app.

Dettatura, un’applicazione che converte le parole in testo.

Launchpad, per una ricerca veloce delle app.

AirPlay Mirroring, una tecnologia che consente al computer di usare senza fili un
qualunque televisore HD connesso ad Apple TV come schermo secondario.

Finder, per una migliore gestione dei file.

Gatekeeper, un sistema di riconoscimento delle applicazioni che può bloccare le
applicazioni ritenute meno sicure (ossia quelle prive di certificati o, al massimo, non
provenienti da Mac App Store).
1
http://www.apple.com/it/osx/whats-new/features.html
6
Il Sistema Operativo OS X 10.8 Mountain Lion

Game Center, centro dove è possibile controllare ogni gioco scaricato.

Time Machine, per creare backup criptati su Time Capsule.

Nuovissime funzioni per la Cina.

iCal è stato rinominato in Calendario

Address Book è stato rinominato in Contatti
Applicazioni contenute all’interno di OS X 10.8 Mountain Lion:2
 Applicazioni
 Acquisizione Immagine
 Anteprima
 Automator
 Calcolatrice
 Calendario
 Contatti
 Dashboard
 Dizionario
 DVD Player
 FaceTime
 iTunes
 Launchpad
 Libro Font
 Mac App Store
 Mail
 Memo
 Messaggi
 Mission Control
 Note
2
http://support.apple.com/kb/SP654?viewlocale=it_IT
7
Il Sistema Operativo OS X 10.8 Mountain Lion
 Photo Booth
 Preferenze di Sistema
 Promemoria
 QuickTime Player
 Safari
 Scacchi
 TextEdit
 Time Machine
Utility

Accesso Portachiavi

AppleScript Editor

Assistente Boot Camp

Assistente Migrazione

Configurazione MIDI Audio

Console

DigitalColor Meter

Grapher

Informazioni di sistema

Istantanea

Monitoraggio Attività

RAID Utility

Scambio Documenti Bluetooth

Terminale

Utility AirPort

Utility ColorSync

Utility Disco

Utility Network

Utility VoiceOver
8
Il Sistema Operativo OS X 10.8 Mountain Lion
Mountain Lion ha subito molti cambiamenti anche nelle tecnologie del Sistema Operativo.
Una vecchia immagine che descrive l’architettura del Mac OS X è la seguente:
Figura I.1
Nei vari capitoli di questa tesi si scomporrà tale disegno e si analizzeranno tutti i
componenti singolarmente, vedendo il loro funzionamento e come sono cambiati in OS X
10.8 Mountain Lion.
9
Il Sistema Operativo OS X 10.8 Mountain Lion
Capitolo 1
Core & Application Services
Lo strato intermedio del OS X è composto da Core Services e da Application Services.
Application Services, detto anche Media Layer, include numerose tecnologie per il
rendering e l'animazione di contenuti 2D e 3D (compreso il testo) e per la riproduzione, la
registrazione e la modifica di media audiovisivi.
Core Services è un gruppo di API che forniscono i servizi essenziali per le applicazioni,
non avendo però alcuna iterazione diretta con la GUI.
1.1 Application Services
L’Application Services, o, come detto, il Media Layer, serve per per il rendering e
l'animazione di contenuti 2D e 3D (compreso il testo) e per la riproduzione, la
registrazione e la modifica di media audiovisivi.
Media Layer è composto da più componenti:

Quartz

Quicktime

OpenAL

OpenGL
10
Il Sistema Operativo OS X 10.8 Mountain Lion

Core Audio

Core Image

Core Animation

Core Text

AV Foundation
Figura 1.1
Quartz è il motore di rendering3 situato sopra Darwin.
Quartz supporta nativamente Aqua nella visualizzazione della grafica bidimensionale
utilizzata per creare l'interfaccia grafica, include il rendering in tempo reale e antialiasing
con una precisione di una frazione di pixel.
Quartz è composto da due componenti principali: Quartz 2D e Quartz Compositor .
Ossia è formato sia da un renderer 2D di grafica di base sia da un motore di composizione
che invia le istruzioni alla scheda grafica. A causa di questa sua natura “verticale”, Quartz
è spesso visto come sinonimo di Core Graphics.
3
Un motore di rendering è un componente hardware o software che interpreta delle informazioni in ingresso
codificate secondo uno specifico formato e le elabora creandone una rappresentazione grafica.
11
Il Sistema Operativo OS X 10.8 Mountain Lion
In un senso più generale, il termine Quartz fa riferimento a quasi ogni parte del modello di
grafica del rendender di Mac OS X.
In questo uso, il termine copre anche Core Image e Core Video 4, in quanto il termine
comprende una vasta gamma di tecnologie grafiche fornite da Apple5:

Quartz 2D

Quartz Extreme

QuartzGL o Quartz 2D Extreme

Quartz Compositor

Quartz Core Framework

Quartz Display Services

Quartz Event Services

Quartz Framework
Quartz 2D è la principale libreria grafica bidimensionale di testo e grafica: supporta
nativamente la GUI Aqua tramite la visualizzazione grafica bidimensionale per creare
l'interfaccia utente, includendo sia l’ “on-the-fly di rendering” sia l’ “anti-aliasing” .
È un discendente diretto del Display PostScript di NeXT.
Esso è basato sulla versione 1.4 dell'Adobe Portable Document Format (PDF)6
Quartz Compositor è il motore utilizzato da Quartz 2D e da altri frameworks7 come ad
esempio OpenGL, Core Image e QuickTime.
4
http://developer.apple.com/reference/GraphicsImaging/idxQuartz-date.html
5
http://en.wikipedia.org/wiki/Quartz_(graphics_layer)
6
Un PDF è un formato multipiattaforma nato per preservare l'impaginazione dei documenti. Quindi, indipendentemente
da quale sistema operativo o se sia a video o stampato, un file PDF mostra sempre la stessa impaginazione, con gli
stessi caratteri, stili, colori, ecc.
7
Nella produzione del software, il framework è una struttura di supporto su cui un software può essere organizzato e
progettato.
12
Il Sistema Operativo OS X 10.8 Mountain Lion
Quartz Compositor si occupa di svolgere due compiti principalmente:

Aggiornare e assemblare le finestre

Gestire gli eventi legati alle finestre
Ogni finestra nel Mac OS X è memorizzata come un'immagine bitmap con associata la
posizione (inclusa la sua profondità rispetto allo schermo), la trasparenza e le informazioni
relative all'antialiasing.
Queste informazioni vengono utilizzate dall'applicazione proprietaria della finestra per
disegnare correttamente la finestra utilizzando il sottosistema più appropriato. Una volta
che la finestra è stata generata, Quartz Compositor preleva l'immagine della finestra e
utilizzando
le
informazioni
addizionali
(posizione,
profondità,
ecc)
crea
la
rappresentazione che viene visualizzata sullo schermo. Lo schermo non viene trattato dal
gestore come una matrice di punti, ma viene trattato in modo vettoriale.
Ogni finestra o componente della GUI è definito come un oggetto e come tale viene
trattato.
L'assemblaggio delle finestre avviene come se lo schermo fosse dotato di una terza
dimensione infatti una finestra in primo piano proietta un'ombra sulla finestra sottostante.
La gestione delle finestre sotto Mac OS X è in sostanza indipendente dalla tecnologia di
disegno adottata. Questo consente di realizzare gli impressionanti effetti grafici come
l'operazione di contrazione delle finestre quando entrano nel Dock o exposé con semplicità
e efficienza.
Quartz Compositor non si occupa solo del ridisegno delle finestre, si occupa anche della
gestione degli eventi associati alle finestre. Quando l'utente preme un pulsante di una
finestra Quartz Compositor riceve l'evento e provvede a trasmetterlo al processo
responsabile della finestra. Il programma se necessario provvede a modificare l'immagine
della finestra e poi ordina a Quartz Compositor di provvedere al ridisegno della finestra.
13
Il Sistema Operativo OS X 10.8 Mountain Lion
Quartz Extreme è il processore di accelerazione grafico (GPU) di Quartz Compositor.
Quartz Compositor viene eseguito utilizzando il processore grafico (GPU), incapsulando
ogni archivio di backup visualizzata in una mappa trama OpenGL o di superficie. La GPU
compone quindi le superfici e le mappe per fornire l'immagine finale, la quale viene
consegnata al suo frame buffer.8
La tecnologia associa ad ogni finestra una texture. Tutte le schede grafiche con
accelerazione tridimensionale integrano al loro interno dei processori dedicati
all'elaborazione delle texture. Quindi Quartz Extreme invece di svolgere le operazioni di
movimento, ridimensionamento, ecc le demanda alla scheda grafica programmando
opportunamente il processore grafico. Da test svolti a parità di computer si ottiene un
raddoppio delle prestazioni nella gestione delle finestre utilizzando questa tecnologia.
QuartzGL, rinominato Quartz 2D Extreme in Mac OS X 10.4 Tiger, è l'accelerazione
GPU per l'API di Quartz 2D.
QuickTime è un framework multimediale estensibile che consente di gestire vari formati
di video, immagine, suono, immagini digitali.
Da Mac OS X 10.6 Snow Leopard9 è disponibile una versione più recente, QuickTime X.
QuickTime X (pronuncia QuickTime Ten10) comprende la visualizzazione, la
conversione, la condivisione su YouTube, il video editing, la cattura di flussi video e
audio, la registrazione dello schermo, la diretta streaming e molte altre funzionalità.11
8
http://developer.apple.com/graphicsimaging/overview.html
9
http://www.tuaw.com/2009/06/08/quicktime-x-leaps-forward-in-snow-leopard/
10
http://www.roughlydrafted.com/2008/06/12/wwdc-2008-new-in-mac-os-x-snow-leopard/
11
http://www.apple.com/macosx/refinements/enhancements-refinements.html#quicktime
14
Il Sistema Operativo OS X 10.8 Mountain Lion
Inoltre, ha un registratore dello schermo per registrare ciò che è sul desktop.
Tuttavia, per evitare la possibilità di contrabbando, l'utente non ha i permessi per registrare
file riprodotti da DVD o anche contenuti acquistati da iTunes.
Lo sviluppo di QuickTime fa un salto dalla versione 7 alla versione X (10).
Tale salto sta ad indicare una sorta di “rottura” dalle versione precedenti, e a sottolineare
che il prodotto è totalmente innovativo.
QuickTime X è totalmente diverso dalle versioni precedenti, a partire dal fatto che adesso
è disponibile come un framework Cocoa, sviluppato in Objective-C, e non ha più
compatibilità con il set di API in C utilizzati da QuickTime 7.
QuickTime X è stato completamente riscritto per l'attuazione moderni codec audio video a
64-bit.
Esso è la combinazione di due tecnologie: QuickTime Kit Framework (QTKit) e
QuickTime X Player.
QTKit12 è usato da QuickTime Player per la visualizzazione dei file multimediali.
QuickTime X non implementa tutte le funzionalità del precedente QuickTime così come
alcuni dei codec.
Quando QuickTime X tenta di operare con un codec a 32 bit o di eseguire un'operazione
non supportata da QuickTime X, inizia un processo di supporto a 32 bit per eseguire
l'operazione richiesta.
Il sito Ars Technica ha rivelato che QuickTime X utilizza QuickTime 7.x via QTKit per
eseguire vecchi codec che non hanno fatto il passaggio a 64 bit.13
12
QTKit Framework https://developer.apple.com/quicktime/index.html
13
http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/6
15
Il Sistema Operativo OS X 10.8 Mountain Lion
Quando si seleziona uno standard impostazioni di esportazione HD, QuickTime Player
sfrutta la codifica hardware dei video per prestazioni ottimali.
QuickTime Player comprende il tasto Condividi per Messages, AirDrop e Mail.14
Core Audio è un basso livello di API per la gestione del suono.
Esso comprende una implementazione del cross-platform nella library OpenAL.15
Nella documentazione Apple di Core Audio è scritto: "Durante la creazione della nuova
architettura del Mac OS X, Apple decise di puntare a due obiettivi della gestione
dell'audio. Il primo obbiettivo era una alta qualità dell'audio, la miglior resa audio mai
provata dagli utenti Macintosh. Il secondo obiettivo era consentire agli sviluppatori di
integrare la loro gestione dell'audio con la gestione MIDI."16
Core Audio separa totalmente la riproduzione dell'audio dalla sua gestione, consentendo al
programmatore di gestire i flussi audio con il numero di campioni e la risoluzione che
ritiene più appropriata, sarà poi compito del sottosistema audio adattare il flusso audio alle
reali capacità dell'hardware. Core Audio permette di gestire i flussi audio in modo da
consentire a un programma di accettare in ingresso l'audio generato da un altro
programma. Il programma potrà a sua volta elaborare l'audio e poi inviare il flusso audio
verso un terzo programma per ulteriori elaborazioni. Tutto questo viene eseguito in tempo
reale e quindi consente agli utenti di utilizzare più programmi contemporaneamente per la
realizzazione delle proprie musiche.
14
QuickTime X in OS X 10.8 http://www.apple.com/osx/whats-new/features.html#quicktime
15
http://developer.apple.com/documentation/MusicAudio/Conceptual/CoreAudioOverview/WhatsinCoreAudio/chapter_
3_section_9.html
16
http://developer.apple.com/audio/coreaudio.html
16
Il Sistema Operativo OS X 10.8 Mountain Lion
Audio Unit (AU) è un plug-in di sistema fornito nell’architettura di Core.17
E’ un insieme di interfacce di programmazione di servizi applicativi forniti dal sistema
operativo per generare, elaborare, ricevere, o in altro modo manipolare flussi di audio in
near-real-time con latenza minima.
Code Audio fornisce delle API che vengono utilizzate dagli Audio Units per ricevere i
flussi audio che vengono ricevuti, elaborati e trasmessi.
Mac OS X utilizzando gli Audio Units è in grado di modificare la scala temporale del
flusso audio, può convertirlo in uno stream da inviare via rete locale per esempio o può
elaborarlo localmente con una serie di filtri che possono equalizzare il suono, applicare
effetti come il riverbero, il ritardo o inserire strumenti audio sintetizzati.
Gli AU sono utilizzati da programmi Apple come GarageBand, Soundtrack, Logic
Express, Logic Pro e Final Cut Pro oltre che da molti programmi di terze parti.18
Core Image è una tecnologia che viene utilizzata dal sotto sistema grafico Quartz
Extreme.19
Questa tecnologia consente di utilizzare la scheda grafica per l'elaborazione di effetti
grafici sgravando il processore dall'elaborazione degli stessi.20
Nel caso in cui il computer non sia dotato di una scheda grafica con processore grafico
compatibile o moderno, Core Image utilizzerà l'unità AltiVec del processore per eseguire
le elaborazioni grafiche. In caso di sistemi SMP Core Image è in grado di suddividere il
carico di lavoro tra i vari processori.
17
http://developer.apple.com/documentation/MusicAudio/Conceptual/AudioUnitProgrammingGuide/
18
http://developer.apple.com/documentation/MusicAudio/Reference/CoreAudio/audio_units/chapter_5_section_1.html
19
http://developer.apple.com/macosx/coreimage.html
20
http://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_concepts/ci_con
cepts.html#//apple_ref/doc/uid/TP30001185-CH202-BCIHDIEG
17
Il Sistema Operativo OS X 10.8 Mountain Lion
Core Video funziona in congiunzione con Core Image ed è ottimizzato per utilizzare il
codec H.264.
Come Core Image, consente di eseguire delle trasformazioni e delle manipolazioni
grafiche, ma invece di agire sulle immagini agisce sulle animazioni in tempo reale.
Al fine di garantire una riproduzione fluida, Core Video utilizza un thread a priorità alta
per mantenere il suo frame buffer. Questo il link di visualizzazione funziona in modo
indipendente dall'applicazione che invoca la riproduzione video, e compensa le aliquote
diverse di visualizzazione di aggiornamento e la latenza.21
Queste tecnologie dipendono molto dalle prestazioni della scheda grafica e possono
sgravare molto il carico del processore dato che vengono utilizzate dalla tecnologia Quartz
e di conseguenza tutta l'interfaccia grafica si avvantaggerà delle tecnologie Core Image e
Core Video.
Insieme alla tecnologia Core Audio formano il nucleo del Mac OS X dedicato alla
gestione dei flussi multimediali.
Sia QuickTime X che QuickTime 7 dipendono da Core Video.22
Pixlet è un codec video che utilizza la compressione “wavelet”23 ed è nato per consentire
la visualizzazione di animazioni di alta qualità a schermo intero in tempo reale con un
flusso di dati ridotto.
Esso non è stato sviluppato per la trasmissione video ma per l'elaborazione negli studi di
registrazione.
21
http://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/C
VProg_Concepts.html#//apple_ref/doc/uid/TP40001536-CH202-BABJDFHJ
22
http://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Intro/CVProg
_Intro.html
23
Una wavelet è la rappresentazione di un segnale mediante l'uso di una forma d'onda oscillante di lunghezza finita o a
decadimento rapido (nota come wavelet madre). Questa forma d'onda è scalata e traslata per adattarsi al segnale in
ingresso.
18
Il Sistema Operativo OS X 10.8 Mountain Lion
Questo codec punta a mantenere la massima qualità e non ad ottenere la massima
compressione. Normalmente consente un rapporto di compressione di 20-25:1.24
Core Animation è un’API per la visualizzazione dei dati.
Essa può creare un'animazione per qualunque oggetto che sia visibile, e fornisce un
accesso unificato a Core Image, Core Video e altre tecnologie Quartz.
Come altri modelli grafici, Core Animation può sfruttare l'accelerazione con un processore
grafico (GPU).25
Le animazioni vengono eseguite in un thread indipendente dal programma, consentendo
così l'esecuzione di processi simultanea a Core Animation. In questo modo le performance
dell'applicazione non vengono diminuite, ed è possibile controllare, interrompere, invertire
e ricostruire le animazioni stesse. Questo metodo era già disponibile in precedenti versioni
di Mac OS X, ma le loro API non erano pubbliche, costringendo così gli sviluppatori di
terze parti a tentare l'imitazione (a volte riuscita, altre no) delle belle animazioni Apple.26
Uno degli esempi più evidenti di Core Animation, è iChat, l'istant messenger di Apple.
Le animazioni vengono utilizzate per effettivamente "buttare dentro" gli amici che hanno
effettuato l'accesso nella tua lista contatti.
OpenAL (Open Library Audio) è un’API per la piattaforma audio.
È stata progettata per il rendering efficiente di audio posizionale a tre dimensioni.. Il suo
stile e le convenzioni API deliberatamente assomigliano a quelle di OpenGL.
24
http://en.wikipedia.org/wiki/Pixlet
25
http://www.apple.com/it/macosx/technology/coreanimation.html
26
http://developer.apple.com/graphicsimaging/coreanimation/
19
Il Sistema Operativo OS X 10.8 Mountain Lion
OpenGL (Open Graphics Library) è una specifica che definisce un’API per più linguaggi
e per più piattaforme per scrivere applicazioni che producono computer grafica 2D e 3D.
L'interfaccia consiste in circa 250 diverse chiamate di funzione che si possono usare per
disegnare complesse scene tridimensionali a partire da semplici primitive.
Il framework AV Foundation fornisce servizi per l'acquisizione, la riproduzione, il
controllo, la modifica e la ricodifica dei media audiovisivi basati sul tempo.
Il framework include molte classi Objective-C, con la classe di base AVAsset; questa
classe presenta un modello uniforme e un’interfaccia di controllo per tutte le forme e i font
dei media audio-visivi.
I servizi offerti da questo quadro sono i seguenti:27

Film o di acquisizione audio

Film o riproduzione audio, compresa la sincronizzazione precisa e audio
panning

Media editing e gestione pista

Supporto delle attività e la gestione dei metadati

File di controllo audio (ad esempio, il formato dei dati, frequenza di
campionamento e il numero di canali)
Per la maggior parte delle registazioni audio e la loro riproduzione, è possibile utilizzare il
AVAudioPlayer e le classi AVAudioRecorder.
AV Foundation è il framework raccomandato per tutti i nuovi sviluppi che coinvolgono i
media audiovisivi basati sul tempo ed è anche raccomandato per la transizione da
applicazioni esistenti basate su QuickTime o QTKit.28
27
http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/MediaLa
yer/MediaLayer.html#//apple_ref/doc/uid/TP40001067-CH273-SW1
28
http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/MediaLa
yer/MediaLayer.html#//apple_ref/doc/uid/TP40001067-CH273-SW1
20
Il Sistema Operativo OS X 10.8 Mountain Lion
1.2 Core Services
Core Services è un gruppo di API che forniscono i servizi essenziali per le applicazioni,
non avendo però alcuna iterazione diretta con la GUI.
Figura 1.2
Core Services è composto da più componenti, tra cui:

Address Book

Quick Look

Social

Security

Webkit

Core Data

Core Foundation

Foundation
21
Il Sistema Operativo OS X 10.8 Mountain Lion
Address Book, o Contatti in italiano, è un programma nato per gestire i contatti
dell'utente.
Esso comprende varie funzionalità di sincronizzazione e si integra con le altre applicazioni
e funzionalità di OS X.29
Quick Look consente ad applicazioni come Spotlight e Finder di visualizzare le immagini
in miniatura e l’anteprima dei documenti.
Se il formato dei documenti è diverso dai tipi supportati., è necessario fornire Quick Look
di un generatore 30per questi formati.
Social è un framework introdotto in OS X v10.8, e consente di integrare servizi dei social
network supportate, fornendo un modello per la creazione di richieste HTTP e
un'interfaccia generalizzata per la pubblicazione di richieste da parte dell'utente. È inoltre
possibile utilizzare il framework Social per recuperare le informazioni per l'integrazione
degli account dei social network in “app” esterne.31
Security è il framework sulla sicurezza che implementa uno strato di servizi di alto livello
per semplificare le soluzioni sulla sicurezza.
Questi servizi di alto livello forniscono una conveniente astrazione e rendono possibile sia
alla Apple sia a terze parti di implementare nuove caratteristiche di sicurezza senza dover
modificare le linee di codice.
La sicurezza in OS X si basa su diverse tecnologie, tra cui BSD e Kerberos, ed aggiunge le
proprie caratteristiche a tali tecnologie.32
29
http://developer.apple.com/library/mac/documentation/UserExperience/Reference/AddressBook/ObjC_classic/_index.
html#//apple_ref/doc/uid/20001692
30
I Generatori sono plug-in che convertono i documenti dal loro formato nativo in un formato Quick Look in modo da
poter essere visualizzato come miniatura o anteprima.
31
http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/CoreServ
icesLayer/CoreServicesLayer.html#//apple_ref/doc/uid/TP40001067-CH270-TPXREF130
32
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/Security_Overview/Introduction/Introdu
ction.html#//apple_ref/doc/uid/TP30000976
22
Il Sistema Operativo OS X 10.8 Mountain Lion
OS X fornisce interfacce di alto livello per le seguenti caratteristiche:

Autenticazione Utente

Certificato, Key e Trust Services

Servizi di autorizzazione

Secure Transport

Servizi Keychain
Security Transforms è una tecnologia che è stata introdotta in OS X v10.7 dopo il grave
errore che fu commesso33, e fornisce un contesto universale per tutti i lavori di crittografia.
Un'unità di crittografia a trasformazioni di sicurezza, noto anche come una
trasformazione, può essere utilizzato per eseguire attività quali la crittografia,
decrittografia, firma, la verifica, la digestione e la codifica. È inoltre possibile creare
trasformazioni personalizzate. Trasformazioni si basano su GCD per definire un modello
di flusso di dati per l'elaborazione dei dati che consente un throughput elevato su macchine
multicore.34
WebKit è un framework per applicazioni ed è il motore di Safari e di altre applicazioni
come Google Chrome.
Esso permette agli sviluppatori di terze parti di includere con facilità nelle loro
applicazioni molte delle funzioni proprie di Safari.
33
http://news.swzone.it/news/32283_Grave_bug_di_sicurezza_in_OS_X_Lion_10.7.3.html
http://software.tuttogratis.it/news/mac-os-x-lion-bug-di-sicurezza-consente-di-cambiare-la-passwordutente/P102093/
http://www.hwfiles.it/news/una-falla-in-mac-os-x-107-lion-permette-di-cambiare-la-password-dellutente_38584.html
34
http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/CoreServ
icesLayer/CoreServicesLayer.html#//apple_ref/doc/uid/TP40001067-CH270-TPXREF130
23
Il Sistema Operativo OS X 10.8 Mountain Lion
WebKit è un progetto open source che nasce dalla combinazione di componenti del
sistema grafico KDE e di tecnologie Apple.
L'API in Objective C di WebKit può interagire con un server web, richiamare e
visualizzare le pagine web, scaricare i file e gestire i plugin.
WebKit include due framework di basso livello: WebCore, un parser HTML e un renderer
basato su KHTML, e JavaScriptCore, un motore JavaScript basato su KJS.
Core Data sono delle API Cocoa.
Lo scopo di Core Data è permettere lo sviluppo di applicazioni che trattano i dati secondo
una organizzazione Model-View-Controller senza doversi occupare di tutti gli aspetti
implementativi derivati da questa scelta progettuale.
Questi dati possono essere serializzati e salvati come XML, binario e SQLite.
I dati vengono manipolati utilizzando degli oggetti ad alto livello che rappresentano le
relazioni e gli attributi. Il framework gestisce la serializzazione, gestisce il ciclo di vita dei
singoli oggetti garantendone la persistenza.35
Core Data si può interfacciare direttamente con SQLite slegando il programmatore dalla
gestione a basso livello del database e dell'SQL.
Internamente si appoggia per la gestione degli oggetti al modello entità relazione. Core
Data si occupa della gestione su disco, della gestione dei cambiamenti, della
minimizzazione della memoria occupata e delle query su disco.
Il framework è molto utile per gestire strutture dati complesse, dove una buona
organizzazione delle informazioni è essenziale.
Core Data offre un sistema radicalmente diverso di gestire i dati: invece di mantenere un
puntatore ad ogni oggetto a cui si è interessati, si esegue una query al database per ottenere
tutti gli oggetti di una determinata classe, e si opera su di essi.
35
http://developer.apple.com/macosx/coredata.html
24
Il Sistema Operativo OS X 10.8 Mountain Lion
Inoltre fornisce anche i metodi accessori per modificare le variabili d'istanza di un'entità
attraverso il Key Value Coding, cioè basandosi sul nome della variabile.
I Framework Foundation e Core Foundation sono essenziali per la maggior parte dei
software sviluppati per OS X. Gli obiettivi di base per entrambi i framework sono gli
stessi:

Definire il comportamento di base per gli oggetti e introdurre convenzioni
coerenti per la mutabilità dell’oggetto, oggetto per l’archiviazione, le
notifiche, e comportamenti simili.

Definire i tipi di oggetti di base che rappresentano stringhe, numeri, date,
dati, collezioni, e così via.

Sostenere l'internazionalizzazione con la tecnologia Bundle e per le
stringhe Unicode.

Sostenere la persistenza degli oggetti.

Fornire classi di utilità per gli enti di accesso, l’astrazione del sistema e i
servizi ai livelli più bassi del sistema, compresi le prote, i threads, i
processi, i cicli di esecuzione, i file system e le pipes.
La differenza tra Fondazione e Core Foundation è il linguaggio di programmazione con
cui vengono sviluppati ed utilizzati.
Foundation è un framework Objective-C ed è destinato ad essere utilizzato con tutti gli
altri framework Objective-C che dichiarano i metodi che assumono tipi di classe
Foundation come parametri o valori di ritorno che sono tipi di classe della Foundation.
Insieme al AppKit e Core Data framework, Foundation è considerato un framework
fondamentale per lo sviluppo delle applicazioni.
25
Il Sistema Operativo OS X 10.8 Mountain Lion
Core Foundation36 (CF), invece, implementa interfacce di programmazione C-based, ed è
destinato ad essere utilizzato con altri framework C-base, come Core Graphics.
Anche se è possibile utilizzare gli oggetti di base della Fondazione e chiamare le funzioni
di base della Fondazione in progetti Objective-C, raramente vi è una ragione seria per
farlo.
Nella sua implementazione, Foundation si basa su Core Foundation.
Ma anche se è implementato in C, la progettazione dell’interfacce di Core Foundation è
più simile all’implementazione Objects-C.
Foundation and Core Foundation forniscono tipi di dati fondamentali e le funzioni per la
gestione dei dati, tra cui i seguenti:

Collezioni

Pacchetti e plug-in

Stringhe

Grezzi blocchi di dati

Date e orari

Preferenze

Streams

URL

Dati XML

Locale informazioni

Esegui loop

Porte e prese
36
http://developer.apple.com/library/mac/#releasenotes/CoreFoundation/CoreFoundation.html#//apple_ref/doc/uid/TP40
000994
26
Il Sistema Operativo OS X 10.8 Mountain Lion
A partire da OS X v10.8, il framework Foundation offre le seguenti caratteristiche e
miglioramenti:

Centro Notifica che interagisce con il nuovo “NSUserNotification” 37 nuove
classi NSUserNotificationCenter.

La possibilità di verificare se un utente è connesso in iCloud attraverso i
miglioramenti della classe “NSFileManager”38.

La creazione di stringhe UUID (Universally Unique Identifier) con la
nuova classe “NSUUID”39.

Esecuzione di script forniti dall'utente (al di fuori dell’applicazione
sandbox) con la nuova classe “NSUserScriptTask”40.

La semplificazione della comunicazione interprocesso (IPC) tra le
applicazioni, i servizi XPC, i daemon, e gli agenti con la classe
“NSXPCConnection”41.

L’avanzata localizzazione per la formattazione dei numeri con i
miglioramenti alla classe “NSString”42.

Supporto per l’azzeramento dei riferimenti deboli con miglioramenti alle
classi “NSMapTable”43, “NSHashTable”44 e “NSPointerArray”45.
37
http://developer.apple.com/library/mac/documentation/Foundation/Reference/NSUserNotification_Class/Reference/R
eference.html#//apple_ref/occ/cl/NSUserNotification
38
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/R
eference/Reference.html#//apple_ref/occ/cl/NSFileManager
39
http://developer.apple.com/library/mac/documentation/Foundation/Reference/NSUUID_Class/Reference/Reference.ht
ml#//apple_ref/occ/cl/NSUUID
40
http://developer.apple.com/library/mac/documentation/Foundation/Reference/NSUserScriptTask_Class/Reference/Ref
erence.html#//apple_ref/occ/cl/NSUserScriptTask
41
http://developer.apple.com/library/mac/documentation/Foundation/Reference/NSXPCConnection_reference/translated
_content/NSXPCConnection.html#//apple_ref/occ/cl/NSXPCConnection
42
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Referen
ce/NSString.html#//apple_ref/occ/cl/NSString
43
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSMapTable_class/Reference/NSMapTable.
html#//apple_ref/occ/cl/NSMapTable
27
Il Sistema Operativo OS X 10.8 Mountain Lion
Core Text è un’API di stile contenuto in Core Foundation.
Esso sostituisce le capacità di rendering di testo di QuickDraw e il framework ATSUI.46
Secondo Apple, Core Text è "progettata per elevate prestazioni e facilità d'uso" e la sua
API layout è "semplice, coerente e strettamente integrato con Core Foundation, Core
Graphics, e Cocoa".47
Quelli elencati sono solo alcuni dei tantissimi nuovi frameworks introdotti in Core
Services.48
44
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSHashTable_class/Introduction/Introductio
n.html#//apple_ref/occ/cl/NSHashTable
45
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPointerArray_Class/I
ntroduction/Introduction.html#//apple_ref/occ/cl/NSPointerArray
46
http://en.wikipedia.org/wiki/Core_Text
47
http://developer.apple.com/mac/library/documentation/StringsTextFonts/Conceptual/CoreText_Programming/Introdu
ction/Introduction.html
48
Per ulteriori informazioni:
http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/CoreServic
esLayer/CoreServicesLayer.html#//apple_ref/doc/uid/TP40001067-CH270-SW4
28
Il Sistema Operativo OS X 10.8 Mountain Lion
Capitolo 2
API & GUI
Il primo strato del Sistema Operativo comprende la GUI e l’API.
La GUI (Graphical User Interface) è un tipo di Interfaccia Utente che consente all’utente
di interagire col Sistema Operativo attraverso oggetti grafici.
L’API (Application Programming Interface) è un protocollo che consente al
programmatore di interagire con un’interfaccia grafica, semplificando così le operazioni di
scrittura e riuso del codice.
2.1 Application Programming Interface
Col termine API si intendono principalmente le librerie software disponibili di un certo
linguaggio di programmazione. Lo scopo è quello di ottenere un'astrazione, sia tra
l'hardware e il programmatore sia tra i vari livelli del Sistema Operativo.
Una buona API fornisce un livello di astrazione che evita al programmatore di sapere
come funzionano le API che si trovano ad un livello più basso, ciò avviene per la tecnica
di “riuso del codice”: il programmatore non deve riscrivere ogni volta alcune funzioni, ma
può richiamarle tramite le librerie.
29
Il Sistema Operativo OS X 10.8 Mountain Lion
Si ottiene così che il lavoro di programmazione viene ampiamente semplificato e permette
al programmatore di riprogettare o migliorare le funzioni all'interno dell'API senza
cambiare il codice che si affida ad essa.
Esistono vari tipi di API, tra cui49:
•
L'interfaccia di chiamate al BIOS del PC
•
L'API Java 2 Enterprise Edition Java EE
•
Le API Carbon e Cocoa per il Macintosh OS
•
API e Web Services, il caso Istat
• Java APIs for Integraed Networks (JAIN)
Poiché esistono molte varianti di API, nel 1985 è stato creato un progetto finalizzato alla
creazione di uno standard. La famiglia che racchiude questi standard prende il nome di
POSIX, acronimo di Portable Operating System Interface for Unix, il cui nome è stato
ideato da Richard Stallman dopo la richiesta da parte dell'IEEE di un nome di facile
memorizzazione.
Col termine POSIX si intendono quegli standard definiti dall’IEEE denominati
formalmente IEEE 1003, il cui nome nello standard internazionale è ISO/IEC 994550.
Il compito dello standard POSIX è quello di definire alcuni concetti base che vanno seguiti
durante la realizzazione del Sistema Operativo. Questo insieme di regole è racchiuso in 15
documenti.
Siccome l'IEEE richiedeva dei costi elevati per fornire la documentazione POSIX e non ne
permetteva la pubblicazione on-line, è emerso uno standard aperto, chiamato "Single
UNIX Specification", gestito da The Open Group.
49
http://it.wikipedia.org/wiki/Application_programming_interface#Esempi_di_API
50
http://it.wikipedia.org/wiki/Posix
30
Il Sistema Operativo OS X 10.8 Mountain Lion
In MAC OS X, il livello che racchiude le API comprende molti sottolivelli51:
• BSD
•
Carbon
• Classic
• Cocoa
•
Java APIs
Le API comunicano con il Kernel Mac attraverso lo standard POSIX situato nel BSD.
Carbon52 era uno dei 5 ambienti di programmazione messi a disposizione da Mac
Il suo compito principale era quello di rendere compatibili programmi scritti per versioni
antecedenti di Mac OS X con le nuove versioni attraverso piccole modifiche.
Le API erano formate da header file per il linguaggio C e da librerie dinamiche che
implementavano le funzioni. Le implementazioni delle librerie erano differenti a seconda
dei sistemi operativi, ma questo non creava problemi all'eseguibile, dato che per esso il
comportamento è identico.
In OS X 10.8 Mountain Lion Carbon è stato abbandonato, e le sue librerie sono state
spostate in Cocoa.
Un altro dei 5 ambienti di programmazione era Classic.
Classic aveva compito di emulare all’interno del Sistema Operativo Mac OS X la sua
versione antecedente Mac OS 9, in modo da consentire alla vecchie applicazioni che non
utilizzavano le librerie Carbon, di continuare a funzionare.
Il sistema Classic è stato ufficialmente eliminato con la versione Mac OS X 10.5 Leopard,
inoltre non è mai stato disponibile per computer dotati di processori Intel.
51
52
Vedi Figura I.1, pag 9
https://developer.apple.com/library/mac/navigation/index.html?filter=carbon
31
Il Sistema Operativo OS X 10.8 Mountain Lion
Per quanto riguarda la Macchina Virtuale Java o JVM (Java Virtual Machine), le API
Java53 raccolgono una gran quantità di componenti disponibili per scrivere applicazioni di
qualsiasi genere.
Per questo motivo la piattaforma Java è disponibile in tre configurazioni a seconda
dell'uso che se ne vuole fare:
•
Standard Edition. Fornisce API per le esigenze più comuni, che permette di scrivere
applicazioni stand-alone, applicazioni client e server in un contesto di reti di computer,
applicazioni per accesso a database, applicazioni per il calcolo scientifico e di altro tipo.
• Enterprise Edition. Permette di scrivere applicazioni distribuite.
•
Micro Edition. Permette di scrivere applicazioni per i terminali mobili e, più in
generale, per i dispositivi dotati di poche risorse computazionali (telefoni cellulari,
palmari, smart cards, ed altri).
La JVM è contenuta nel Java SE Runtime Environment, il quale contiene anche le librerie
standard (API Java) e un launcher per le applicazioni Java, che prende il nome di JDK
(Java Development Kit).
Il JDK costituisce un vero e proprio ambiente di sviluppo software e contiene tool di
sviluppo (compilatori e/o debugger). Esso è fornito insieme al JRE (Java Runtime
Environment), che è invece l’ambiente di esecuzione per programmi scritti in linguaggio
Java.
Nella versione di OS X 10.8 Mountain Lion anche la JVM e tutti i suoi componenti sono
nativamente rimossi dal Sistema Operativo.54
E’ tuttavia possibile aggiungerli in un secondo momento, a seconda delle necessità.
53
http://it.wikipedia.org/wiki/Piattaforma_Java#Le_API_Java
54
http://developer.apple.com/library/mac/#technotes/tn2002/tn2110.html#//apple_ref/doc/uid/DTS10003202
32
Il Sistema Operativo OS X 10.8 Mountain Lion
L’ultimo ambiente rimasto da esaminare è Cocoa55.
Da quanto già lasciato intendere prima, sia Carbon che Classic sono stati abbandonati a
vantaggio di Cocoa.
Cocoa è l'ambiente di programmazione orientato agli oggetti per il sistema operativo Mac
OS X. Supporta vari tipi di linguaggi di programmazione: l'Objective C, l'AppleScript, il
C++, l'Objective C++, Java, il Perl, il Python e Ruby.
L’ambiente di sviluppo per i primi linguaggi è Xcode (ex Project Builder). Per il Perl e il
Python, che sono linguaggi minori, è presente il bridge PyObjC e Ruby è utilizzabile
tramite RubyCocoa.
Per gli utenti finali le applicazioni Cocoa sono facilmente riconoscibili dovendo aderire
alle linee guida stabilite dall'Apple. L'ambiente Cocoa include molti servizi, ed essendo
Cocoa un ambiente orientato agli oggetti, questi servizi vengono ereditati dalle
applicazioni che si appoggiano a Cocoa.
Il design di Cocoa è stato sempre considerato uno dei suoi punti di forza, fino al punto che
le soluzioni architetturali che ha adottato hanno ispirato molti Design Patterns
formalizzati.
Un’altra delle parti di Cocoa è Cocoa Touch, ossia quella parte che
include il
riconoscimento dei gesti, l'animazione e una diversa libreria interfaccia-utente, ma è
sviluppata sul sistema operativo iOS e sui dispositivi che lo supportano come l' iPhone,
l'iPod Touch e l' iPad .
Cocoa continua la stirpe di framework diversi (in primo luogo la App Kit e Foundation
Kit) da NeXTSTEP e OpenStep, che sono ambienti di programmazione sviluppati da
NeXT negli anni 1980 e 1990. La Apple acquisì la NeXT nel dicembre 1996, e cominciò
a lavorare sul Sistema Operativo Rhapsody che avrebbe dovuto essere il diretto
successore di OpenStep.
55
http://developer.apple.com/library/mac/navigation/#section=Frameworks&topic=Cocoa%20Layer
33
Il Sistema Operativo OS X 10.8 Mountain Lion
OpenStep è un’API orientata agli oggetti, OPENSTEP (tutto in maiuscolo) è una
specifica implementazione di l'API OpenStep sviluppato da NeXT.
Le librerie software fornite con OPENSTEP sono un superset delle specifiche di OpenStep
originale. La base di librerie di OpenStep prese il nome di Yellow Box . Rhapsody evolse
in Mac OS X, e la Yellow Box divenne Cocoa. Di conseguenza, le classi di Cocoa che
iniziano con la sigla "NS" sono le dirette discentendi di OpenStep.
Una caratteristica peculiare dell'ambiente Cocoa è la sua possibilità di gestione della
memoria allocata dinamicamente. La classe NSObject, da cui derivano la maggior parte
delle classi di Cocoa, implementa uno schema di reference counting per la gestione della
memoria.
Col termine reference counting si intende una tecnica di memorizzazione di numero di
riferimenti o puntatori ad un dato oggetto sia nella memoria virtuale che fisica. Ad essa è
associata anche la tecnica del garbage collection che è un algoritmo che utilizza questa
tecnica di memorizazione per deallocare oggetti che non sono più referenziati.
Nel 2011, il compilatore LLVM (Low Level Virtual Machine) introduce ARC (Automatic
Reference Counting), che sostituisce il convenzionale garbage collector effettuando
un’analisi statica in Objective-C di codice sorgente e l'inserimento nel trattenere e
rilasciare i messaggi, se necessario.
Cocoa è composto da tre librerie di oggetti Objective-C chiamate frameworks56 .
I Frameworks sono molto simili a librerie condivise, un oggetto compilato può essere
caricato dinamicamente nello spazio di indirizzi di un programma in fase di esecuzione,
ma i frameworks aggiungono le risorse associate, i file di intestazione e la
documentazione.
56
http://en.wikipedia.org/wiki/Cocoa_(API)#Main_frameworks
34
Il Sistema Operativo OS X 10.8 Mountain Lion
I frameworks di Cocoa sono implementati come un tipo di pacchetto di applicazione, il
quale contiene gli elementi in posizioni standard, ad esempio:
•
Foundation Kit , o più comunemente soltanto Foundation, il quale compare la prima
volta in OpenStep. In Mac OS X, si basa sul Core Foundation. Esso è una generica
libreria orientata agli oggetti che fornisce le stringhe e i valori di manipolazione,
containers and iteration, il calcolo distribuito,i run loop, e altre funzioni che non sono
direttamente legate alla GUI. Usano il prefiso “NS” ereditato da NeXT.57
•
Application Kit or AppKit è uno dei framework Cocoa principali, discende
direttamente dal kit originale di applicazioni di NeXTSTEP. Fornisce funzionalità e le API
associate per le applicazioni, inclusi gli oggetti per le GUI, meccanismi di gestione degli
eventi, servizi applicativi, e disegno e strutture di composizione delle immagini. AppKit è
costruito sulla base di Foundation, e utilizza lo stesso prefisso “NS”.58
•
Core Data è il framework di persistenza dell'oggetto incluso in Foundation e Cocoa e
si trova nella libreria Cocoa.h.
Una parte fondamentale dell'architettura di Cocoa è il modello MVC (Model-ViewController)59. Questo è organizzato secondo linee convenzionali di un framework
applicativo, ma si basa anche sul PDF modello di disegno fornito da Quartz.
Questo permette la creazione del contenuto del disegno personalizzato utilizzando
PostScript, come i comandi di disegno, e permette anche il supporto automatico della
stampante e così via.
Dal momento che il framework Cocoa gestisce tutto il ritaglio, lo scorrimento, il
ridimensionamento e altre funzioni relative al disegno grafico, il programmatore è libero
dall’implementazione delle infrastrutture di base e può concentrarsi solo sull’aspetto dei
contenuti di un'applicazione.
57
Vedi Capitolo 1, pag 24
Per chi volesse approfondire:
http://developer.apple.com/library/mac/#releasenotes/Cocoa/AppKit.html#//apple_ref/doc/uid/TP30000741
58
59
http://en.wikipedia.org/wiki/Cocoa_(API)#Model-view-controller
35
Il Sistema Operativo OS X 10.8 Mountain Lion
Come già accennato, Cocoa usa la fisosofia progettuale del MVC.
MVC è composto da tre parti interagenti tra di loro:
•
Model rappresentano dati grezzi, ad esempio documenti, impostazioni, file od oggetti
in memoria.
• View sono rappresentazioni visive dei dati nel modello.
•
Controller contiene la logica che collega i modelli per le loro view, e controlla lo stato
per mantenerli sincronizzati.
Il design di Cocoa è una rigorosa applicazione dei principi MVC.
In OpenStep, la maggior parte delle classi che erano di alto livello erano classi View
(contenute in AppKit) oppure erano una serie di classi di livello relativamente basso di
Model note come NSString.
Rispetto ad analoghi sistemi di MVC, OpenStep mancava un forte divisione interna.
Durante la transizione a Cocoa, il livello di Model è stato ampliato enormemente,
introducendo una serie di classi per fornire funzionalità comuni alle applicazioni desktop.
Ha subito varie modifiche ed amplificazioni, fino a giungere alla versione OS X 10.8.
In Mac OS X 10.3, Apple ha introdotto la famiglia di classi NSController, che prevedono
il comportamento predefinito per il livello di Controller.
In Mac OS X 10.4, Apple ha esteso questa fondazione ulteriormente introducendo il
framework Core Data, che standardizza il rilevamento delle modifiche e la persistenza nel
livello di modello.
Grazie al supporto quadro di riferimento per tutti i tre strati MVC, l'obiettivo di Apple è
quello di ridurre la quantità di boilerplate o codice "collante" che gli sviluppatori devono
scrivere, liberando risorse per passare il tempo su applicazioni specifiche caratteristiche.
36
Il Sistema Operativo OS X 10.8 Mountain Lion
Di seguito si elenca nvece una lista di differenze principali tra la versione Mac OS X 10.7
Lion e OS X 10.860:

Accelerate

Accounts (Aggiunta)

AddressBook

AGL

AppKit

AppleShareClientCore

ApplicationServices

AudioToolbox

AudioUnit

AudioVideoBridging (Aggiunta)

AVFoundation

CalendarStore

Carbon

CFNetwork (Aggiunta)

CoreAudio

CoreData

CoreFoundation

CoreGraphics (Aggiunta)

CoreLocation

CoreMedia

CoreMediaIO

CoreServices

CoreText (Aggiunta)

CoreVideo

DiskArbitration
60
http://developer.apple.com/library/mac/#releasenotes/General/APIDiffsMacOSX10_8/index.html#//apple_ref/doc/uid/
TP40011748
37
Il Sistema Operativo OS X 10.8 Mountain Lion

EventKit (Aggiunta)

Foundation

GameKit (Aggiunta)

GLKit (Aggiunta)

GLUT

GSS

ImageCaptureCore

ImageIO (Aggiunta)

IOBluetooth

IOBluetoothUI

IOKit

JavaFrameEmbedding

JavaScriptCore

Kerberos

Kernel

LDAP (Aggiunta)

NetFS

OpenCL

OpenDirectory

OpenGL

Python

QTKit

Quartz

QuartzCore

Ruby

RubyCocoa

SceneKit (Aggiunta)

Security

SecurityInterface
38
Il Sistema Operativo OS X 10.8 Mountain Lion

ServerNotification

Social (Aggiunta)

StoreKit

SystemConfiguration

vecLib

VideoToolbox (Aggiunta)

WebKit

XgridFoundation (Rimossa)
2.2 Graphical User Interface
La GUI (Graphical User Interface) è un tipo di Interfaccia Utente che consente all’utente
di interagire col Sistema Operativo attraverso oggetti grafici.
La GUI usata dalla Apple prende il nome di “Aqua”.
Aqua prende il suo nome dall’effetto “acquatico” che assume.
I pulsanti sono principalmente di colore blu traslucido e l'interfaccia grafica fa un ampio
utilizzo di semitrasparenze o di superfici che sembrano traslucide.
Aqua originariamente nasce con il programma iMovie 261. Visto il successo riscosso dal
tema Apple decise di renderlo il tema standard del Mac OS X Public Beta che venne
presentato nell'autunno del 2000. Il tema fu molto apprezzato e quindi rimase come tema
standard del Mac OS X.
Le due caratteristiche principali di Aqua sono i pulsanti traslucidi usati per controllare le
finestre (colorati rosso, giallo e verde) e il Dock utilizzato per facilitare la navigazione tra
le applicazioni.
61
http://www.apple.com/pr/library/2000/jul/19imovie.html
39
Il Sistema Operativo OS X 10.8 Mountain Lion
Figura 2.1
Il disegno del tema originale di Aqua è ispirato ai case traslucidi e semitrasparenti dei
primi iMac e dei Power Macintosh G3. Quando Apple, nel 2003-2004 decise di
abbandonare i case semitrasparenti e di optare invece per l'utilizzo di alluminio anodizzato
(come negli Apple Cinema Display) o in plastica bianca, fu aggiornato anche il tema,
incorporando un look più opaco e metallizzato e dando meno peso a trasparenze e sfondi
rigati.
40
Il Sistema Operativo OS X 10.8 Mountain Lion
Vi sono due stili di presentazione delle finestre inclusi in Aqua: Standard e Brushed
Metal.
Lo stile Standard contiene bottoni traslucenti, come se fossero fatti di vetro. I pulsanti
vengono disposti nella parte superiore della finestra.
Lo stile Brushed Metal utilizza una varietà del grigio che ricorda il case del Power Mac
G5, i pulsanti sono disposti dentro la finestra. Inoltre a differenza dello stile precedente
molti pulsanti sembrano fatti di plastica avendo un colore meno luminoso rispetto ai tasti
dello stile Standard.
Con l'uscita di Mac OS X 10.5 Leopard si è visto l'abbandono da parte di Apple dello stile
Brushed Metal, a favore del Solid Metal, già visto dagli utenti in iTunes a partire dalla
versione 5.0 e resterà tale fino alla versione 10.8 Mountain Lion.
Aqua è gestito da Quartz Compositor, il motore alla base della rappresentazione grafica
di tutti gli elementi sullo schermo di Mac OS X.
Aqua viene utilizzato da tutte le applicazioni native per Mac OS X.
Per scrivere un’interfaccia compatibile con Aqua, la Apple mette a disposizione un
documento, con le linee guida per acquisire familiarità col proprio ambiente di sviluppo e
garantire a qualsiasi applicazione un’interfaccia che sia “piacevole, snella, semplice e
adattabile.”62
Tutti gli elementi dell'interfaccia utente standard e le icone del sistema sono disponibili in
Interface Builder.
62
http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/Intro/Intro.htm
l
41
Il Sistema Operativo OS X 10.8 Mountain Lion
Interface Builder, che è un editor di per interfacce grafiche in Xcode, permette agli
sviluppatori che usano Cocoa di disegnare interfacce grafiche per le applicazioni usando
uno strumento grafico, senza la necessità di scrivere decine di righe di codice.
L'interfaccia risultante è salvata in un file .nib (abbreviazione di NeXT Interface Builder),
il quale fa dedurre che apparteneva anch’egli al gruppo NeXT.
Xcode è un ambiente di sviluppo integrato (Integrated Development Environment, IDE)
creato per agevolare lo sviluppo di software per Mac OS X e iOS.
Interface Builder è la sua parte che si occupa della grafica di un’applicazione, Xcode
invece aiuta a sviluppare tutto il codice sorgente.
Fa anch’egli parte dell’eredità NeXT, dove aveva il nome di Project Builder.
Xcode include GCC (GNU Compiler Collection), che è il compilatore per linguaggi codice
C, C++, Objective C/C++ e Java. Supporta anche il framework Cocoa, oltre ad altri.
Una delle caratteristiche tecnologicamente più avanzate di Xcode è che supporta la
distribuzione in rete del lavoro di compilazione. Usando Bonjour e Xgrid è in grado di
compilare un progetto su più computer riducendo i tempi. Supporta la compilazione
incrementale, ed è in grado di compilare il codice mentre viene scritto, in modo da ridurre
il tempo di compilazione.
Xgrid consente lo sviluppo di applicazioni parallele che distribuiscono le operazioni da
eseguire su più macchine collegate da una rete telematica riducendo i tempi necessari
all'elaborazione. E’ stato rimosso nella versione OS X 10.8 Mountain Lion.
Bonjour è una tecnologia generica nata per individuare automaticamente la presenza di
servizi nelle LAN. Questa tecnologia viene usata in modo massiccio per consentire agli
utenti di installare una rete senza bisogno di configurarla.
42
Il Sistema Operativo OS X 10.8 Mountain Lion
Altre tecnologie appartenenti alla GUI contenute in Mac Os X sono:
•
Inkwell
•
Exposé
•
Apple Icon Image
•
Etichette
•
Smart Folder
• Spotlight
• Finder
•
Launchpad
Inkwell è la tecnologia di riconoscimento della scrittura che è inclusa nei Mac che
riconosce la scrittura.
Inkwell è basato sulla tecnologia del PDA Apple Newton chiamata ‘Rosetta’ (emulatore
rimosso dalla versione 10.7 Lion).
Quando è attivo appare come un foglio semi-trasparente sul quale l'utente vede la sua
apparire la sua scrittura. Quando l'utente smette di scrivere, la sua scrittura viene
riconosciuta da Inkwell e inclusa nell'applicazione attiva (nel punto in cui è collocato il
cursore), come se l'utente avesse semplicemente scritto le parole con la tastiera. L’utente
può anche impostare Inkwell per non riconoscere la propria scrittura, ma includere
direttamente nell'applicazione il suo scritto a mano.
Nella versione 10.8 Mountain Lion è stata rinominata semplicemente ‘Ink’.
Exposé è un tool per organizzare le finestre che consente all'utente di vedere, in modo
molto rapido, tutte le finestre (o un insieme particolare) senza la necessità di doverle
scorrere manualmente sul desktop.
Apparso per la prima volta in Mac OS X versione 10.3 "Panther", Exposé è una comoda
rivoluzione nel modo di organizzare le finestre nel proprio monitor.
43
Il Sistema Operativo OS X 10.8 Mountain Lion
Exposé ha tre differenti metodi di organizzazione delle finestre:
1. Mostra tutte le finestre aperte in quel momento, riducendole a delle miniature. Poi
l'utente potrà selezionare col cursore una specifica finestra per portarla in primo
piano. Di norma questa modalità è associata al tasto F9.
2. Mostra tutte le finestre aperte associate al programma che in quel momento è in
esecuzione in primo piano. Di norma questa modalità è associata al tasto F10.
3. Sposta a lato tutte le finestre, mostrando il desktop sgombro. Di norma associato al
tasto F11.63
I tasti usati per attivare Exposé sono modificabili a piacere, così come si possono definire
degli angoli attivi nel monitor sul quale portare il cursore del mouse per attivare una
funzione Exposé; se si dispone di un mouse o trackball con più tasti si possono associare
le funzionalità di Exposé agli altri tasti.
Exposé fa largo uso del sottosistema grafico Quartz Extreme per realizzare l'animazione
che riscala le finestre e che successivamente le ringrandisce.
Dalla versione Mac OS X 10.7, e di conseguenza in OS X 10.8 è stato rinominato in
“Mission Control”.
Apple Icon Image, detto anche Icns, è il formato icona utilizzato da Mac OS X.
Esso supporta icone 16×16, 32×32, 48×48, 128×128, 256×256, 512×512 e 1024×1024
pixel, il canale alfa e la sovrapposizione di più immagini (per esempio una cartella aperta e
chiusa). Il formato è semplicemente composto da massimo 6 immagini TIFF sovrapposte,
che spesso sono solo di grandezze diverse, e altre volte sono immagini diverse a seconda
dello stato che l'icona deve assumere in relazione al programma che la gestisce.
63
http://it.wikipedia.org/wiki/Expos%C3%A9_(Mac_OS_X)
44
Il Sistema Operativo OS X 10.8 Mountain Lion
Per convertire le immagine da formati standard esistono diversi programmi:
Icon Composer è l'accessorio che fa parte dei developer tool, permette di creare immagini
icns partendo da formati standard.
Img2icns è un tool che converte le immagini in Icns e inoltre le adatta alla dimensione
usata negli iPhone e iPod touch.
FastIcns ha le stesse funzioni di Icon Composer ma ha una grafica molto particolare.
GraphicConverter permette di salvare in molteplici formati immagine oltrea Icns e ha
altre numerose funzioni di grafica.
Le Etichette del sistema operativo Mac OS sono una tipologia di metadati, nello specifico
sette distinti parametri colorati, che possono essere assegnati a file, cartelle e volumi nel
sistema operativo. Questa funzione è stata introdotta con il System 7 e mantenuta in tutte
le versioni del Mac OS "Classic". Con l'avvento di Mac OS X le etichette sono state
eliminate dalle prime versioni del sistema operativo, per poi essere reintrodotte nella
versione 10.3 Panther.64
Nel Mac OS "Classic" la scelta di un'etichetta portava interamente l'icona nel colore
selezionato, portando ad una distinzione visiva molto efficace ma anche alla perdita di
dettagli nelle icone. In OS X, la rivoluzione dell'interfaccia Aqua ha portato a valorizzare
particolarmente le nuove icone più grandi e fotorealistiche, e dunque a dover ripensare il
precedente approccio.
In Mac OS X le etichette permettono di differenziare gli elementi colorandone il nome;
l'evidenziazione viene mostrata in tutte le "viste" del Finder (a icone, elenco, colonne e
Cover Flow). Ad ogni colore è associata una descrizione testuale (di default è il nome del
colore).
64
http://arstechnica.com/apple/reviews/2003/11/macosx-10-3.ars/9#finder-labels
45
Il Sistema Operativo OS X 10.8 Mountain Lion
I colori disponibili sono sette: Rosso, Arancio, Giallo, Verde, Blu, Viola e Grigio.
Questi non sono modificabili senza alterare file di sistema, ma il nome associato ai colori è
personalizzabile a piacere nelle preferenze del Finder.
Le etichette, usate in congiunzione con le cartelle smart, permettono di organizzare
facilmente i documenti sul proprio computer.65
La Smart Folder (o Cartella Smart) è una speciale cartella virtuale i cui contenuti
vengono aggiornati dinamicamente in base a specifici criteri definiti dall'utente.
Introdotte in OS X 10.4 Tiger, contengono i risultati di una ricerca effettuata dal motore
Spotlight. Quando il file system viene modificato da un programma o dallo stesso sistema
operativo, le smart folders vengono automaticamente aggiornate in modo da rispecchiare il
contenuto del file system.
Spotlight è una funzione di ricerca in tempo reale che usa un motore di ricerca basato sui
metadati ed è progettato per ricercare una vasta gamma di elementi sul file system.
Con Spotlight possono essere create le Smart Folder solo dalla finestra di ricerca del
Finder.
Il Finder è l'applicazione che si occupa di gestire file, cartelle, dischi e il lancio di altre
applicazioni. Il Finder si comporta come la shell in altri sistemi operativi, ma usa una
interfaccia grafica (GUI).
Il Finder è la prima applicazione che interagisce con l'utente dopo l'avvio. Bisogna
distinguerlo dalla GUI. Essa è un'applicazione come le altre, né più né meno.
Visualizza il file system usando la metafora del desktop (desktop environment): per ogni
cartella o disco c'è una relativa icona e c'è anche un cestino, dove mettere i file da
eliminare.
65
http://www.maclife.com/article/howtos/how_use_mac_os_x%E2%80%99s_labels_organize_your_files
46
Il Sistema Operativo OS X 10.8 Mountain Lion
Launchpad è un alto visualizzatore di icone di Mac OS X.
La GUI Launchpad Fullscreen fornisce un modo alternativo per avviare i programmi per
computer rispetto al Dock , Finder e Spotlight .
Il Launchpad è stato progettato per assomigliare all’interfaccia SpringBoard in iOS .
Inizialmente, la schermata di avvio viene popolata con i programmi elencati nella sezione
"Applicazioni" cartella in Mac OS X . L'utente può aggiungere / rimuovere le icone delle
applicazioni per Launchpad. Le applicazioni possono essere organizzate in cartelle
denominate come in iOS. L'utente può quindi rimuovere applicazioni scaricate dal Mac
App Store.
Sebbene i programmi ottenuti con metodi non possono essere rimossi dal Launchpad,
alcune opzioni con terzi. In Lion, il Launchpad ha otto icone per riga, in Mountain Lion
invece ha sette icone per riga.
47
Il Sistema Operativo OS X 10.8 Mountain Lion
Capitolo 3
Il Kernel
Il cuore del Sistema Operativo è Darwin66.
Darwin è un sistema operativo libero che costituisce il set di base dei componenti che
caratterizzano la struttura del Mac OS X.
Dopo che la Apple acquisì la NeXT nel 1996, cominciò a lavorare sul Sistema Operativo
Rhapsody, partendo dal progetto di OPENSTEP. Nel 2000 il progetto Rhapsody venne
conciliato in Darwin.
Nel luglio 2003, Apple rilasciò la versione di Darwin 2.0 sotto la Apple Public Source
License (APSL), che la Free Software Foundation (FSF) approvò come licenza per
software libero. Le versioni che furono sviluppate antecedentemente non soddisfavano la
definizione della FSF di software libero, anche se erano soddisfatti i requisiti per la
definizione Open Source.
Per consentire un funzionamento sicuro su macchine multiprocessore, l'accesso alle risorse
condivise (file, strutture dati, ecc) è serializzato in modo da impedire ai processi di
modificare contemporaneamente la stessa risorsa.
66
Certificato per la versione OS X 10.8 Mountain Lion: http://www.opengroup.org/openbrand/register/brand3591.htm
48
Il Sistema Operativo OS X 10.8 Mountain Lion
Esso implementa sistemi a mutua esclusione (mutex) a grana fine per ottenere elevate
prestazioni nei sistemi multiprocessore.
Darwin non include molti degli elementi che definiscono Mac OS X, come Cocoa o il
Quartz Compositor.67
Presenta tuttavia una serie di caratteristiche meno conosciute di Mac OS X. Ad esempio,
mDNSResponder, che è il multicast DNS che è un componente fondamentale della
tecnologia di rete Bonjour, e launchd , che è un avanzato servizio di gestione framework.
E’ costruito attorno XNU, un kernel ibrido il quale è un compromesso di progettazione fra
la flessibilità del microkernel Mach 3 e le prestazioni del kernel monolitico FreeBSD, vari
elementi di BSD (Berkeley Software Distribution), tra cui il modello di processo, lo stack
di rete , e i file system virtuali, un driver di periderica API object-oriented chiamata I/O
Kit, un modulo di astrazione hardware chiamato Platform Expert, e altre estensioni del
kernel.
Dunque il kernel di Mac OS X non è solo XNU, ma l’unione di molteplici componenti.
Per semplicità si intende con XNU sia la combinazione del codice di base (quello
implementato nel package XNU di Darwin) sia tutte le altre estensioni del kernel.
XNU è un acronimo ricorsivo che sta per XNU's Not Unix ("XNU Non è Unix").
Il nucleo del kernel XNU è Mach e fornisce la gestione dei processi, il passaggio dei
messaggi (utilizzati nella comunicazione interprocesso), la memoria virtuale e la
protezione della memoria, la gestione dei processi real-time, il supporto al debugging del
kernel e I/O da console. Mach inoltre gestisce la presenza di più binari in modo da poter
gestire nativamente la presenza di più architetture hardware come i processori PowerPC o
i processori X86.68
67
Per approdonfire: http://developer.apple.com/darwin/
68
http://it.wikipedia.org/wiki/DarwinOS#Mach
49
Il Sistema Operativo OS X 10.8 Mountain Lion
Le porzioni di codice BSD integrate forniscono le API POSIX (BSD system calls) il
modello di gestione dei processi, i livelli base di sicurezza e le relative policy, l'user id, la
gestione dei permessi, la gestione della rete, il Virtual file system (incluso la strato di
journaling), la crittografia, le UNIX System V IPC, molte primitive ed un gran numero di
programmi scritti per vari altri sistemi simili a UNIX, che possono essere compilati su di
esso senza modifiche del codice sorgente.
Dentro XNU, la porzione BSD, l’I/O Kit ed il Mach risiedono nello stesso spazio degli
indirizzi anche se hanno responsabilità ben definite che li separano in termini di funzioni
ed implementazione.
Figura 3.1
3.1 Mach
Mach ebbe inizio, in gran parte, come un tentativo di creare un kernel pulito e altamente
portabile basato su UNIX.
Il risultato fu un breve elenco di concetti generici: 69 70
69
Tevanian, Avadis; Rashid, Richard F.; Golub, David B.; Black, David L.; Cooper, Eric; Young, Michael W. (1987).
"Mach Threads and the Unix Kernel: The Battle for Control". Proceedings of the USENIX Summer Conference,
USENIX Association. pp. 185–197. CiteSeerX: 10.1.1.41.3458.
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.3458
50
Il Sistema Operativo OS X 10.8 Mountain Lion
•
un task, ossia un oggetto costituito da un insieme di risorse di sistema che abilitano i
threads durante l’esecuzione.
•
un thread, ossia una singola unità in esecuzione, esiste all'interno di un contesto di
task col compito di condividere le risorse.
•
una porta, ossia una coda di messaggi protetta per la comunicazione tra le varie
attività; i task possono inviare e ricevere messaggi tramite esse.
• i messaggi, che sono raccolte di oggetti di tipi di dato, e possono essere inviati solo con
le porte.
Mach è sviluppato coi concetti IPC (Inter-Process Communication) di Accent, ma ciò ha
reso il sistema molto più UNIX-like, cioè è in grado di eseguire programmi UNIX con
poca o nessuna modifica.
Per fare questo, Mach introduce il concetto di “porta”, che rappresenta il punto di arrivo di
una comunicazione IPC, ossia due processi per comunicare tra di loro hanno bisogno di
una porta in comune per scambiarsi messaggi in modo protetto.
Le porte aderiscono alle norme di sicurezza come i file in UNIX, rendendo il modello di
protezione UNIX-like. Inoltre, Mach permette a qualsiasi programma la gestione dei
privilegi, operazione che in genere è data solo al sistema operativo, al fine di consentire ai
programmi user space la gestione delle proprie operazioni, come l’iterazione con
l'hardware.
Sotto Mach il sistema operativo diventa di nuovo principalmente una raccolta di
“utilities”. Come con UNIX, Mach mantiene il concetto di un driver per gestire l'hardware.
Pertanto tutti i driver per l'hardware presenti devono essere inclusi nel microkernel.
70
Accetta, Mike; Baron, Robert; Bolosky, William; Golub, David; Rashid, Richard; Tevanian, Avadis; Young, Michael
(1986). "Mach: A New Kernel Foundation for UNIX Development". Technical Conference - USENIX.
http://www.cs.toronto.edu/~demke/469F.06/Handouts/mach_usenix86.pdf
51
Il Sistema Operativo OS X 10.8 Mountain Lion
Altre architetture basate su Hardware Abstraction Layer o exokernels potrebbero spostare i
drivers fuori dal microkernel.
La differenza principale che ha con UNIX è sulla gestione di file, i quali possono gestire
qualsiasi task. Altre linee di codice del sistema operativo è sono state spostato fuori dal
kernel nello spazio utente, in modo da avere un kernel molto più piccolo e leggero che
giustifica così il nome microkernel .
Un’importante differenza coi sistemi tradizionali è che sotto Mach un task può essere
composto da threads.
Questa caratteristica che è molto comune nei sistemi moderni, è stata possibile proprio
grazie a Mach, il quale è stato il primo sistema a definire i task e i threads in questo modo.
Il lavoro del kernel è stato ridotto in modo da avere semplicemente le operazioni per la
gestione delle utilities ela gestione dello scheduling per la comunicazione tra software e
hardware.
L'esistenza delle porte e l'uso di IPC è probabilmente la differenza principale tra il kernel
Mach e i kernel tradizionali. Sotto UNIX, la chiamata del kernel consiste in un’operazione
nota come syscall o trap. Il programma usa una libreria per inserire i dati in una posizione
ben nota in memoria e quindi genera un tipo di errore che prende il nome di eccezione.
Quando il sistema viene avviato, il kernel è impostato per essere la gestione di tutte le
eccezione, in modo che quando un programma ne invoca una, il kernel esamina le
informazioni in suo possesso e poi esegue le istruzioni.
Sotto Mach, la gestione delle eccezioni viene gestita tramite il sistema IPC.
Per richiamare la funzionalità del sistema, un programma chiede al kernel l'accesso ad una
porta, e quindi utilizza il sistema IPC per comunicare con essa. Anche se i messaggi sono
stati innescati da system call, la gestione della richiesta effettiva può arrivare a qualche
altro programma.
52
Il Sistema Operativo OS X 10.8 Mountain Lion
L'uso di IPC per lo scambio di messaggi beneficia del supporto sia dei threads che della
concorrenza. Dato che i task sono multi-thread e che i threads utilizzano il meccanismo
IPC, Mach è in grado di bloccare e sbloccare i threds, mentre il messaggio viene gestito.
Questo consente al sistema di essere distribuito su più processori, utilizzando sia la
memoria condivisa direttamente, come nella maggior parte dei messaggi Mach, sia
aggiungendo codice per copiare il messaggio su un altro processore, se necessario.
In un kernel tradizionale questa gestione è difficile da implementare, il sistema deve essere
sicuro che i diversi programmi non cerchino di scrivere sulla stessa porzione di memoria
da diversi processori. In Mach questo è ben definito e più facile da implementare, in
quanto è il processo stesso a chiedere l’accesso a quell’area di memoria grazie alle porte.
Il sistema IPC inizialmente ebbe problemi prestazionali, quindi alcune strategie furono
sviluppate per minimizzare l'impatto. Come il suo predecessore, Accent, Mach utilizza un
singolo meccanismo per la gestione della memoria condivisa, per passare fisicamente il
messaggio da un programma all'altro.
Fisicamente, la copia del messaggio sarebbe troppo lenta, così Mach si basa sulla Memory
Management Unit (MMU) per mappare rapidamente i dati da un programma all'altro.
I messaggi sono stati controllati dal kernel, per evitare che i dati errati corrompano uno dei
molti programmi che compongono il sistema.
Le porte sono state volutamente modellate sul concetto di file system UNIX. Questo
permette agli utenti di trovare le porte utilizzando i concetti di navigazione dei file system
esistenti, nonché i diritti e le autorizzazioni di assegnazione come farebbero sul file
system.
Con un monokernel, un bug nel nuovo codice avrebbe generato un kernel panic, ossia
avrebbe compromesso la macchina intera e richiesto un riavvio, mentre con Mach è
necessario solo che sia il programma che ha causato l’errore ad essere riavviato.
53
Il Sistema Operativo OS X 10.8 Mountain Lion
Inoltre l'utente può personalizzare il sistema per includere o escludere qualunque
funzionalità richiesta. Dal momento che il sistema operativo è semplicemente una raccolta
di programmi, si potrebbe aggiungere o rimuovere parti semplicemente avviandoli o
“killandoli” come farebbero con qualsiasi altro programma.
Nella versione OS X 10.8 un kernel panic riavvia sempre immediatamente, inizia un
backup dei dati, mostra un avviso sulla riavviattivazione del computer a causa di un
problema per alcuni secondi, poi il computer si riavvia. E’ stata anche aggiunta una
traduzione cinese.
3.2 I/O Kit
I/O Kit è il framework che gestisce i driver di periferica, scritti in un linguaggio derivato
dal C++ basato su Embedded C++.71 Utilizzando il suo desig object-oriented, caratteristica
comune a tutte le classi del driver all’interno del framework stesso, si aiutano i driver di
periferica in modo da essere scritti più velocemente e con meno linee di codice. L'I/O Kit
è multi-thread, multiprocessing simmetrico (SMP), e permette una configurazione per i
dispositivi automatica e dinamica.
Molti driver possono essere scritti per funzionare nella user-zone, ciò migliora
ulteriormente la stabilità del sistema, in quanto se in tale zona c’è un crash del dispositivo
non si blocca il kernel.
Infatti tutti i driver nel kernel space rischiano di bloccare tutto il sistema. Esempi di driver
kernel-space includono l'adattatore del disco e i driver della scheda di rete, i driver grafici,
i driver per le porte USB e anche i driver per le virtual-machine come Parallels Desktop.
71
http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html
54
Il Sistema Operativo OS X 10.8 Mountain Lion
Le radici di I/O Kit sono in DriverKit di NeXTSTEP.
Esso è in gran parte un ambiente autonomo, cioè gli sviluppatori possono codificare e fare
affidamento esclusivamente sulla I/O Kit senza dover per forza conoscere gli strati di
Mach e BSD.
I/O Kit offre anche il proprio set di API, l'I/O Kit Framework, che fornisce
funzioni avanzate come le notifiche per la comunicazione kernel-space/user-space (e
viceversa).72
3.3 BSD
BSD (Berkeley Software Distribution) è un Sistema Operativo Unix derivato, sviluppato e
distribuito dalla Computer Systems Research Group (CSRG) della University of
California in Berkeley, dal 1977 al 1995. Oggi il termine “BSD” è spesso usato in modo
non specifico per riferirsi a qualsiasi dei discendenti BSD i quali insieme formano un ramo
della famiglia dei Sistemi Operativi Unix-like.
I sistemi operativi derivati da BSD originale codice restano attivamente sviluppati e
ampiamente utilizzati.
Nello Unix di Berkeley sono stati implementati protocolli, librerie e strumenti che hanno
dato un grande contributo allo sviluppo dell'informatica moderna.
La porzione del kernel BSD fornisce le POSIX API73, il modello di processo Unix in cima
ai tasks Mach, le politiche di sicurezza di base, gli ID utente e gli ID di gruppo, le
autorizzazioni, lo stack di rete, i codici dei file system virtuali, alcuni file system locali,
come HFS/HFS+, il Network File System (NFS) client e server, i frameworks crittografici,
72
Jonathan Levin, Mac OS X and iOS Internals To the Apple’s Core, Novembre 2012.
73
Vedi Capitolo 2, pag 29
55
Il Sistema Operativo OS X 10.8 Mountain Lion
il UNIX System V per la gestione della comunicazione tra processi (IPC), un sottosistema
di audit, il controllo di accesso obbligatorio, e alcune delle primitive bloccanti.74
Molto del codice BSD in XNU provieniene dal kernel FreeBSD. Anche se gran parte di di
essa è stata modificata in modo significativo, la condivisione del codice si verifica ancora
tra la Apple e il FreeBSD Project.75
Un derivato di BSD è FreeBSD.
Grazie alle sue condizioni di licenza permissiva, gran parte della base di codice di
FreeBSD è diventata parte integrante di sistemi operativi come Apple OS X , che sono
stati successivamente certificati come UNIX-compatibili e hanno formalmente ricevuto il
marchio UNIX.76
Con l'eccezione del proprietario OS X, FreeBSD è il più utilizzato tra i derivati di BSD ed
è il più utilizzato sotto licenza libera, open-source di distribuzione BSD, che rappresentano
più di tre quarti dei sistemi free installati.77
FreeBSD supporta diverse caratteristiche relative alla sicurezza come Access Control List
(ACLs), la verifica di eventi, gli attributi estesi del file system e Mandatory Access
Control (MAC). Queste caratteristiche furono sviluppate dal progetto TrustedBSD78 il
quale fu fondato da Robert Watson con l'obiettivo di implementare i concetti dal Common
Criteria e quelli del TCSEC. Questo progetto procede ancora e molte delle sue estensioni
sono state integrate nelle distribuzioni FreeBSD.
74
http://lists.freebsd.org/pipermail/freebsd-advocacy/2008-August/003674.html
75
http://www.freebsd.org/news/status/report-2009-04-2009-09.html#Grand-Central-Dispatch---FreeBSD-port
76
Pohlmann, Frank. "Why FreeBSD". ibm.com. Retrieved 2013-01-13. http://www128.ibm.com/developerworks/opensource/library/os-freebsd/
77
BSD Certification Group (31 October 2005) (PDF). The BSD Certification Group.
http://www.bsdcertification.org/downloads/pr_20051031_usage_survey_en_en.pdf
78
http://www.trustedbsd.org/mac.html
56
Il Sistema Operativo OS X 10.8 Mountain Lion
Questo progetto ha pure adattato l'implementazione della National Security Agency dal
SELinux a FreeBSD. Altri lavori incusi nello sviluppo di OpenBSM, un'implementazione
open source delle API (BSM) della Sun e del supporto del formato dei file log, i quali
aggiungono maggiore sicurezza al sistema.
Mentre molti componenti del progetto TrustedBSD sono stati inclusi nei sorgenti per
FreeBSD, molte caratteristiche, ormai pienamente maturate, trovano la loro collocazione
in altri sistemi operativi, come ad esempio: OpenPAM e UFS2 sono stati adottati in
NetBSD. Il framework TrustedBSD MAC è stato adottato dalla Apple per il proprio
sistema operativo Mac OS X.79
Le API del kernel sono fatte per essere accessibili alle estensioni del kernel di rete
(NKEs), e Network Kernel Extensions Programming Guide80 della Apple lo documenta al
meglio.81
Nel FreeBSD è presente una tecnologia per l’ottimizzazione del supporto delle
applicazioni per sistemi con multi-core di processori e di altri multiprocessing simmetrico
sistemi e prende il nome di Grand Central Dispatch (GCD)82.
3.3.1 File System
Un File System è l'insieme dei tipi di dati astratti necessari per la memorizzazione,
l'organizzazione gerarchica, la manipolazione, la navigazione, l'accesso e la lettura dei
79
Robert Watson's PhD Dissertation http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-818.html
80
https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/NKEConceptual/NKEConceptual.pdf
81
Jonathan Levin, Mac OS X and iOS Internals To the Apple’s Core, Novembre 2012.
82
http://www.apple.com/pr/library/2008/06/09snowleopard.html
57
Il Sistema Operativo OS X 10.8 Mountain Lion
dati. Di fatto, alcuni file system (come NFS) non interagiscono direttamente con i
dispositivi di archiviazione.
I file system possono essere rappresentati sia graficamente tramite file browser sia
testualmente tramite shell testuale. Nella rappresentazione grafica è generalmente
utilizzata la metafora delle cartelle che contengono documenti (i file) ed altre sottocartelle.
Mac OS X utilizza un file system che ha ereditato dal classico Mac OS chiamato HFS Plus
(HFS+), talvolta chiamato Mac OS Esteso.
HFS Plus è un metadato ricco e case-preserving , ma di solito i file system sono caseinsensitive.
A causa delle radici Unix di OS X, sono stati aggiunti a HFS Plus permessi Unix. Le
versioni successive di HFS Plus aggiungono journaling per prevenire la corruzione della
struttura del file system e introducono una serie di ottimizzazioni agli algoritmi di
allocazione, nel tentativo di deframmentare i file automaticamente senza la necessità di un
programma di deframmentazione esterna.
I nomi dei file possono contenere fino a 255 caratteri. HFS Plus utilizza Unicode per la
memorizzare dei nomi dei file. Su OS X, il tipo di file può venire dal tipo di codice,
memorizzato nei metadati del file, o l' estensione del file .
HFS Plus dispone di tre tipi di collegamento: Unix-style hard links, Unix-style symbolic
links and aliases.
Gli aliases sono progettati per mantenere un collegamento al file originale, anche se
vengono spostati o rinominati, non verranno interpretati dal file system in sé, ma dal
codice File Manager in spazio utente.
Mac OS X supporta anche l' UFS file system, derivato dal BSD Unix Fast File System da
NeXTSTEP . Tuttavia, a partire da Mac OS X 10.5 (Leopard), OS X non può più essere
58
Il Sistema Operativo OS X 10.8 Mountain Lion
installato su un volume UFS, né un sistema di pre-Leopard installato su un volume UFS
essere aggiornato a Leopard.83
Le versioni più recenti di OS X sono in grado di leggere e scrivere sui file system FAT (16
e 32) comuni in Windows. Essi sono anche in grado di leggere i più recenti NTFS file
system per Windows. Per scrivere ai file system NTFS su OS X versioni precedenti 10.6
(Snow Leopard) è necessario un software di terze parti. Mac OS X 10.6 (Snow Leopard) e
versioni successive, quindi anche la 10.8, consentono la scrittura di file system NTFS, ma
solo dopo una non banale modifica delle impostazioni di sistema.
3.3.2 Networking
La gestione delle schede di rete in un Sistema Operativo Mac OS X affidato a Bonjour.
Bonjour è un marchio registrato usato da Apple per denominare la sua implementazione
del protocollo Zeroconf dell'IETF, una tecnologia basata sulle reti locali introdotta dalla
versione 10.2 di Mac OS X.
Zeroconf o Zero Configuration Networking è un protocollo standard dell'IETF per la
configurazione dinamica dei nodi di una rete utilizzante il protocollo IP. Lo standard non è
ancora definitivo, infatti non esiste ancora nessun documento RFC sul protocollo Zeroconf
sebbene esistano già diverse implementazioni del protocollo che vengono utilizzate
quotidianamente da moltissimi utenti essendo incluse nei sistemi operativi.
La tecnologia Bonjour usa il pacchetto standard DNS in un modo nuovo, sviluppa cioè dei
nuovi servizi utilizzando una tecnologia relativamente vecchia come quella del DNS over
IP.
83
http://docs.info.apple.com/article.html?artnum=306516
59
Il Sistema Operativo OS X 10.8 Mountain Lion
Inizialmente la tecnologia sviluppata da Apple utilizzava il nome Rendezvous ma in
seguito Apple ha subìto una causa legale poiché il nome Rendezvous era già utilizzato da
una azienda produttrice di software; nel 2004 le due parti hanno raggiunto un accordo in
cui Apple si impegnava a cambiare il nome. Con la versione 10.4 del suo sistema
operativo, Apple ha rinominato la tecnologia Bonjour.
Bonjour è una tecnologia generica nata per individuare automaticamente la presenza di
servizi nelle LAN. Questa tecnologia viene usata in modo massiccio da Mac OS X per
consentire agli utenti di installare una rete senza bisogno di configurarla.
Attualmente Bonjour viene utilizzato:
• da Mac OS X per rilevare stampanti di rete o file server
• da iTunes per cercare musica condivisa
• da iChat per cercare altri utenti di iChat locali
•
dal browser Safari per cercare web server locali, che possono essere per esempio le
pagine di configurazione di molti dispositivi in rete.
• da iPhoto per individuare cartelle fotografiche condivise
• da programmi di terze parti per implementare software collaborativi, di chat, ecc..
Senza speciali configurazioni al DNS, Bonjour lavora nella singola sottorete. Non si tratta
di una limitazione ma di una caratteristica del servizio. Bonjour non è nato per fornire
servizi su internet o su reti geografiche ma è nato per permettere ai milioni di utilizzatori
di reti locali di non doversi preoccupare della configurazione della rete.
Dall'8 agosto 2006 Apple ha rilasciato i sorgenti del progetto sotto Apache License. I
sorgenti sono stati posti nel sito www.macosforge.org, un sito creato da Apple per gestire i
progetti open-source legati alla sua piattaforma.
60
Il Sistema Operativo OS X 10.8 Mountain Lion
Conclusione
Come spero di aver evidenziato in questo elaborato di tesi, le novità introdotte da OS X
10.8 Mountain Lion sono moltissime: questo nuovo Sistema Operativo spalanca le porte al
futuro, introducendo un nuovo modo di concepire l'OS.
Figura C.1
Il presente grafico, frutto di un’analisi di Net Applications, dimostra che a pochi mesi dal
lancio, OS X 10.8 Mountain Lion è diventato il sistema Mac più utilizzato.
61
Il Sistema Operativo OS X 10.8 Mountain Lion
Essendo il Sistema Operativo relativamente recente, il materiale reperibile è perlopiù
parziale e, soprattutto, molto dispersivo.
Il rapporto inversamente proporzionale tra quota di mercato e disponibilità di informazioni
su Mountain Lion è quantomeno insolito: è probabile che queste due variabili, una
ritrovata empiricamente e l'altra statisticamente, portino alla necessità di una
documentazione più dettagliata sul tema.
Attraverso questo elaborato ho cercato di dare il mio contributo alla delucidazione degli
aspetti tecnici più interessanti di Mac OS 10.8, cercando di creare una sorta di guida sul
funzionamento e sulla praticità dei suoi molteplici componenti, in modo da tracciare sia il
percorso che ha portato allo sviluppo di questo Sistema Operativo sia la possibilità di
usarlo appieno sfruttando le mille possibilità che la Apple offre ai suoi utenti.
62
Il Sistema Operativo OS X 10.8 Mountain Lion
Bibliografia
[1]
The Apple Museum 2006 “History”
URL: www.theapplemuseum.com/index.php?id=53
[2] Amit Singh 2006 “Mac OS X Internals: A System Approach” Ed. Addison Wesley
URL: www.osxbook.com
[3] Apple Developer Connection 2013 “Guides – Mac OS X”
URL: https://developer.apple.com/library/mac/navigation/
[4] Apple Developer Connection 2013 “Mac Technology Overview”
URL:http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_
Technology_Overview/About/About.html#//apple_ref/doc/uid/TP40001067
[5] Massimiliano Di Cesare 2007 “Il sistema operativo Mac OS X”
URL: http://www.mobilab.unina.it/tesi/tesiDiCesare-IlsistemaoperativoMacOSX.pdf
[6] Apple 2012 “OS X Mountain Lion”
URL:http://movies.apple.com/media/us/osx/2012/docs/OSX_MountainLion_Core_Techno
logies_Overview.pdf
63
Il Sistema Operativo OS X 10.8 Mountain Lion
Ringraziamenti
Ringrazio la mia famiglia, che ha finanziato questa laurea.
Ringrazio il mio Capitano, che è stata la prima a credere in me.
Ringrazio i miei amici, tutti e nessuno escluso, che mi hanno sopportato e supportato nei
momenti più bui.
Ringrazio i miei colleghi, che adesso sono i miei amici, e che sono divenuti la mia seconda
famiglia.
Ringrazio chi c’è stato, anche se per poco, e chi ancora è qui a darmi il proprio sostegno.
Ringrazio chi mi ha permesso di arrivare a questo traguardo, donandomi un piccolo pezzo
di sè.
Ringrazio chi non ha mai smesso di credere in me, anche quando ero a non crederci più.
E ringrazio chi, seppur inconsapevolmente, mi fa sorridere ogni qual volta ne abbia
bisogno.
Grazie a tutti.
64