Il Sistema Operativo Mac OS X
Total Page:16
File Type:pdf, Size:1020Kb
Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica tesi di laurea Il sistema operativo Mac OS X Anno Accademico 2006/2007 relatore Ch.mo prof. Domenico Cotroneo candidato Massimiliano Di Cesare matr. 41/2764 Ad Anastasia “Per aspera sic itur ad astra” Indice Introduzione 6 Capitolo 1. Architettura del Mac OS X 23 1.1 Il sottosistema Darwin 25 1.2 Il kernel XNU 26 1.2.1 Mach 27 1.2.2 BSD 28 1.2.3 I/O Kit 30 1.2.4 Libreria libkern 31 1.2.5 Libreria libsa 32 1.2.6 Platform export 33 1.2.7 Kernel extensions 34 1.3 Il file system 34 1.4 La sicurezza 36 1.4.1 Kernel-space security 37 1.4.2 User-space security 39 1.4.3 Amministrazione del sistema 41 1.4.4 Sistema di verifica 43 Capitolo 2. Il Kernel XNU 45 2.1 XNU Source 45 2.2 Mach 51 2.2.1 Tasks e Threads 53 2.2.2 Ports 55 2.2.3 Messages 57 2.2.4 Virtual Memory e Memory Objects 58 2.2.5 Exception Handling 59 2.3 All’interno del kernel 61 2.3.1 Tipi di Trasferimento del Controllo 62 2.3.1.1 External Hardware Interrupts 63 2.3.1.2 Processor Traps 63 2.3.1.3 Software Traps 64 2.3.1.4 System Calls 64 III Capitolo 3. I Processi 65 3.1 Astrazioni, Strutture dati e APIs del Mach 67 3.1.1 Processor sets 68 3.1.2 Processors 71 3.1.3 Tasks 75 3.1.4 Threads 77 3.1.4.1 Kernel Threads 82 3.1.5 Astrazioni relative al thread 85 3.1.5.1 Chiamata a procedura remota 85 3.1.5.2 Attivazione e Shuttle 86 3.1.5.3 Migrazione del thread 88 3.1.5.4 Continuazioni 89 3.1.6 I threads del Mac OS X 91 3.2 Lo Scheduling 92 3.2.1 Scheduler Operation 93 3.2.2 Scheduling Policies 100 Capitolo 4. La memoria 105 4.1 La memoria virtuale 108 4.1.1 Task Address Spaces 110 4.1.2 VM Maps 110 4.1.3 VM Map Entries 111 4.1.4 VM Objects 112 4.1.5 Pagers 114 4.1.6 Copy-on-Write 120 4.1.7 The Physical Map (pmap) 123 4.2 La memoria residente 125 4.2.1 Page Faults 129 4.3 Universal Page Lists (UPLs) 130 4.4 Unified Buffer Cache (UBC) 131 4.5 Il programma Dynamic Pager 135 4.6 L’Update Daemon 136 4.7 La memoria condivisa di sistema 136 4.8 Task Working Set 137 4.9 Memory-mapped files 140 Capitolo 5. Interprocess Communication 148 5.1 L’IPC del Mach 150 5.1.1 Le porte Mach 150 5.1.2 I messaggi IPC del Mach 153 5.2 IPC Mach: implementazione nel Mac OS X 155 5.2.1 Gli spazi IPC 155 5.2.2 Anatomia di una porta Mach 157 5.2.3 Tasks e IPC 159 IV 5.2.4 Threads e IPC 161 5.2.5 Allocazione di una porta 162 5.2.6 Implementazione del messaging 164 5.3 Lo standard POSIX 166 Capitolo 6. Il file system HFS+ 169 6.1 Concetti fondamentali 169 6.1.1 B-Trees 172 6.2 La struttura di un volume HFS+ 179 6.2.1 Frammentazione 180 6.3 Particolarità dell’HFS+ 182 6.3.1 Permessi 182 6.3.2 Journaling 183 6.3.3 Deframmentazione on-the-fly 186 6.3.4 Zona metadata 186 6.3.5 Hot File Clustering 187 Bibliografia 191 V Il sistema operativo Mac OS X Introduzione Alla fine del 1975, Stephen Gary “Steve” Wozniak terminò il suo prototipo di computer “fatto in casa” utilizzando componenti a basso costo. Il primo aprile del 1976 Steven Paul “Steve” Jobs, Steve Wozniak e Ronald Wayne fondarono la società Apple1, ed il loro primo prodotto fu il computer di Wozniak: l’Apple I. Alla fine dell’anno Wozniak creò l’Apple ][, basato sullo stesso processore, ma presentato come un computer “integrato”. Apple rilasciò nel luglio del 1978 la sua prima versione di DOS: l’Apple DOS 3.12. L’impegno della Apple per rendere il personal computing appetibile economicamente per le masse riuscì con l’Apple ][, ma restava la difficoltà per tali masse di interagire con i computer. Questo fatto fu percepito anche da Apple come un forte impedimento alla crescita della diffusione dei personal computers. Nel 1979 nacque il progetto LISA (Local Integrated Software Architecture) con l’intento di creare un microcomputer integrato, autonomo, monoutente e soprattutto facile da usare. LISA fu introdotto con un sistema operativo proprietario (Lisa OS, Lisa Office System) ed una suite d’applicazioni da ufficio. Molte caratteristiche di Lisa faranno parte dei sistemi Apple a venire; infatti, molti di questi concetti esistono anche in Mac OS X. 1 Ronald Wayne lasciò l’Apple dopo meno di due settimane, poiché ritenne troppo rischioso l’investimento. 2 Il numero di versione fu 3.1 e non 1.0 perché Paul Laughton (uno degli implementatori) incrementò il contatore di revisioni ad ogni ricompilazione del codice sorgente. Il contatore partì da 0.1 ed incrementò di .1 ad ogni ricompilazione. L’Apple DOS fu quindi testato in beta come versione 3.0 e rilasciato come versione 3.1. 6 Il sistema operativo Mac OS X Il progetto Lisa fu fallimentare a causa dei costi elevati e fu abbandonato definitivamente nel 1985. Nel settembre del 1989 l’Apple arrivò al punto di mandare in discarica circa 2700 computers, poiché lo sgravio fiscale per la rottamazione di un PC Lisa aveva superato il suo valore commerciale. C’è da ricordare che, nonostante quest’insuccesso commerciale, Lisa può considerarsi un successo tecnologico dell’Apple. Nella primavera del 1979 il progetto Annie (nato per creare una versione economica di Lisa) fu affidato a Jef Raskin, il quale ritenne che l’uso di nomi come “Lisa” e “Annie” fosse una discriminante sessuale nei suoi confronti e quindi rinominò il progetto in Macintosh, un deliberato refuso di McIntosh3. Durante la battaglia legale con la McIntosh Labs (società produttrice di stereo) per il trademark, l’Apple vagliò anche degli acronimi come ad esempio MAC (Mouse Activated Computer4). Prima che Macintosh divenisse una realtà, Raskin lasciò il progetto ed in seguito anche la società. A lui subentrò Steve Jobs che, abbandonato il progetto (business-oriented) di Lisa, riversò le sue energie nel progetto (home-oriented) Annie/Macintosh. Il prodotto Macintosh fu presentato il 24 gennaio del 1984 a Cupertino, in occasione del meeting annuale degli azionisti Apple, con un’eccellente operazione di marketing5. A differenza di Lisa, il Macintosh non fu pensato per far funzionare più sistemi operativi. Le sue ROM contenevano sia codice di basso livello (inizializzazione hardware, diagnostica, drivers, etc) che codice di alto livello (Toolbox: una collezione di routines a disposizione delle applicazioni, più o meno come una shared library). Dopo il rilascio, l’Apple spese gli anni successivi nel miglioramento del sistema operativo Macintosh dal System 2 al System 6. Nel marzo del 1988 un gruppo d’ingegneri e managers si riunirono e crearono 3 moduli: blue, pink e red. Blue era il modulo per migliorare il sistema operativo Macintosh esistente, e formò la base del System 7. 3 La McIntosh è una varietà di mela. 4 Qualcuno sostiene che all’interno di Apple alcuni commentarono che la sigla MAC stesse per Meaningless Acronym Computer (computer con acronimo senza significato). 5 Steve Jobs esordì citando un brano di ‘The times they are a-changin’ di Bob Dylan e dopo la presentazione delle potenzialità del sistema (di derivazione Lisa) mise in scena un “dialogo” con un programma vocale in esecuzione sul Macintosh. 7 Il sistema operativo Mac OS X Pink era il modulo per creare un sistema operativo orientato agli oggetti. Avrebbe dovuto avere la completa protezione della memoria, il multitasking con threads leggeri, un gran numero di spazi degli indirizzi protetti e numerose altre caratteristiche moderne. Dopo un lungo periodo d’inattività, il progetto Pink venne trasferito alla Taligent, una società congiunta tra Apple e IBM. Red era il modulo contenente le innovazioni del Pink ritenute troppo avanzate. Figura I-1 L’architettura di A/UX Sul finire degli anni 80 il software di sistema era alla versione 6. L’Apple presentò due interessanti sistemi operativi in questo periodo: il GS/OS e l’A/UX. Quest’ultimo, rilasciato nell’inverno del 1988, rappresentava la versione Apple conforme alle norme POSIX dell’Unix. La prima versione dell’A/UX si basava su 4.2BSD e AT&T Unix System V 8 Il sistema operativo Mac OS X Release 2, ma le versioni successive si ispirarono da 4.3BSD e varie releases susseguenti del System V. Le versioni 3.x dell’A/UX combinano un ambiente Unix System V con il Macintosh System 7 (presentato nel 1991). L’ultima versione dell’A/UX (la 3.1.1) fu rilasciata nel 1995. L’introduzione del System 7 rappresentò un enorme balzo in avanti rispetto alle precedenti versioni di Macintosh. In particolare introdusse il multitasking, ma non la protezione della memoria. Nello stesso periodo l’Apple formò un’alleanza6 con IBM e Motorola per far creare una piattaforma hardware comune (CHRP, Common Hardware Reference Platform). Grazie a tale alleanza i PowerPC approdarono nel mondo Macintosh. Figura I-2 Transizione all’architettura PowerPC L’architettura PowerPC nasce da un progetto dell’IBM denominato POWER (Performance Optimized With Enhanced RISC7).