Passa ai contenuti principali

Mac OS X Tiger

Introduzione
Visto che possiedo tre Mac storici e visto che su due degli stessi è installato Mac OS X 10.4 (Tiger), ho deciso che era ora di fare un articolo su tale sistema operativo. Argomenti sui Mac e sui sistemi operativi relativi sono già stati trattati su questo spazio, ma questo articolo (probabilmente diviso in 2 o 3 parti) intende focalizzarsi su questa particolare versione. Ovviamente tutto ciò che contiene l'articolo è già stato ampiamente trattato da altri autori, anche con maggiore cura ed esperienza della mia, quindi non ci si aspetti novità, a meno che non si scopra, attraverso uno scoop, che Mac OS X Tiger è basasto sul codice di Windows '95 :-)
L'analisi partirà da Mac OS X in generale, descrivendo l'architettura del sistema e le sue componenti, fino a giungere alla versione oggetto del presente lavoro.

Un po' di storia: Mac OS e Mac OS X
Mac 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 X.
L'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à e
diffusione).
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 sistema
Mac 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 Componenti
L'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: μKernel
Implementa 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-C
Inventato 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 Handler
Un 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:
  • PDF
  • 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 2d
L’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 software
Reader è un software multi-piattaforma, implementa un motore software che produce output identico su piattaforme differenti.


Quartz Extreme



X Windows System

Window 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, ridimensionamento


MRJava: 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..

Commenti

Post popolari in questo blog

EDVAC

EDVAC (Electronic Discrete Variable Automatic Computer) L' E lectronic D iscrete V ariable A utomatic C omputer ( EDVAC ) è uno dei primi computer elettronici digitali della storia, uno dei primi computer della storia basato sull'architettura di Von Neumann e uno dei primi computer a programma memorizzato della storia. L' ENIAC era veloce, ma disponeva di pochissimo spazio di archiviazione . Inoltre, per la programmazione doveva essere ricablato , un'operazione che richiedeva da poche ore a giorni interi; era, inoltre, poco affidabile, a causa delle molte valvole tubolari utilizzate, che richiedevano, tra l'altro, moltissima energia e molto spazio per funzionare e generavano molto calore. Il che faceva lievitare costi di gestione.

Colossus

Colossus " Colossus fu il primo elaboratore elettronico al mondo: fu realizzato in Gran Bretagna nel 1943, alla fine della seconda guerra mondiale, dall’intuizione del Dott. Thomas Flowers. Operativo dal 1944 a Bletchley Park, sostituì Heath Robinson, un macchinario più semplice, nel decifrare le comunicazioni criptate della Germania nazista. Entro la fine del conflitto furono costruiti dieci esemplari di Colossus, un “gigante” da 1.600 valvole termoioniche. Il Dott. Flowers aveva concepito il progetto prima della guerra, però il centro di ricerca britannico non era convinto che fosse davvero realizzabile: la tenacia dell’ingegnere, alla lunga, s’è rivelata determinante. " Citazione - Tratta da:   http://www.downloadblog.it/post/16765/colossus-il-primo-elaboratore-elettronico-a-essere-stato-realizzato

MANIAC

Verso la fine della guerra, gli scienziati di Los Alamos stavano utilizzando il primo computer elettronico . John Von Neumann fu il protagonista principale di questo cambiamento, che condusse, poi, allo sviluppo del programma per calcolare il comportamento degli esplosivi nucleari. I calcoli iniziali concernenti la diffusione dei neutroni in un montaggio critico di uranio furono effettuati da Eldred Nelson e da Stanley Frankel , che erano membri del gruppo di Robert Serber presso il Radiation Laboratory dell' università di Berkeley , California, nel 1942.  A Los Alamos  ordinarono lo stesso tipo di macchine che avevano utilizzato in California.