Un po' di storia: Mac OS e Mac OS XMac OS X è il sistema operativo sviluppato da Apple per i suoi modelli di computer della serie Macintosh.Il sistema nasce nel 2001 per combinare le caratteristiche dell'interfaccia utente del Mac OS classico con l'architettura di un sistema operativo di derivazione UNIX della famiglia BSD: Darwin.
Mac OS Classic è il sistema operativo di Apple dedicato ai computer Macintosh; il nome è l'acronimo di Macintosh Operating System.Il gruppo di sviluppo che realizzò l'hardware e il software del progetto Macintosh comprendeva:
- Bill Atkinson
- Chris Espinosa
- Joanna Hoffman
- George Crow
- Burrell Smith
- Jerry Manock
- Jef Raskin
- Andy Hertzfeld
La prima versione di Mac OS risale al 1984, e aveva la caratteristica di essere un sistema operativo completamente grafico. Questa novità favorì molto la popolarità delle GUI, e il ruolo che Mac OS ebbe nella loro diffusione è ampiamente riconosciuto.Il Classic arriva fino alla versione 9.x, poi vengono introdotte una serie di novità che porteranno ad una modifica rilevante del sistema operativo e della sua interfaccia grafica.Il Mac OS Classic, cioè il sistema operativo montato sul primo modello di Macintosh nel 1984 e le sue evoluzioni dirette, viene utilizzato fino al 2001.Il sistema funzionava sui processori CISC Motorola della serie 68000, utilizzati nei Macintosh per molti anni. Nel 1994 vennero lanciati i Power Macintosh basati sui processori RISC PowerPC. Questi processori erano sviluppati da un consorzio comprendente Apple, IBM e Motorola, ed il sistema operativo venne gradualmente convertito in codice PowerPC. Questa operazione richiese molto tempo, per via della grande quantità di assembler 68k usato nel codice originale del Mac OS: per permettere un rapido passaggio ai processori RISC, venne sviluppato un nanokernel PowerPC su cui girava il Mac OS tradizionale, che sui primi PowerMac era costituito quasi interamente da codice 68k emulato grazie al Mixed Mode Manager, lo stesso meccanismo che permetteva l'esecuzione trasparente di tutti i vecchi programmi per Mac sui Power Macintosh. La quantità di codice nativo PowerPC nel Mac OS aumentò gradualmente nelle versioni successive, e con essa le relative prestazioni del sistema.Mentre il Mac OS classico veniva gradualmente ottimizzato per la nuova architettura PowerPC, Apple aveva in mente di sostituirlo con un sistema operativo completamente nuovo; il vecchio Mac OS, infatti, soffriva ancora di molte limitazioni imposte dalle scarse risorse del Macintosh originale, come la mancanza del multitasking preemptivo e della memoria protetta. Dopo una serie di joint- venture (Pink, Taligent), Apple puntò sullo sviluppo di Copland, un nuovo sistema operativo basato sul nuKernel e che avrebbe dovuto offrire multitasking preemptivo e memoria protetta pur mantenendo la piena compatibilità con il software preesistente.Copland sarebbe dovuto diventare Mac OS 8, ma la cattiva gestione del progetto (in particolare il requisito della piena retrocompatibilità) portarono a grandi ritardi sulla tabella di marcia e, infine, all'abbandono del nuovo sistema. Mac OS 8 e Mac OS 9 vennero rilasciati, ma continuarono ad essere basati sulla tecnologia del System 7 (Blue).Dopo il fallimento di Copland, Apple si rese conto che l'unico modo di avere un sistema operativo aggiornato in tempi brevi era adottarne un altro già esistente. Furono vagliate diverse possibilità, fra cui il BeOS, ma alla fine la scelta cadde su OpenStep di NeXT.NeXT era stata fondata dallo stesso Steve Jobs, che in precedenza aveva fondato Apple insieme a Steve Wozniak; con l'acquisizione di NeXT, Jobs tornò alla guida di Apple, e venne intrapreso lo sviluppo di un sistema che unisse la base UNIX di OpenStep (microkernel Mach) con l'interfaccia grafica e le molte tecnologie ad alto livello del Mac OS. Il risultato di questa unione è stato Mac OS X, che nel giro di pochi anni ha completamente rimpiazzato il Mac OS 9, ribattezzato nel frattempo Classic. Per garantire la compatibilità con le vecchie applicazioni, rimase la possibilità di caricare, all'occorrenza, Classic all'interno di un apposito task di Mac OS XL'attuale OS X (nel senso di "dieci"), completamente riscritto e basato su microkernel Mach + BSD, fu commercializzato a partire dal 2001.Il Mac OS versione 10, quindi, denominato Mac OS X, non è una semplice evoluzione del Mac OS Classic, ma è stato completamente riscritto e costituisce, di fatto, un sistema operativo diverso. Mantiene tuttavia una notevole retrocompatibilità con le vecchie applicazioni grazie alla possibilità di caricare, all'occorrenza, il Mac OS Classic all'interno di un apposito task.Steve Jobs durante il Worldwide Developers Conference (conferenza degli sviluppatori Macintosh) annunciò l'abbandono del progetto Rhapsody. Al suo posto gli sviluppatori Apple avrebbero realizzato una versione moderna del Mac OS chiamato Mac OS X che avrebbe preso il meglio dei due precedenti sistemi. Da Raphsody sarebbero arrivati il kernel e i servizi principali, l'ambiente POSIX e OpenStep, che avrebbe preso il nuovo nome Cocoa.Per semplificare l'adozione del nuovo sistema da parte degli sviluppatori sarebbe stato sviluppato Carbon, una riscrittura per il nuovo sistema delle vecchie API del Mac OS; in più alcune tecnologie importanti nate su Mac OS sarebbero state portate nel nuovo sistema (QuickTime, AppleEvents, Applescript, ColorSync e altro ancora). I cambiamenti annunciati furono accolti con favore dagli sviluppatori.Durante lo sviluppo di OS X, gli strati più bassi del sistema operativo, composti dal kernel XNU e dallo strato BSD, vennero riorganizzati e ridistribuiti con una licenza open source, la Apple Public Source License. Il pacchetto completo si chiama Darwin.Darwin fornisce un sistema operativo molto stabile, solido ed efficiente, anche paragonato agli altri sistemi operativi di derivazione Unix, sebbene non sia molto diffuso al di fuori della comunità Macintosh. Un'altra modifica sostanziale rispetto ad OpenStep è l'abbandono del motore grafico basato sul linguaggio PostScript in favore di un motore grafico senza licenze chiamato Quartz basato su PDF. Durante la fase finale di sviluppo il linguaggio Java divenne uno scottante argomento di discussione e, vista l'attenzione dedicata al linguaggio dagli sviluppatori e dai media, si cercò di rendere la piattaforma Macintosh lo strumento ideale per lo sviluppo delle applicazioni in Java, includendo nelle API di Cocoa il supporto diretto del linguaggio Java (originariamente l'unico modo per utilizzare le API OpenStep era tramite il linguaggio di programmazione Objective C, una versione ad oggetti del C evolutasi parallelamente al C++, ma che non ha raggiunto sufficiente notorietà ediffusione).La prima versione del Mac OS X venne presentata nel 2001. Di seguito gli aggiornamenti si sono susseguiti con una cadenza quasi semestrale. Col raggiungimento della maturità del sistema, Apple decise di allungarne i cicli di sviluppo, così da mantenere la piattaforma di sviluppo più stabile, e con Mac OS X Snow Leopard venne abbandonato il supporto ai processori PowerPC, ma le applicazioni scritte su questa base potevano comunque essere utilizzate grazie a un emulatore chiamato Rosetta (rimosso successivamente in Mac OS X Lion).A Lion è seguita la release la 10.8, nome in codice OS X Mountain Lion, disponibile per tutti i Macintosh con processore Intel. Poi la release 10.9, denominata Mavericks e, ultimamente, l'ultima versione commercializzata: Yosemite.
Struttura del sistemaMac OS X include tutte le più comuni utility e shell di comando UNIX, una completa macchina Java implementata nativamente, nonché i rincipali linguaggi di scripting come Perl, PHP, tcl, Ruby e Python, ed è certificato da The Open Group come conforme allo standard UNIX, dal suo rilascio 10.5 in poi.Le componenti principali sono:
- Darwin OS, un sistema operativo libero e completo sviluppato da Apple Computer, della famiglia open source BSD, derivato da Unix, con kernel XNU basato sul microkernel Mach, ispirato e ibridato al kernel del sistema operativo FreeBSD con ampie porzioni di codice NetBSD;
- una serie di I/O kit, Frameworks, un set di librerie ottimizzate che facilitano il porting del codice UNIX e alcuni set di API (carbon e cocoa), sviluppate da NEXTStep e Apple Computer;
- un'interfaccia grafica (GUI), chiamata Aqua, sviluppata da Apple Computer.
Mac OS X manteneva transitoriamente, fino al rilascio della versione Leopard per PowerPC, una retrocompatibilità quasi assoluta con le applicazioni Macintosh anche molto datate grazie alla caratteristica di poter caricare, all'occorrenza, il Mac OS Classic in una macchina virtuale, all'interno di un apposito task isolato e chiuso dal resto del sistema. Inoltre le API Carbon hanno consentito una veloce conversione di molti applicativi da Mac OS 9 a Mac OS X dando modo di completare la transizione.Una tecnologia simile chiamata Rosetta viene utilizzata per permettere l'utilizzo delle applicazioni compilate per processori PowerPC su macchine Intel (viene installata in automatico e gratuitamente se/quando necessario).L'eredità del NeXTSTEP è ancora presente, si nota anche dal fatto che molte primitive iniziano con la sigla "NS" (contrazione di NEXTStep). Le API NEXTStep/OpenStep sono state integrate nel sistema operativo nelle API Cocoa.Mac OS X è in grado di eseguire direttamente molti programmi per BSD e GNU/Linux attraverso la compilazione dei sorgenti (make) e, in alcuni casi, tramite il ricorso alla gestione grafica via Apple X11, presente di serie nel sistema operativo anche se normalmente non utilizzato dalle applicazioni per OS X che utilizzano nativamente il motore grafico Quartz.Architettura di Sistema e ComponentiL'architettura è costituita da un approccio per componenti:
- Ambiente Classic
- NeXTSTEP:Mach Carnegie Mellon), BSD(Berkeley Software Distribution)
- MkLinux
- QuickTime
- Java(MRJ: Macintosh Runtime for Java)
Kernel Environment: μKernelImplementa un insieme minimo di funzinalità: Task, Thread scheduling, IPC, Memory Menagement.
Core Services
Servizi non direttamente legati all’interfaccia utente.Astrazioni per:Array, Tree, Dictionary, Set,Socket, String, Number, Date, TimeZone, URL, XML Parser.Objective-CInventato da Brad Cox alla fine degli anni ottanta. Concorrente del C++ per essere l’estensione del linguaggio C con oggetti.Caratteristiche:Superset del linguaggio C.Tutte le estensione iniziano per “@”.In una tassonomia dei linguaggi di programmazione è figlio dello SmallTalk e padre di Java (con cui ha uno sviluppatore in comune: Patrick Naughton).Molto Probabilmente venne scelto per implementare l’UI, per come approccia il problema l’ereditarietà, dal fatto che le Method Table sono memorizzate per classe e non per istanza e per via del Dynamic Linking .Quartz Compositor
Quartz svolge i compiti di:
- Window Server: Quartz Compositor
- Rendering Engine: Quartz 2d
- modello per la definizione di colori e pixel
- Remote Desktop
- Layered composition (per-pixel mix)
- Double Buffered Windows
- System-wide ColorSync integration
Quartz Compositor: Window Server / Event HandlerUn Window System è composto da un Window Server le cui azioni si possono compendiare in due flussi di dati:
- Up: Redireziona gli eventi verso l’applicazione di interesse;
- Down: Visualizza l’output dell’applicazione.
Quartz 2D
E' un Motore di Rendering basato sul formato PDF. Rispetta la specifica Adobe 1.2 senza usare codice di terzi. E' capace di ricevere comandi in diversi modi:
- Chiamate di libreria.
- Converte i comandi ricevuti in formato interno PDF.
- Effettua il rendering in funzione del dispositivo di visualizzazione.
Preview: Accesso Diretto a Quartz 2dL’applicazione Preview di Apple permette di provare le capacità PDF del motore di Rendering.Il problema di sicurezza: un PDF protetto una volta unlocked è alla mercè del viewer.In questo caso il viewer fornisce il comando “save as..” che può salvarlo non protetto o stamparlo nonostante in originale non lo permettesse.Acrobat Reader: Rendering softwareReader è un software multi-piattaforma, implementa un motore software che produce output identico su piattaforme differenti.Quartz Extreme
X Windows SystemWindow System fornisce:
- Device Indipendet
- Network transparent
- Meccanismi invece di policy.
Windows System è costituito da:
- Device Drivers
- Window Manager
- Input Manager
- X library
- Protocollo client/server secondo la nomenclature dei socket di Berkeley
Fornisce il meccanismo il window management e di rendering.Fornisce meccanismi per Gestione delle finestre: gerarchie, sovrapposizione, ridimensionamentoMRJava: Macintosh Runtime for Java
La VM è implementata tramite un framework e supporta: JDK 1.3.1, JDK 1.4.1 in Beta.Possiede package proprietari per:
- Interfaccia Utente: Cocoa, QuickTime for Java
- Avvio di un applicazione Java via: Bundle, Linea di comando
- Swing e AWT utilizzano il framework Carbon, e qundi il Look’N’Feel di sistema.
File System supportati
- MacOS Standard and Extended (HFS and HFS+) –Aliases
- UFS (Flat BSD UNIX type) –Symbolic links
- UDF (DVD)
- ISO 9660 (CD ROM) File System: UFS, HFS+
Caratteristiche significative
- Usa il Portable Document Format (PDF) come base per il motore grafico Quartz
- OpenGL viene utilizzato per la gestione e il ridisegno della grafica tridimensionale
- Icone a 16 milioni di colori, scalate con continuità (fino a un massimo di 128×128 pixel, con Mac OS X 10.5 il limite è stato portato a 512×512 e con Mac OS X 10.7 a 1024×1024 )
- Utilizzo di ombre attorno alle finestre e agli elementi isolati per fornire un senso di profondità
- Correttore ortografico incluso in tutte le finestre editabili e altri servizi derivati dalla tecnologia NeXT
- Antialiasing su tutti gli elementi dell'interfaccia grafica
- Nuovi elementi dell'interfaccia come le finestre non- modali (finestre di dialogo collegate alle finestre principali, utilizzate per fornire una chiara indicazione visuale della provenienza delle finestre)
- Riquadri sovrapponibili (l'organizzazione delle finestre può parzialmente sovrapporsi se è utile)
- Supporto del gestore colori ColorSync integrato nel motore grafico (per stampa e multimedia a livello professionale)
- OpenGL (dalla versione 10.2) gestore di finestre nello schermo con accelerazione hardware. La tecnologia viene chiamata Quartz Extreme
- Exposé (dalla versione 10.3) tramite la pressione di un tasto mostra tutte le finestre miniaturizzandole sullo schermo
- Uso pervasivo dell'Unicode all'interno del sistema operativo
- Architettura a strati per le localizzazioni, in modo da separare il codice dai messaggi di testo da localizzare
- FileVault (dalla versione 10.3) utilizzato per cifrare e decifrare in modo trasparente la cartella principale dell'utente con Advanced Encryption Standard (AES) con chiave a 128- bit
- Dashboard (dalla versione 10.4) supporto di mini applicazioni richiamabili con la pressione di un tasto
- Spotlight (dalla versione 10.4) tecnologia di ricerca integrata nel sistema operativo che indicizza file e messaggi per una ricerca istantanea nell'hard disk
- Automator (dalla versione 10.4) un applicativo creato per programmare graficamente operazioni ripetitive
- Time Machine (dalla versione 10.5) un sistema di backup incrementale automatico
- Boot Camp (dalla versione 10.5) un applicativo creato per facilitare l'installazione di Windows sui mac con CPU Intel
- Spaces (dalla versione 10.5) un applicativo in grado di moltiplicare virtualmente i desktop
- OpenCL (dalla versione 10.6) sfruttamento dell'acceleratore grafico hardware (schede grafiche) per computazione in compiti diversi dal rendering video, utilizzando le Gpu come coprocessori matematici
- Grand Central Dispatch (GCD) (dalla versione 10.6) sfruttamento dei multiprocessori e/o multicore ad ogni livello di scalabilita', regolando in modo dinamico i thread multipli a vantaggio del multitasking e reattivita' del sistema
Fine prima parte..