L architettura a microkernel di Mac OS X

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "L architettura a microkernel di Mac OS X"

Transcript

1 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato finale in Sistemi Operativi L architettura a microkernel di Mac OS X Anno Accademico Candidato: Andrea Saldamarco matr. N

2 Alla mia famiglia ed ai miei amici

3 Indice Introduzione 5 Capitolo 1. Il sistema Operativo Architettura di un Sistema Operativo System Calls Architettura Monolitica Architettura Modulare Architettura a microkernel Progettazione del microkernel 17 Capitolo 2. Mac OS X Overview Mac OS X Darwin Kernel XNU Mach BSD I/O Kit Altre componenti di XNU Libreria libkern Libreria libsa Platform expert Kernel extensions Hight-Level layers 29 III

4 2.8.1 Applications services API 30 Capitolo 3. Il Kernel XNU Mach Task e Thread Porte Messaggi BSD System Calls Networking File system Scheduling Interprocess Communication (IPC) Mach IPC Mach exceptions Posix IPC Gestione della memoria Virtual memory Pager Copy on Write (COW) Memoria fisica Page faults Universal Page List (UPL) Unified Buffer Cache (UBC) Memoria condivisa 50 Conclusioni 51 Bibliografia 52 IV

5 Introduzione Lo scopo di questa tesi è descrivere l architettura di uno dei Sistemi Operativi più conosciuto e studiato degli ultimi anni: Mac OS X. Mac OS X è il sistema operativo sviluppato da Apple Inc nel 2001 per i computer Macintosh ed è un evoluzione del primo sistema operativo proprietario di Apple nato negli anni 80. Facendo un passo indietro, vale la pena ripercorrere velocemente la storia di Apple a partire dalla sua nascita nel La società è fondata da Steve Jobs, Steve Wozniack e Ronald Wayne a Cupertino, in California. Wayne lascia la società quasi subito, poiché non crede nel progetto. La prima sede di questa nuova società è il garage di casa: qui i fondatori lavorano al loro primo computer, l'apple I. Successivamente Jobs e Wozniak lanciano l'apple II. Le vendite toccano il milione di dollari. Nel 1980 la Apple è quotata in Borsa e cresce rapidamente tanto che Jobs decide di assumere un direttore generale con molta esperienza, John Sculley proveniente dalla Pepsi Cola. Nel 1984 viene prodotto un personal computer compatto e dotato di un nuovo sistema operativo a interfaccia grafica: Mac OS. Dotato di icone, finestre e menù a tendina, il Mac accende da subito l'interesse del pubblico. Nonostante l'indubbia superiorità rispetto agli altri computer in offerta sul mercato, le vendite del Macintosh non raggiungono i livelli attesi. Jobs punta il dito contro John Sculley; i due vengono allo scontro, ciascuno attribuendo all'altro la responsabilità del mancato successo. 5

6 Sculley pone il consiglio d'amministrazione di fronte all'alternativa: o me o lui. Il Consiglio si schiera dalla sua parte. Jobs va via e nel 1985, fonda una nuova società, la NeXT. NeXT è inizialmente una società simile ad Apple, nel senso che produce computer venduti con un sistema operativo proprietario. Il primo computer NeXT (un cubo nero) esce nel 1988 con un proprio sistema operativo NeXTSTEP, molto apprezzato nel mondo accademico e scientifico. Il sistema di Jobs mira a un ambiente operativo funzionale e bello, cosa che gli riesce piuttosto bene: fornisce ottime basi per la programmazione, la tipografia e anche per la produzione audio/video. Figura I-1 Storia dei sistemi operativi NeXT 6

7 NeXTSTEP ha avuto anche un importante ruolo nella formazione di Internet come la conosciamo oggi, poiché nel 1990 Tim Berners-Lee sviluppa al CERN di Ginevra il primo browser web e il primo server web con il sistema operativo NeXTSTEP. Tuttavia, le vendite dei computer NeXT non vanno bene, la fabbrica viene chiusa, e nel 1993 la società decide di dedicarsi solo al software, cioè al sistema operativo. Il sistema operativo NeXTSTEP non arriva all utente comune, ma viene apprezzato da diversi gruppi di fruitori specializzati: tecnici, scienziati, banche, i quali sviluppano molte applicazioni e trovano NeXTSTEP adeguato per implementare velocemente le proprie idee. NeXTSTEP usa Unix 1 e precisamente la variante BSD (Berkeley Software Distribution) Unix dell Università della California. Unix gira su un microkernel chiamato Mach sviluppato dalla Università Carnegie-Mellon. È nel suo complesso un sistema operativo molto robusto e con elevate capacità di rete. La società scrive anche un window server (cioè un sistema di interfaccia) per il sistema operativo. L interfaccia utente prende gli eventi dall utente e li passa all applicazione. L applicazione, a sua volta, trasmette all interfaccia quello che deve visualizzare all utente. Una caratteristica molto interessante è che il codice che va all interfaccia è esattamente lo stesso codice che va alla stampante. Quindi il programmatore scrive il codice una sola volta e questo codice viene usato sia per la visualizzazione a monitor che per la stampa. Successivamente, NeXT fa evolvere NeXTSTEP in OpenStep, una tecnologia che separa il livello applicativo da quello della gestione dell'hardware demandandolo a un sistema operativo sottostante; con questa tecnologia si può far funzionare un applicativo OpenStep su molte piattaforme con minime modifiche. La programmazione viene fatta in un linguaggio che si chiama Objective-C, una estensione del linguaggio C, che lo rende orientato agli oggetti. Nel 1995 Apple decide di sostituire il vecchio Mac OS con un sistema operativo moderno, con caratteristiche simili a NeXTSTEP. Avvia un progetto chiamato Copland, dal famoso compositore americano Aaron Copland, che viene portato avanti con molta difficoltà, fino a quando Apple decide di abbandonarlo. Intanto, la società, pubblica Mac OS 8 (nuova versione del vecchio sistema operativo) e di valuta l acquisto di un nuovo sistema operativo. La scelta cade proprio su NeXTSTEP. Poiché la NeXT è una compagnia relativamente piccola, Apple decide di comperarla in blocco. 1 UNIX è un sistema operativo portabile per computer inizialmente sviluppato da un gruppo di ricerca dei laboratori AT&T e Bell Laboratories 7

8 Nel 1996 Apple annuncia l acquisto di NeXT per 492 milioni di dollari e in dicembre Steve Jobs torna nella società che aveva fondato assieme a Steve Wozniack vent anni prima. Iniziano così i lavori, che dureranno quattro anni, per implementare NeXTSTEP su Mac. Il sistema operativo cambia nome e diventa Mac OS X. 8

9 Capitolo 1 Il Sistema Operativo Un sistema operativo (S.O.) è un componente software di un sistema di elaborazione il cui compito principale è quello di controllare l esecuzione di programmi applicativi e di agire come intermediario tra questi e l hardware con lo scopo di facilitarne l uso e, al tempo stesso, di garantire che tale uso sia effettuato in maniera efficace ed efficiente. Schematicamente possiamo quindi suddividere un sistema di elaborazione in tre livelli: 1. Livello hardware; 2. Sistema operativo; 3. Livello applicativo. Figura 1.1 Architettura del sistema operativo Un sistema operativo, in definitiva, non è altro che un insieme di programmi che nascondono la macchina fisica alle applicazioni. Un programma applicativo opera sulle risorse fisiche, il S.O. fornisce ai programmi applicativi un interfaccia costituita da un insieme di funzioni che mascherano la struttura della macchina fisica mostrando all utente una macchina virtuale, più semplice da usare. 9

10 Tale astrazione permette al programmatore di strutturare un programma applicativo in maniera indipendente dalla maggior parte dei dettagli architetturali della macchina fisica. L interfaccia di programmazione che il S.O. fornisce ai programmi utente viene indicata genericamente come API (Application Programming Interface). Le operazioni offerte dall API di un S.O. vengono denominate con il termine di System Calls, a indicare che esse sono interruzioni software (sincrone) che vengono chiamate dai programmi applicativi. Altre funzioni del S.O. sono la protezione e la sicurezza dei dati dei vari utenti, la gestione dei malfunzionamenti e la gestione delle risorse. 1.1 Architettura di un sistema operativo Il principale compito di un S.O. è quello di coordinare l evoluzione di più programmi applicativi concorrentemente. Figura 1.2 Architettura generale di UNIX Un primo componente di ogni sistema operativo è quello dedicato alla gestione dei processi, lo scheduler. È compito di questo componente ripartire l uso del processore fra i vari programmi caricati in memoria, in modo tale che lo stesso sviluppi un insieme di processi contemporaneamente, dando l illusione che ciascuno di essi sia eseguito su un diverso processore virtuale. 10

11 Un ulteriore componente del S.O. è dedicato alla gestione della memoria principale. Per consentire l evoluzione concorrente di un insieme di processi, è necessario che i corrispondenti programmi siano allocati in memoria principale per essere eseguiti. Il S.O. astrae per ogni processo una memoria virtuale, in modo da garantire a ciascuno una propria porzione di memoria (virtuale), con uno spazio di indirizzi (virtuali), e garantisce inoltre accesso e protezione. La gestione dei dispositivi periferici costituisce un ulteriore componente del S.O.. Il S.O. garantisce un corretto accesso ai dispositivi da parte dei processi, evitando possibili interferenze legate alla competizione per il loro uso. Altro compito del S.O. sui dispositivi I/O sta nel mascherare la complessità e la diversità dei vari dispositivi hardware. Esso, infatti, fornisce agli utenti una facile interfaccia per operare su tali dispositivi. Ultimo componente è il file System, linguaggio tramite il quale l utente si interfaccia con il sistema, che garantisce organizzazione, accesso e recupero dei file. Il S.O. ha una parte centrale chiamata Kernel che risiede in memoria principale e contiene tutte le funzioni più utilizzate da S.O.. Il Kernel possiede tante unità centrali quanti sono i processi (processori virtuali), non possiede meccanismi di interruzione e possiede istruzioni di sincronizzazione e scambio di messaggi tra processi che operano sui processori virtuali. Figura 1.3 Kernel tradizionale di UNIX 11

12 Qualunque richiesta di servizio di sistema deve essere inoltrata al kernel attraverso una system call. L esecuzione di una system call, da parte di un processo utente, corrisponde all attivazione di una parte del kernel a favore dello stesso processo, per espletare il servizio. Quando il Kernel, o parte di esso, viene eseguito a favore di una chiamata di sistema, si dice che tale processo viene eseguito in kernel mode. Una volta espletato il compito, il processo utente ritorna nello stato di user mode. La transizione dello stato da user mode a quello di kernel mode viene effettuata mediante la chiamata di una delle system call. La transizione inversa avviene all atto della chiamata di return() della system call stessa. Al programma utente le trap 2 (interruzioni software) appaiono come delle normali funzioni di libreria. Nel tempo sono stati proposti vari modelli strutturali cui fare riferimento per organizzare il kernel di un sistema. Essi sono: 1. Architettura monolitica; 2. Architettura modulare; 3. Architettura a microkernel System Calls Come già esposto, quando un processo vuole eseguire un compito come allocazione in memoria, lettura, scrittura, invio dati e molte altre operazioni, è necessario usare le system call. Esse possono essere effettuate direttamente dall applicazione o indirettamente attraverso un framework 3, come il framework Cocoa su Mac OS X. Le applicazioni utente non hanno accesso diretto all hardware o alle strutture del sistema operativo pertanto hanno bisogno di uscire dai confini del proprio spazio di indirizzamento per invocare una chiamata di sistema. Una volta invocata la system call il controllo passa dall applicazione utente al kernel. Il trasferimento del controllo al kernel viene generalmente eseguito con l ausilio della CPU (Central Processing Unit). 2 Eccezione di natura software generata da un istruzione non lecita. Una trap è un interruzione sincrona (interna) e si distingue da l interruzione asincrona (esterna, non prevedibile in sede di programmazione). 3 Supporto software che include librerie e codice che interagisce con l utente indipendentemente dall applicazione in cui appartiene. 12

13 Il kernel è un processo privilegiato ed ha la capacità di eseguire operazioni che non sono disponibili per i processi utente, ma sono necessari per la configurazione del sistema. Quando il controllo viene trasferito al kernel, a seguito di una system call, la CPU entra in modalità privilegiata, mentre il codice del kernel viene eseguito e poi discende ai privilegi limitati prima di tornare all applicazione utente. Poiché il kernel esegue ad un livello Figura 1.3 Esempio di una chiamata di sistema privilegiato, durante l esecuzione di una chiamata di sistema per conto di un processo utente, c è il pericolo che ciò provochi inavvertitamente una violazione della sicurezza. Tale situazione potrebbe accadere se il kernel fosse indotto a svolgere un compito vietato al processo utente, come ad esempio è l apertura di un file di cui non si dispongono le autorizzazioni. Per evitare che accada, ogni volta che il kernel esegue una richiesta per conto di un processo utente, è necessario fare attenzione a convalidare i parametri forniti dal processo e vedere la loro validità. 1.2 Architettura monolitica Nell architettura monolitica un sistema operativo è costituito da un unico programma, senza particolari suddivisioni in moduli distinti. Tale semplice struttura ha lo scopo di fornire la massima funzionalità utilizzando il minimo spazio. Il kernel è inteso come un interfaccia virtuale di alto livello sull hardware sottostante che, tramite l uso di system call, implementa i servizi necessari in diverse procedure che girano in modalità supervisore. In questo tipo di architettura ogni componente può comunicare con tutti gli altri. 13

14 Il kernel racchiude tutte le funzioni del sistema operativo, permettendo un elevata velocità di accesso alle procedure. Figura 1.4 Esempio di architettura monolitica Punti di debolezza sono le difficoltà che si riscontrerebbero qualora si volesse modificare il sistema operativo e le difficoltà di implementazione, in quanto non si può aggiungere un nuovo dispositivo hardware senza aggiungere il relativo modulo al kernel. Un esempio di sistema monolitico è l MS-DOS. 1.3 Architettura modulare Le architetture modulari suddividono il sistema in componenti (moduli), ciascuno dei quali è fornire una delle funzionalità del sistema ed è costruito sopra gli strati inferiori. Ogni modulo è caratterizzato da una ben precisa interfaccia, che specifica la funzionalità offerta e il modo di utilizzarla, e da un corpo, non visibile all esterno, contenente l implementazione del modulo. Con questo approccio, ogni modifica all implementazione del modulo che Figura 1.5 Esempio di architettura modulare mantiene inalterata la sua interfaccia, non ha nessuna influenza sul resto del programma. Tale architettura meglio riflette il concetto di modularità e di facilità di gestione poiché ogni modulo fornisce un servizio ai moduli superiori. 14

15 Unix utilizza un architettura modulare e distingue i moduli in due categorie: 1. Interfaccia: specifica le funzionalità offerte e il modo in cui utilizzarle 2. Corpo: contiene l implementazione del modulo. Lo svantaggio è l efficienza, poiché ogni richiesta ai livelli inferiori deve passare sempre dai livelli più alti e quindi c è un aumento dell overhead Architettura a microkernel Il terzo modello utilizzato per lo sviluppo dei sistemi operativi è l architettura a microkernel, che risale agli anni 90 ed è la più recente. In essa quasi tutte le funzionalità del kernel sono spostate nello spazio utente. Ciò alleggerisce il lavoro del sistema operativo, poiché la maggior parte delle funzionalità vengono eseguite in maniera utente. Figura 1.6 Esempio di architettura a microkenel Nel kernel risiede solo una piccola parte del codice che si occupa della sincronizzazione tra/dei processi ed della gestione della memoria. Gli altri moduli (scheduling, file system, I/O, ) girano nello spazio utente e comunicano tra loro attraverso un meccanismo di comunicazione tra processi, gestito dal kernel. Al vertice dell architettura c è sempre l interfaccia, rappresentata dalle system calls, che offre i servizi del sistema operativo ai programmi applicativi. Le comunicazioni tra i vari moduli del sistema operativo avvengono tramite uno scambio di messaggi tramite client-server. 4 L overhead è un parametro temporale che rappresenta il tempo medio necessario alla CPU per eseguire moduli del kernel. 15

16 I processi di sistema sono indicati come server; i processi client accedono ai servizi offerti dal server attraverso i meccanismi di IPC (Interprocess communication). Supponiamo che un programma voglia aprire un file: nel caso monolitico, esso contatterà il kernel attraverso una system call, il kernel farà le sue operazioni e rimanderà il risultato al chiamante. Con l architettura a microkernel, invece, il programma comunicherà al server del file system la sua intenzione di aprire un file; il server, se necessario, contatterà a sua volta altri server e, una volta terminato il suo compito, invierà una risposta al programma chiamante. Quindi la IPC è la principale funzione fornita da un microkernel ed essa può facilmente diventare un collo di bottiglia di questi sistemi. Tornando all esempio di prima, con un kernel monolitico l apertura di un file richiede una sola chiamata di sistema, mentre con un microkernel sono necessarie almeno due IPC, quindi almeno due system call. Alla luce di quanto già detto, i sistemi a microkernel introducono overhead maggiore rispetto al caso monolitico, ma hanno anche numerosi vantaggi: interfaccia uniforme, modularità, flessibilità, estensibilità, semplicità e manutenzione. La progettazione dei microkernel impone una interfaccia uniforme alle richieste da parte dei processi. I processi non devono fare distinzione fra servizi livello kernel e servizi a livello utente, perché ogni servizio è fornito tramite le IPC. Inoltre, l architettura è di facile estensibilità, in quanto la modifica o l aggiunta di funzionalità richiede la modifica o l aggiunta di processi applicativi (server), non del kernel. Altra caratteristica legata all estensibilità dell architettura a microkernel è la flessibilità, in quanto il sistema può essere utilizzato per scopi diversi. Nuove funzionalità possono essere aggiunte, mentre funzionalità non necessarie possono essere rimosse, senza alterare le altre strutture. La portabilità consente di trasferire il sistema su un nuovo processore, in quanto la maggior parte del codice dipende dall hardware che è nel microkernel. Altro aspetto significante è l affidabilità, un microkernel più piccolo può essere testato rigorosamente. 16

17 1.4.1 Progettazione del microkernel Il microkernel deve contenere le funzioni che dipendono dall hardware, quelle necessarie per supportare i server e le applicazioni in modalità utente. Queste funzioni cadono nelle categorie generali di: gestione della memoria, comunicazione tra processi, gestione degli interrupt e dell I/O. Il microkernel controlla il mapping 5 tra la memoria virtuale e la memoria fisica e implementa meccanismi di protezione; il resto della gestione della memoria è implementato all esterno. Un possibile set minimo di funzioni per la gestione della memoria offerte dal microkernel sono: 1. Grant: un processo può concedere alcune sue pagine ad un altro processo. Il kernel rimuove queste pagine dallo spazio di indirizzamento del proprietario e le assegna al processo ricevente. 2. Map: un processo può mappare qualunque sua pagina nello spazio di indirizzamento di un altro processo, in modo che entrambi hanno accesso alle pagine; ciò crea condivisione di memoria fra due processi. Il Kernel mantiene l assegnazione delle pagine al proprietario originale e permette all altro processo di accedervi. 3. Flush: un processo può chiedere indietro qualunque pagina abbia concesso o mappato su di un altro. Il meccanismo di base per la comunicazione tra processi si fonda sullo scambio di messaggi. Figura 1.7 Esempio di comunicazione interprocesso Il messaggio è composto da un header, contenente mittente e destinatario) e da un corpo, che contiene i dati da trasferire. Tipicamente, si può pensare alla comunicazione interprocess come basata su porte associate ai processi: una porta è, essenzialmente, una coda di messaggi destinati ad un particolare processo, a cui si associa una lista di 5 Il mapping consiste nella traduzione degli indirizzi virtuali in indirizzi fisici. 17

18 accessibilità che indica quali processi possono comunicare con con esso. L identità della porta e l accessibilità su di essa sono amministrate dal kernel. Il microkernel riconosce gli interrupt, ma non può gestirli, esso genera un messaggio per il processo a livello utente associato a quell interrupt e lo invia al processo correttamente associato all interrupt. La trasformazione degli interrupt in messaggi deve essere effettuata dal microkernel, ma questo non è coinvolto nella gestione degli interrupt specifica dei dispositivi. I driver possono essere implementati come processi esterni che attendono messaggi dalle periferiche e colloquiano attraverso I/O memory mapped. 6 6 Tecnica che assegna ad ogni periferica I/O un indirizzo di memoria, in modo che essa risulta mappata in memoria. Altra tecnica è I/O mapped, in questo caso per le periferiche vengono utilizzati indirizzi ed istruzioni specifiche, distinte da quelle della memoria. 18

19 Capitolo 2 Mac OS X Overview Nel giugno del 2000 Jobs, sul palco del MacWorld Expo, presenta una versione dimostrativa pienamente funzionante di Mac OS X, il nuovo sistema operativo consumer di Apple, la cui uscita era prevista nel La presentazione è particolare perché, per dimostrare al meglio le capacità del nuovo sistema operativo. Jobs avvia una applicazione appositamente difettata chiamata Bomb. Al contrario di quanto faceva Mac OS 9, che in caso di crash di una applicazione costringeva al riavvio di tutto il sistema, Mac OS X chiude semplicemente l applicazione andata in crash, lasciando inalterate le altre già in esecuzione grazie alle tecnologie per la memoria protetta incluse nelle sue fondamenta. Oltre a questo, Mac OS X presenta finalmente un multitasking. Anche l interfaccia è cambiata, presentandosi com è in parte conosciuta ancora oggi: Aqua. Icone nuove, finestre totalmente rifatte nel look, animazioni e trasparenze. Ancor più importante di ciò è la presenza della dock 7, grande eredità di NeXTSTEP e OpenSTEP, che adesso sfoggia un aspetto moderno e ancor più funzionale di prima. Possiamo proprio dire che Mac OS X è un mix di varie tecnologie che differiscono non solo in ciò che fanno, ma anche nella provenienza, nella filosofia che rappresentano e nel modo in cui sono implementate. All utente finale, tuttavia, il Mac OS X si presenta con un immagine coesa e consistente. Il fatto che i computer Apple abbiano una base hardware limitata e ben definita ne ha sicuramente aiutato il successo, a fronte di una forte efficienza ed ottima implementazione di alcuni codici driver propri dell hardware. 7 Funzionalità dell'interfaccia grafica di alcuni sistemi operativi che serve ad eseguire programmi e funzionalità del sistema e a passare agevolmente tra le applicazioni in esecuzione. 19

20 Da un punto di vista high-level, il Mac OS X può essere considerato come composto da tre classi di tecnologie: quelle originarie di Apple, quelle originate all interno della NeXT e quelle originate in qualunque altro posto ; quest ultimo consiste principalmente di software open source di terze parti. L utente finale rimane il maggior beneficiario, potendo contare su una varietà di software mai vista su una singola piattaforma. Il Mac OS X fornisce i benefici di un tipico sistema UNIX mantenendo la tradizionale facilità d uso del Macintosh. Il suo ambiente UNIX è sufficientemente conforme allo standard da garantire la portabilità della maggior parte dei software, molti altri programmi non-unix (come Microsoft Office o Adobe Creative Suite) sono disponibili in modo nativo per Mac OS X, per non parlare poi della varietà di programmi propri di Apple. 2.1 Mac OS X Mac OS X è il primo ad avere un kernel Unix-like, noto come XNU ( XNU is Not Unix ), ottenuto dall unione del kernel Mach e del kernel BSD (Berkeley Software Distribution). Il kernel XNU è alla base anche di un sistema operativo open source di nome Darwin, le cui tecnologie sono riversate su Mac OS X. In definitiva Mac OS X è stato creato combinando: 1. Darwin OS, un sistema operativo libero e completo sviluppato da Apple, con kernel XNU basato sul microkernel Mach, ispirato e ibridato al kernel del sistema operativo BSD. 2. 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. 3. Un'interfaccia grafica, chiamata Aqua, sviluppata da Apple Computer. Il sistema operativo ha avuto il suo primo rilascio commerciale nel È implementato per processori PowerPC G3, PowerPC G4 e PowerPC G5 prodotti da IBM e Motorola (ora Freescale Semiconductors), per processori Intel (probabilmente su tutti i processori con istruzioni SSE2) e per processori ARM Cortex. 20

21 Figura 2.1 Struttura di Mac OS X Mac OS X mantiene transitoriamente, fino al rilascio della versione Leopard per PowerPC, una retro compatibilità 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 A.P.I. Carbon hanno consentito una veloce conversione di molti applicativi da Mac OS 9 a Mac OS X, dando modo di completare la transizione. L'eredità del NeXTSTEP è ancora presente, si nota anche dal fatto che molte primitive iniziano con la sigla "NS" (contrazione di NEXTStep). Le A.P.I. NEXTStep/OpenStep sono state integrate nel sistema operativo nelle A.P.I. Cocoa. Mac OS X è in grado di eseguire direttamente molti programmi per B.S.D. 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 adoperano nativamente il motore grafico Quartz. 21

22 2.2 Darwin Darwin è un sistema operativo che utilizza il kernel XNU ed insieme all interfaccia grafica Aqua, forma Mac OS X. Tale sistema operativo è libero perché distribuito al pubblico con l Apple Public Source License per renderlo open source. Darwin rappresenta una grande quantità di software che l Apple ha riunito da una varietà di fonti come NEXTSTEP e OPENSTEP, Mach, vari flavors di BSD (principalmente FreeBSD). È importante sottolineare che, tutti questi software esterni sono stati integrati nel Mac OS X molto efficacemente, grazie ad importanti modifiche e ottimizzazioni. Anche se è possibile configurare e controllare la maggior parte di tale software così come si farebbe normalmente su un tradizionale sistema UNIX, il Mac OS X mette a disposizione interfacce utente semplificate e più consistenti, che riescono a nascondere la sottostante complessità. Questa efficienza nell adottare tecnologie da diverse fonti, integrandole in modo sinergico, è una delle grandi forze del Mac OS X. L Apple mette a disposizione Darwin come un set di packages, dove ogni pacchetto è un archivio contenente il codice sorgente di una parte del Mac OS X. Il numero di pacchetti presenti varia da release a release. Darwin, come molti kernel moderni segue un approccio ibrido, contenendo caratteristiche sia di un microkernel che di un kernel monolitico. Difatti, segue un approccio da microkernel per quanto riguarda la gestione dei servizi, ma integra nello stesso microkernel ampie porzioni del sistema monolitico per ridurre i tempi dovuti alla IPC. In definitiva, deriva da un unione in stile NeXT di Mach e FreeBSD., ma non è dotato di una struttura a microkernel pura come Mach. Tutte le altre porzioni del kernel dividono lo spazio di indirizzamento con Mach per prevenire un abbattimento delle prestazioni quando le altre parti devono comunicare con esso e permettere anche una maggiore integrazione di tutti i componenti. Oltre ai componenti Mach e BSD, l'interfaccia dei driver funziona tramite un componente chiamato I/OKit. Questo è un modello per la creazione di driver orientato agli oggetti; ciò significa che tutti i driver esistenti per BSD devono essere convertiti per I/OKit prima che possano essere utilizzati da Darwin, ma significa anche che verranno fornite molte caratteristiche che attualmente mancano a BSD. La natura ad oggetti riduce anche il codice ridondante e semplifica lo sviluppo dei driver. 22

23 Riassumendo grossolanamente la relazione fra tutti questi differenti componenti, è possibile affermare che: Mach fornisce l'ambiente per la memoria virtuale e molto del codice di partenza specifico della macchina, I/OKit i driver per le varie periferiche e BSD fornisce le interfacce a tutti i componenti, come il file system, le chiamate di sistema e praticamente tutto ciò di cui hanno bisogno le applicazioni utente. Questa è ovviamente una grossa semplificazione della relazione fra i diversi componenti, ma dovrebbe fornire una vaga idea su come essi si interpolano. 2.3 Kernel XNU Il kernel del Mac OS X si chiama XNU, è ibrido, ovvero basato sull unione del codice del microkernel Mach e del kernel monolitico FreeBSD. Le funzioni primitive e i servizi fondamentali del kernel XNU si basano su Mach 3.0, il quale è stato concepito come un microkernel semplice ed estensibile. Esso riesce ad eseguire il nucleo del sistema operativo come un processo separato, cosa che permette una grande flessibilità (si possono eseguire svariati sistemi operativi in parallelo sul microkernel Mach), ma nel contempo riduce le prestazioni a causa del context switch 8 tra Mach ed altri sistemi operativi. Come già detto, XNU ha un architettura a strati, costituita da tre componenti principali ed altre 4 componenti secondarie. Mach: lo strato servizio (gestione dei processi, IPC, gestione memoria ); BSD: fornitore primario dell interfaccia di programmazione del sistema; I/O Kit: ambiente per i drivers; Libkern: libreria interna al kernel: Libsa: libreria interna al kernel utilizzata solo all inizio del system start-up; Platform Expert: modulo astrazione hardware; Kernel extension: varie famiglie di I/O Kit; 8 Il context switch è un particolare stato del sistema operativo durante il quale avviene il cambiamento del processo correntemente in esecuzione su una delle CPU. 23

24 Figura 2.2 Componenti principali del kernel XNU Il kernel XNU supporta il caricamento a memoria dinamico 9 nello spazio di indirizzi del kernel a runtime 10. Questo aspetto permette funzionalità extra, come i driver, che possono essere caricati dinamicamente mentre il kernel è in esecuzione; in questo senso possiamo affermare che il kernel di Mac OS X è qualcosa in più di XNU. Il package XNU del Darwin contiene approssimativamente un milione di linee di codice, in cui una metà sono riconducibili al BSD ed un terzo al Mach. Le varie estensioni del kernel, non tutte sono necessarie o caricate in un dato sistema, formano nell insieme un altro milione di linee di codice. Il numero di kernel extensions caricate in un certo momento in un dato sistema, sono significativamente meno di quelle presenti nel sistema. 9 Consente ad un processo di caricare e scaricare le sue parti dal disco quando serve a runtime 10 Indica a tempo di esecuzione, ovvero il caricamento in memoria è effettuato durante l esecuzione del kernel e non in fase di compilazione. 24

25 2.4 Mach Se il kernel di XNU è il cuore di Mac OS X, allora il Mach può essere considerato il cuore di XNU. Mach fornisce servizi di basso livello che sono trasparenti alle applicazioni. Figura 2.3 Servizi del livello Mach e BSD Tali servizi sono: Astrazione hardware (nasconde le differenze tra architettua a x32 e x64) ; Meccanismi di IPC; Gestione del processore (scheduling ed SMP (Symmetric multiprocessing)); Mutitasking (supporto ai task ed ai threads); Gestione della memoria virtuale (incluso il paging, la protezione e la condivisione); Supporto real-time; Console I/O. Il microkernel Mach trasferisce il codice BSD all esterno, in tale modo il codice specifico Unix viene eseguito come server in modalità utente permettendo di rimpiazzare BSD con un altro sistema operativo e/o di eseguirne altri simultaneamente. 2.5 BSD Il kernel XNU include molte linee di codice derivanti direttamente da FreeBSD, tale codice per poter funzionare correttamente con Mach ed I/O Kit è stato modificato, pur conservando alcune caratteristiche tipiche dei sistemi BSD. A differenza di Mach, che fornisce solo alcuni servizi fondamentali, il livello BSD si trova tra Mach e le applicazioni utente ed implementa molte funzioni del sistema operativo di base, sulla scorta dei servizi offerti da Mach. Possiamo quindi dire che BSD fornisce le interfacce all utente. 25

26 I servizi forniti dallo strato BSD sono: System calls; Networking: garanzia al sistema di interagire facilmente con altri sistemi, nonché come server, fornendo funzioni base; File System; Supporto al Memory management: facilita l allocazione in memoria grazie all Unified Buffer Cache (UBF); Security: protezione della memoria, garantisce che le applicazioni non interferiscano tra loro e, nel caso di crash di un applicazione, il sistema rimane stabile.; Process and User management: fornisce supporto all utente ed ai processi ( ad esempio la creazione di un processo fork() ); POSIX APIs. 2.6 I/O Kit Come ultimo componente principale di XNU rimane l I/O Kit, che è un framework orientato agli oggetti per i drivers di periferica. L implementazione dell I/O Kit consiste nelle librerie C++ residenti nel Kernel (libkern ed I/O Kit) e un framework per lo spazio utente. Esso fornisce un astrazione hardware del sistema, con dei templete 11 base per molti driver; ciò rende semplice l implementazione di un nuovo hardware, in quanto gran parte delle sue funzionalità le erediterà da altre classi di driver base, consentendo un grande riutilizzo del codice. L I/O Kit mantiene un database noto come I/OCatalog, cheè un registro di tutte le classi disponibili in I/O Kit. Un altro database, l I/ORegistry, traccia delle istanze degli oggetti dell I/OCatalog. Gli oggetti dell I/ORegistry rappresentano in genere driver o classi di supporto e sono strutturati in maniera gerarchica, che rispecchia il modo in cui i dispositivi hardware sono collegati fisicamente tra loro. Un esempio è un dispositivo USB, esso è un figlio del controller USB cui è collegato. 11 Struttura generica o stardard. 26

27 L I/O Kit si basa su tre concetti principali: Famiglie Driver Nodi Le famiglie rappresentano astrazioni comuni per determinati dispositivi. Ad esempio IOUSBFamily, gestisce molti meccanismi per il sostegno dei dispositivi USB. I driver sono responsabili della gestione del dispositivo ed esso può avere una corrispondenza con una o più famiglie. Sempre nel caso di una periferica USB, il driver può dipendere dall IOUSBFamily, così come IOStorageFamily. I nodi sono punti di accesso per un canale di comunicazione fisico o logico. 2.7 Altre componenti di XNU Libreria libkern La libreria libkern, a differenza di Mach e BSD che forniscono API per interagire con il sistema, offre i servizi necessari ai driver ed alle classi utili allo sviluppo di software per il kernel. Queste sono alcune funzioni che si trovano in libkern: Allocazione, costruzione e distruzione dinamica di oggetti (esempio gli operatori new() e delete() ). Classi speciali come OSObject, superclasse che gestisce tutto l I/O Kit. Implementazioni di funzioni classiche del C : printf(), scanf(),strtol(),. Funzioni come OSMalloc(), per allocazione di memoria e primitive di sincronizzazione. Libkern fornisce anche una serie di classi, la più importante delle quali è OSObject, che è considerata la superclasse di tutto l/o Kit 27

28 2.7.2 Libreria libsa La libreria libsa è una libreria di supporto utilizzata durante le fasi dell avvio del sistema per caricare le estensioni del kernel, che si comporta come un linker 12. Le estensioni di OS X sono normalmente caricate su richiesta, attraverso il daemon 13 dello spazio utente kextd. Durante le prime fasi del bootstrap kextd non è disponibile Platform expert Il Platform Expert è un oggetto, essenzialmente un driver specifico della motherboard, che conosce il tipo di piattaforma su cui sta girando il sistema. Esso gestisce l enumerazione e il rilevamento del dispositivo per il bus di sistema ed è inoltre responsabile della costruzione dell I/O Kit albero, scopre le periferiche collegate al bus e così via Kernel extensions Il kernel XNU, come già detto, supporta il caricamento in memoria dinamico. Ciò permette di avere funzionalità extra, come i driver, che può essere caricato e smontato mentre il kernel è in esecuzione. Oltre ai driver, l ambiente del kernel Mac OS X include delle estensioni che possono essere caricate dinamicamente quando necessarie. Molte delle estensioni standard sono indirizzate all I/O Kit. 12 Programma il collegamento (linking) tra la traduzione del codice sorgente in linguaggio macchina (codice oggetto) e le librerie del linguaggio necessarie alla carretta esecuzione. 13 Programma speciale eseguito in background, senza l intervento dell utente. 28

29 2.8 Hight-Level layers La tesi nello specifico tratta i low-level layers (strati di basso livello), ma è doveroso accennare i livelli superiori dell architettura che hanno caratterizzato la storia del sistema Mac OS X Application services Nello strato dell application services il più importante è il sistema grafico. Il cuore grafico è composto da una tecnologia denominata Quartz utilizzata in Mac OS X per la grafica in 2D, OpenGL per il 3D ed Apple QuickTime per la multimedialità. Apple ha fortemente incoraggiato gli sviluppatori all uso della tecnologia Quartz come valor aggiunto ai sistemi Mac OS X. Quartz svolge il ruolo di window server e di rendering 2D indipendentemente dal dispositivo utilizzato, basandosi su un modello bidimensionale indipendente dalla piattaforma PDF (Portable Document Format). Quartz si può definire come la rappresentazione della terza generazione di sistemi grafici, dopo la scrittura del pixel e l impiego di funzioni di basso livello. Tale tecnologia utilizza vettori grafici e funzioni matematiche per la manipolazione degli elementi grafici. OpelGL viene utilizzato da Apple per il rendering in tre dimensioni, attenendosi ad uno standard che consente una grande portabilità del codice scritto. QuickTime svolge il ruolo di potente motore multimediale per l apertura e la memorizzazione di file audio, video, animazioni, grafici. Il pacchetto è disponibile per un considerevole numero di piattaforme ed è in grado di gestire innumerevoli formati. Tutto questo permette di rendere l interfaccia grafica Aqua particolarmente semplice, piacevole e potente, secondo la tradizione Apple. La componente che mette in comunicazione il layer application services con il layer API è il Carbon Core. Il Carbon Core sono delle librerie dinamiche 14 scritte in linguaggio C, che permettono l esecuzione dei programmi Mac OS più datati. Successivamente parleremo del layer API, tale livello permette l esecuzione dei programmi scritti per sistemi Mac OS. 14 Nel collegamento dinamico le componenti di una libreria sono caricate nel programma a tempo di esecuzione piuttosto che essere collegate dal lineker. Esse restano separate dall eseguibile e contenute in un file separato. 29

30 2.8.2 API La maggior parte delle applicazioni si collocano nel livello API che viene anche chiamato Application Environments Layer. Mac OS X ha diversi ambienti applicativi ed a ciascuno offre delle API per sviluppare. Alcune delle API più importanti offerte a questo livello sono: BSD API: l ambiente applicativo BSD in Mac OS X è molto simile, ma non uguale, al tradizionale livello utente basato su UNIX. È possibile usare l ambiente BSD per strumenti di scrittura e script di shell. Carbon: sono le API contenute in OS X che consentono ai programmi scritti per i sistemi precedenti a Mac OS X di funzionare sul nuovo sistema operativo tramite piccole modifiche. Se l applicazione fosse scritta senza Carbon allora necessiterebbe di Classic. Classic: il suo compito è quello di emulare OS 9 in modo da eseguire applicazioni pre OSX (dunque senza Carbon) su macchine con OSX. Il nome identifica anche l ambiente Classic Cocoa: è l ambiente di programmazione orientato agli oggetti incluso in OSX. Le applicazioni basate su Cocoa sono sviluppate tramite linguaggi come Objective-C, AppleScript, C++, Objective-C++, Java e Python. Le applicazioni Cocoa sono native per OSX.. Cocoa è una raccolta di API e un insieme di strumenti visive che sono particolarmente utili per la modellazione dei dati. 30

31 Capitolo 3 Il kernel XNU In questo capitolo sono trattati gli aspetti interni al kernel, su cui è stato sviluppato il Mac OS X di Apple e gli aspetti caratterizzanti del sistema. In particolare, la trattazione riguarderà principalmente il microkernel Mach ed il sottosistema BSD, la gestione dalla memoria, lo scheduling e l IPC. 3.1 Mach Il Mach è stato progettato come un kernel per sistemi operativi orientati alla comunicazione con pieno supporto al multiprocesso. Nell idea degli sviluppatori dovrebbe essere un microkernel in cui i tradizionali servizi del sistema operativo (come il file system, l I/O, i gestori della memoria, i networking, etc.) sono residenti nello spazio utente, con una chiara e logica separazione modulare tra loro ed il kernel. Il Mach fornisce un interfaccia di macchina virtuale agli altri strati creando un astrazione dell hardware di sistema. Pensato per essere semplice ed estensibile, il cuore del kernel Mach fornisce un meccanismo IPC che è il fondamento per una moltitudine di servizi da esso offerti. In particolare, l unione dell IPC e del sottosistema della memoria virtuale porta a varie ottimizzazioni ed esemplificazioni. Tutte le componenti del kernel del Mac OS X risiedono in un singolo spazio di memoria kernel. Questa caratteristica ne agevola le prestazioni: è molto più veloce per effettuare una chiamata diretta tra i componenti. 31

32 Il Mach ha cinque astrazioni base dal punto di vista del programmatore: Task; Thread; Porte; Messaggi; VM Object Task e Thread Mach fa distinzione tra task e thread. Un task è un ambiente di esecuzione statica, cioè non compie alcuna computazione da solo, ma fornisce una struttura nella quale le altre entità eseguono (thread). Il task è considerato come un resource container, infatti esso contiene una collezione di risorse come: accesso ai processori, memoria virtuale, IPC, gestori delle eccezioni, descrittori dei file, stato della protezione, stato della gestione e statistiche. Un thread è, invece, l entità di esecuzione nel Mach, esso esegue all interno di un task e possiede dei propri registri, quali: program counter 15, uno stack e registri del processore. I thread sono spesso chiamati processi leggeri, ad indicare il fatto che possiedono poche informazioni di stato, e sono quindi veloci da creare, distruggere ed interrompere. Il thread ha le seguenti proprietà: Il codice eseguito da un thread risiede nello spazio di indirizzi del proprio task. Tutti i thread interni ad un task condividono le risorse del task. In particolare, poiché tutti i threads condividono la stessa memoria, un thread può sovrascrivere la memoria di un altro, senza la necessità di ottenere nessun privilegio aggiuntivo. Un thread può avere il proprio gestore delle eccezioni (excpetion handler 16 ). Ogni thread ha un proprio stato di computazione, che include i registri del processore, un program conter ed uno stack. Notiamo che nonostante lo stack di un thread sia indicato come privato, esso risiede nello spazio di indirizzi di tutti gli altri threads appartenenti allo stesso stack. Di conseguenza, per quanto detto, ogni thread può accedere agli stacks degli altri threads dello stesso task. 15 Registro che contiene indirizzo all'istruzione che dovrà essere successivamente eseguita. 16 Meccanismo hardware per la gestione delle interruzioni. 32

33 Ricapitolando: un task è passivo, con risorse proprie e costituisce l unità base della protezione; un thread è attivo, esegue istruzioni ed è l unità base del controllo di flusso. Un task è considerevolmente più costoso da creare o distruggere di un thread Porte Tutte le funzioni IPC sono svolte attraverso i concetti di porte e messaggi. Le primitive per lo scambio dei messaggi sono fondamentali: con esse, infatti, i task (o i thread) possono comunicare con il kernel, tant è vero che quasi tutte le funzioni di Mach si basano sulle funzioni di send() e recive(). Una porta è un canale di comunicazione; in particolare, è una coda di una determinata lunghezza, gestita e protetta dal kernel. Le operazioni di base su una porta sono la send() e la recive() di messaggi: spedire ad una porta permette ad un task di mettere i messaggi nella coda sottostante, mentre ricevere su una porta permette al task di recuperare i messaggi dalla coda. Per poter accedere ad una porta, i task ed i thread devono possedere determinati diritti su di essa (port right). Esistono tre tipi di diritti: lettura (recive right), scrittura (send right) e scrittura singola (send once right). Il diritto di lettura è esclusivo: per ogni porta, può esserci un solo ricevente, solo un task può leggere i messaggi in arrivo; il diritto di scrittura, al contrario, può essere posseduto da parecchi task. Quando si parla di un messaggio inviato ad un task, s intende che il messaggio è spedito alla porta il cui task possiede i diritti di ricezione. Il messaggio viene poi rimosso dalla coda da un thread interno al task ricevente. Figura 3.1 Diritti sulle porte 33

34 3.1.3 Messaggi I messaggi possono essere spediti e ricevuti attraverso la famiglia di funzioni mach_msg. Un messaggio Mach nel Mac Os X è così formato: Header: contiene tutte le informazioni di controllo del messaggio. Body: contiene dei dati utente o dati del kernel. Trailer: contiene gli attributi del messaggio. Un messaggio può essere semplice o complesso. Un messaggio semplice contiene un header immediatamente seguito dal body, mentre un messaggio complesso un body strutturato. Porte e messaggi si prestano bene anche ad astrarre alcuni meccanismi di livello più basso, come gli interrupt e le porte hardware. Figura 3.2 Dipendenza grafiche delle librerie di mach_msg 34

35 3.2 BSD In Mac Os X, lo strato BSD è in esecuzione con il processore in modalità privilegiata e non come un task utente, come originariamente era previsto dal progetto Mach; inoltre, viene eseguito nello spazio di indirizzamento del Mach e I/O Kit. Ricordiamo i servizi offerti dallo strato BSD: System calls; Networking: garanzia al sistema di interagire facilmente con altri sistemi, nonché come server, fornendo funzioni base; File System; Supporto al Memory management: facilita l allocazione in memoria grazie all Unified Buffer Cache (UBF); Security: protezione della memoria, garantisce che le applicazioni non interferiscano tra loro e, nel caso di crash di un applicazione, il sistema rimane stabile; Process and User management: fornisce supporto all utente ed ai processi ( ad esempio la creazione di un processo fork() ); POSIX APIs System Calls Quando un applicazione ha bisogno di servizi del file system o desidera accedere alla rete, è necessario effettuare una system call al kernel. Lo strato BSD implementa tute le chiamate di sistema. Quando una system call viene eseguita, il kernel passa da user mode a kernel mode. Questa API, chiamata API system call, è la tradizionale Unix Api per richiamare le funzioni del kernel dallo spazio utente. Ci sono all incirca 200 system call (open, read, fork, write, exec). Lo strato BSD fornisce anche la funzione ioctl(), a sua volta una chiamata di sistema, che è l abbreviazione di controllo I/O, tale funzione viene di solito utilizzata per inviare comandi a driver di periferica. 35

36 3.2.2 Networking Il networking è un sottosistema principale di BSD; quest ultimo gestite molti aspetti delle reti come ad esempio l attuazione di protocolli TCP/IP. Lo stack di rete BSD accetta i dati in uscita da un applicazione, controlla il formato del pacchetto e poi li dirotta verso l interfaccia rete appropriata. BSD implementa anche il firewall 17 IPFW (Ip Firewall), che filtra i pacchetti da/per il computer in base ad un criterio impostato dall amministratore del sistema. Il livello rete di BSD supporta un ampia gamma di protocolli di livello rete e trasporto, tra cui IPv4, IPv6, TCP e UDP. Al livello più alto troviamo anche protocolli DHCP e ICMP. Inoltre, sono presenti altre funzioni relative alla rete come Routing e NAT. Il kernel supporta anche il network extensions attraverso il meccanismo NKE (Network Kernel Extensions). Il NKE supporta il caricamento dinamico e può essere utilizzato per vari scopi, tra i quali: Meccanismi personalizzati di firewall e sicurezza; Supporto per l uso e l aggiunta di nuovi protocolli; Creazione di interfacce di rete virtuali; Creazione di sistemi personalizzati di routing; Un NKE utilizza, in genere, uno dei seguenti meccanismi di filtraggio: Socket 18 filter: consente di inserire dei filtri in varie punti del socket layer per filtrare traffico in ingresso o in uscita. IP filter: consente il filtraggio del traffico Ip. Interface filter: consente di monitorare e modificare il traffico su una specifica rete. Interface KPI(Kernel Programming Interface): è un interfaccia di programmazione per la creazione di nuove reti. 17 Componente hardware e/o di una rete informatiche, utilizzato per accettare, bloccare o mediare il traffico dati. 18 Astrazione software progettata per poter utilizzare delle APLI per la trasmissione e la ricezione di dati attraverso una rete. 36

37 3.2.3 File system Mac OS X ha implementato il VFS (Virtual File System) che è una strato software nel kernel che definisce ed implementa l interfaccia al file system. Esso funge da livello di astrazione per molti tipi di file system, permettendo quindi la loro coesistenza. Il VFS deve saper gestire in qualunque momento tutti i file system attivi. Esso consente il supporto per i nuovi file system per essere facilmente aggiunti come estensioni del kernel tramite l interfaccia di programmazione del kernel VFS, in modo completamente trasparente al sistema operativo. Figura 3.3 Schematizzazione del VFS Ogni volta che un file system è inizializzato compie una registrazione presso il VFS. Questa è un operazione che avviene all avvio del sistema se il supporto file system è direttamente inserito nel kernel. Il risultato della registrazione è quello di rendere il VFS capace di leggere il superblocco del nuovo tipo di file system. È in tale blocco, infatti, che sono memorizzate le informazioni basilari ed in particolare le operazioni specifiche per accederne al contenuto Il kernel supporta una diversa gamma di file system. Il file system primario utilizzato da Mac OS X è HSF+ (Hierarchical File System Plus), che è stato sviluppato come sostituto per i file system HFS di Mac OS. 37

38 Figura 3.4 File system presenti su Mac OS X All interno del file system operazioni su file e directory sono implementate attraverso i vnodes e VOP (vnode operation). Le chiamate VOP vengono utilizzate per operazioni sui singoli file oppure sulle singole directory. Un esempio può essere l apertura o la scrittura di un file: VOP_OPEN e VOP_READ, rispettivamente per aprire e scrivere un file. Per effettuare operazioni di caricamento o smontamento di una periferica si usano le chiamate del VFS. Un esempio è il mount e l umount di una periferica: VFS_MOUNT e VFS_UMOUNT. HSF+ ha il supporto per il journaling, una tecnica usata per preservare l integrità dei dati da eventuali cadute di tensione. Quando un applicativo invia dei dati al file system per memorizzarli su disco, questo prima memorizza le operazioni che intende fare su un file di log ed in seguito provvede ad effettuare le scritture sul disco, quindi registra del file di log le operazioni che sono state effettuate. In caso di crash durante la scrittura del disco, il file system non dovrà fare altro che controllare in file di log per determinare quali operazioni non sono state terminate e quindi sarà in grado di correggere gli errori presenti nella struttura del file system. HFS+ supporta i file di grandi dimensioni, fino a 8EiB (1Exbibyte= ) che è la dimensione massima del volume possibile. Il file system ha il pieno supporto per i caratteri Unicode 19. Il file system NFS fornisce l accesso ai server di rete come se fossero montati in locale ed è quindi molto utilizzato per operazioni di networking. 19 Sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzati. 38

39 3.3 Scheduling In un tipico sistema operativo, un processo rappresenta un programma in esecuzione con le risorse di sistema associate. Il kernel fornisce un illusione d esecuzione concorrente attraverso lo scheduling delle risorse tra i processi. Su un sistema multiprocessore, o multicore, è possibile eseguire più processi concorrentemente. Nei sistemi Unix, l unico modo per creare un nuovo processo è attraverso la chiamata fork() e l unico modo di far girare un nuovo programma in un processo è attraverso la chiamata di sistema exec(). Il Mach astrae alcune strutture importanti nel sottosistema di processo del Mac OS X: 1. Processor set: (struttura dell insieme dei processori) durante l avviamento del kernel, prima che lo scheduler possa partire, viene inizializzato il default processor set con tutti i processori di sistema. Un oggetto processor set ha due porte che lo rappresentano: la porta name e la porta control. La porta name è un identificatore che può essere utilizzato per recuperare informazioni circa l insieme dei processori. La porta control rappresenta l oggetto sottostante, che può essere utilizzato per eseguire operazioni di controllo. 2. Processors : è la descrizione di un processore fisico (indipendente dalla macchina). Il Mach raggruppa i processors in uno o più processor set, ognuno dei quali con una propria run queque (coda pronta) di task eseguibili, e ogni processore ha una sua coda di esecuzione. Un task contiene una lista dei suoi threads ed un riferimento al relativo processor set. Il sistema di schedulazione Mach si basa sull algoritmo Round Robin 20 con code e livelli di priorità. Ad ogni thread è associata un valore di priorità, compreso tra 0 e 127; il valore viene determinato attraverso la media esponenziale del tempo di CPU precedentemente usato, abbassando la priorità dei thread con precedenti tempi di esecuzione lunghi. Lo scheduler del Mac OS assegna il processore ad ogni thread per un breve periodo di tempo detto quanto (timeslice), dopo il quale schedula un altro thread in attesa di 39

40 esecuzione con priorità maggiore o uguale. Nel caso si presenti un thread con priorità maggiore, quello in esecuzione può essere interrotto prima dello scadere del proprio timeslice, per lasciare il processore al thread prioritario (preemptive scheduling). La priorità viene ricalcolata continuamente e ne vengono distinti quattro tipi, che possono essere assegnati ad un thread. Figura 3.5 Livelli di priorità dello scheduling Ogni coda di esecuzione comprende tre variabili: un mutex, un contatore ed una variabile di supporto scelta. Il mutex viene usato per bloccare la struttura dati e per garantire che solo una CPU alla volta stia gestendo la coda. Il contatore mantiene il numero di threads sulle code, se tale numero è pari a zero non ci sono task da eseguire e viene lanciato un apposito thread d attesa. La terza variabile viene utilizzata come suggerimento su dove trovare il thread a priorità massima migliorando la ricerca nelle code non vuote. Per garantire che non vi siano unità in esecuzione in attesa da molto tempo, starvation, Mach ha un thread interno al kernel che ogni due secondi scansiona le code di esecuzione aumentando di priorità eventuali thread che stanno andando in starvation RR è un particolare algoritmo di scheduling, di tipo preemptive. Esegue i processi nell'ordine d'arrivo, come il avendo la prelazione del processo in esecuzione. 21 Indica quelle condizioni in cui ad un processo a bassa priorità non viene mai assegnata una risorsa. 40

41 3.4 Interprocess communication Nei moderni sistemi operativi, dei semplici programmi possono essere composti da molti threads, i quali devono comunicare tra loro per scambiarsi dei dati o delle informazioni. L interprocess communication (IPC) è un meccanismo ben definito di comunicazione tra due entità. Storicamente le due entità erano i processi, attualmente possono essere anche dei threads di uno stesso task o dei threads di tasks diversi. L IPC può essere utile per le seguenti operazioni: Condivisione dei dati Trasferimento dei dati Condivisione delle risorse Sincronizzazione tra entità I primi meccanismi IPC usavano i files come mezzo di comunicazione. In seguito ci fu l approccio della shared memory (memoria condivisa), dove i processi utilizzavano regioni di memoria comunemente accessibili. Infine, il meccanismo di IPC è diventato un astrazione del sistema operativo. Il Mac Os X fornisce un gran numero di meccanismi IPC, alcuni di questi sono: Mach IPC Mach Exceptions Posix IPC In realtà ci sarebbero molti altri meccanismi di IPC, ognuno dei quali ha dei benefici, difetti e rischi. Un programmatore può aver bisogno di usare un particolare meccanismo, o anche diversi, in base alle richieste del programma. 41

42 3.4.1 Mach IPC Il Mach fornisce una IPC orientata ai messaggi, l implementazione utilizza la Virtual Memory (VM) per trasferire efficientemente grandi quantità di dati. Il kernel Mac OS X usa la primitiva generale del messaggio, fornita dall interfaccia IPC del Mach; le chiamate mach_msg() e mach_msg_overwrite() possono essere utilizzate rispettivamente per inviare ed ricevere messaggi. Come già detto il kernel Mach astrae due oggetti base per la comunicazione IPC: le porte ed i messaggi( par e par ). Il messagging è un operazione molto usata sui sistemi Mach. La funzione del kernel fondamentale del messagging è la mach_ms_overwrite_trap() Mach exceptions Le eccezioni sono delle interrupt inviate alla CPU che si verificano durante l esecuzione di un thread. Un eccezione comporta l interruzione dell esecuzione del thread, mentre il sistema operativo elabora il suo flusso di esecuzione. L attività riprende successivamente con la normale routine. Quando si verifica un eccezione, il kernel sospende il thread ed invia un messaggio IPC ad una porta speciale che gestisce le eccezioni. La seguente struttura incapsula le eccezioni da inviare alla porta speciale. Figura 3.6 Struct per le exceptions Quando un eccezione è stata inviata, il kernel attende il suo completamento, se ritorna KERN_SUCCESS significa che l eccezione è stata gestita correttamente ed il flusso di controllo potrà riprendere. Quando un processo utilizza la chiamata di sistema fork(), il processo figlio erediterà la stessa porta delle eccezioni del padre. 42

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

Architettura di un sistema operativo

Architettura di un sistema operativo Architettura di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Struttura di un S.O. Sistemi monolitici Sistemi a struttura semplice Sistemi a livelli Virtual Machine Sistemi

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 04/05 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione Lezione 4 La Struttura dei Sistemi Operativi Introduzione Funzionamento di un SO La Struttura di un SO Sistemi Operativi con Struttura Monolitica Progettazione a Livelli di un SO 4.2 1 Introduzione (cont.)

Dettagli

Organizzazione Monolitica

Organizzazione Monolitica Principali componenti di un sistema Applicazioni utente Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del processore / Scheduler(s) Gestore della memoria Gestore delle periferiche/

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Introduzione alla Virtualizzazione

Introduzione alla Virtualizzazione Introduzione alla Virtualizzazione Dott. Luca Tasquier E-mail: luca.tasquier@unina2.it Virtualizzazione - 1 La virtualizzazione è una tecnologia software che sta cambiando il metodo d utilizzo delle risorse

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09 SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Dettagli

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Un sistema operativo è un insieme di programmi che consentono ad un utente di INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli

Dettagli

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi Software relazione Hardware Software di base Software applicativo Bios Sistema operativo Programmi applicativi Software di base Sistema operativo Bios Utility di sistema software Software applicativo Programmi

Dettagli

Capitolo 3: Strutture dei sistemi operativi

Capitolo 3: Strutture dei sistemi operativi Capitolo 3: Strutture dei sistemi operativi Componenti del sistema Servizi di un sistema operativo Chiamate del sistema Programmi di sistema Struttura del sistema Macchine virtuali Progettazione e realizzazione

Dettagli

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) I processi Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

CAPITOLO 5 - Sistemi Operativi Moderni

CAPITOLO 5 - Sistemi Operativi Moderni CAPITOLO 5 - Sistemi Operativi Moderni PRESENTAZIONE DI INSIEME Vedremo ora come si è evoluta nel tempo la struttura di un sistema operativo, per passare dalle vecchie strutture di tipo normalmente modulari,

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

Dettagli

Introduzione al sistema operativo. Laboratorio Software 2008-2009 C. Brandolese

Introduzione al sistema operativo. Laboratorio Software 2008-2009 C. Brandolese Introduzione al sistema operativo Laboratorio Software 2008-2009 C. Brandolese Che cos è un sistema operativo Alcuni anni fa un sistema operativo era definito come: Il software necessario a controllare

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

PARTE 4 La Macchina Software

PARTE 4 La Macchina Software PARTE 4 La Macchina Software 94 Macchina Hardware e Macchina Software applicativi sistema operativo macchina hardware Agli albori dell'informatica, si programmava in binario, cioe` in linguaggio macchina,

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Sistemi operativi. Esempi di sistemi operativi

Sistemi operativi. Esempi di sistemi operativi Sistemi operativi Un sistema operativo è un programma che facilita la gestione di un computer Si occupa della gestione di tutto il sistema permettendo l interazione con l utente In particolare un sistema

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 : Un Sistema Operativo è un insieme complesso di programmi che, interagendo tra loro, devono svolgere una serie di funzioni per gestire il comportamento del computer e per agire come intermediario consentendo

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazione Lezione 8 Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato

Dettagli

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di

Dettagli

Reti e Internet: introduzione

Reti e Internet: introduzione Facoltà di Medicina - Corso di Laurea in Logopedia Corso di Informatica III anno Prof. Crescenzio Gallo Reti e Internet: introduzione c.gallo@unifg.it Reti e Internet: argomenti Tipologie di reti Rete

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 1 Sistema software 1 Prerequisiti Utilizzo elementare di un computer Significato elementare di programma e dati Sistema operativo 2 1 Introduzione In questa Unità studiamo

Dettagli

La Gestione delle risorse Renato Agati

La Gestione delle risorse Renato Agati Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

MODULO 02. Iniziamo a usare il computer

MODULO 02. Iniziamo a usare il computer MODULO 02 Iniziamo a usare il computer MODULO 02 Unità didattica 01 Conosciamo il sistema operativo In questa lezione impareremo: a conoscere le caratteristiche del sistema operativo a cosa servono i sistemi

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera CPU Memoria principale Il Sistema Operativo Elementi di Informatica Docente: Giorgio Fumera Corso di Laurea in Edilizia Facoltà di Architettura A.A. 2009/2010 ALU Unità di controllo Registri A indirizzi

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Introduzione al sistema operativo Il file system: file, directory,...

Introduzione al sistema operativo Il file system: file, directory,... ,OVRIWZDUHGLVLVWHPD cosa vedremo: Introduzione al sistema operativo Il file system: file, directory,...... 223,OVRIWZDUHLQWURGX]LRQH L hardware da solo non è sufficiente per il funzionamento dell elaboratore

Dettagli

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA) Il software Software Il software Il software è la sequenza di istruzioni che permettono ai computer di svolgere i loro compiti ed è quindi necessario per il funzionamento del calcolatore. Il software può

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software BDX 3D Editor è un programma che permette di navigare ed editare texture in un qualsiasi modello 3D.E compatibile con i software in grado di esportare

Dettagli

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU Il sistema operativo Sistema operativo Gestione della CPU Primi elaboratori: Monoprogrammati: un solo programma in memoria centrale Privi di sistema operativo Gestione dell hardware da parte degli utenti

Dettagli

Le Infrastrutture Software ed il Sistema Operativo

Le Infrastrutture Software ed il Sistema Operativo Le Infrastrutture Software ed il Sistema Operativo Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Il Sistema Operativo (S0) (Inf.) E' l'insieme dei programmi che consentono

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

Sistemi Operativi di Rete. Sistemi Operativi di rete. Sistemi Operativi di rete

Sistemi Operativi di Rete. Sistemi Operativi di rete. Sistemi Operativi di rete Sistemi Operativi di Rete Estensione dei Sistemi Operativi standard con servizi per la gestione di risorse in rete locale Risorse gestite: uno o più server di rete più stampanti di rete una o più reti

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 5

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 5 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II Lezione 5 Giovedì 19-03-2015 1 Intensità del traffico e perdita dei pacchetti La componente

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Come usare P-touch Transfer Manager

Come usare P-touch Transfer Manager Come usare P-touch Transfer Manager Versione 0 ITA Introduzione Avviso importante Il contenuto di questo documento e le specifiche di questo prodotto sono soggetti a modifica senza preavviso. Brother si

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Introduzione ai sistemi operativi Che cos è un S.O.? Shell Utente Utente 1 2 Utente N Window Compilatori Assembler Editor.. DB SOFTWARE APPLICATIVO System calls SISTEMA OPERATIVO HARDWARE Funzioni di un

Dettagli

Approfondimenti. Contenuti

Approfondimenti. Contenuti Approfondimenti dott. Stefano D. Fratepietro steve@stevelab.net C I R S F I D Università degli studi di Bologna stevelab.net Creative Commons license Stefano Fratepietro - www.stevelab.net 1 Contenuti

Dettagli

ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche

ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche Sommario Definizione di S. O. Attività del S. O. Struttura del S. O. Il gestore dei processi: lo scheduler Sistemi Mono-Tasking e

Dettagli

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi Evoluzione dei sistemi operativi (4) Sistemi multiprogrammati! più programmi sono caricati in contemporaneamente, e l elaborazione passa periodicamente dall uno all altro Evoluzione dei sistemi operativi

Dettagli

IL SOFTWARE TIPI DI SOFTWARE. MACCHINE VIRTUALI Vengono definite così perché sono SIMULATE DAL SOFTWARE, UNIFORMANO L ACCESSO SISTEMA OPERATIVO

IL SOFTWARE TIPI DI SOFTWARE. MACCHINE VIRTUALI Vengono definite così perché sono SIMULATE DAL SOFTWARE, UNIFORMANO L ACCESSO SISTEMA OPERATIVO IL SOFTWARE L HARDWARE da solo non è sufficiente a far funzionare un computer Servono dei PROGRAMMI (SOFTWARE) per: o Far interagire, mettere in comunicazione, le varie componenti hardware tra loro o Sfruttare

Dettagli

3. Introduzione all'internetworking

3. Introduzione all'internetworking 3. Introduzione all'internetworking Abbiamo visto i dettagli di due reti di comunicazione: ma ce ne sono decine di tipo diverso! Occorre poter far comunicare calcolatori che si trovano su reti di tecnologia

Dettagli

Classificazione del software

Classificazione del software Classificazione del software Classificazione dei software Sulla base del loro utilizzo, i programmi si distinguono in: SOFTWARE Sistema operativo Software applicativo Sistema operativo: una definizione

Dettagli

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito) IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Statistics versione 21 con licenza per sito. Questo documento

Dettagli

Lezione 1. Introduzione e Modellazione Concettuale

Lezione 1. Introduzione e Modellazione Concettuale Lezione 1 Introduzione e Modellazione Concettuale 1 Tipi di Database ed Applicazioni Database Numerici e Testuali Database Multimediali Geographic Information Systems (GIS) Data Warehouses Real-time and

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Creare una Rete Locale Lezione n. 1

Creare una Rete Locale Lezione n. 1 Le Reti Locali Introduzione Le Reti Locali indicate anche come LAN (Local Area Network), sono il punto d appoggio su cui si fonda la collaborazione nel lavoro in qualunque realtà, sia essa un azienda,

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Hardware delle reti LAN

Hardware delle reti LAN Hardware delle reti LAN Le reti LAN utilizzano una struttura basata su cavi e concentratori che permette il trasferimento di informazioni. In un ottica di questo tipo, i computer che prendono parte allo

Dettagli

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

FPf per Windows 3.1. Guida all uso

FPf per Windows 3.1. Guida all uso FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete

Dettagli

Sistema di protezione (2) Protezione (1)

Sistema di protezione (2) Protezione (1) Sistema di protezione (1) Sistema di protezione (2) Sistema di protezione (3) - Un processo potrebbe tentare di modificare il programma o i dati di un altro processo o di parte del S.O. stesso. - Protezione:

Dettagli

Sistema di protezione (1)

Sistema di protezione (1) Sistema di protezione (1) - Un processo potrebbe tentare di modificare il programma o i dati di un altro processo o di parte del S.O. stesso. - Protezione: politiche (cosa) e meccanismi (come) per controllare

Dettagli

LINUX. Che cos'e` un sistema operativo?

LINUX. Che cos'e` un sistema operativo? LINUX LINUX Introduzione Una versione completa e affidabile di UNIX Disponibile per PC x86 Intel/AMD e numerose altre piattaforme Strumento (quasi) indispensabile per le esercitazioni Include gli strumenti

Dettagli

Lo scenario: la definizione di Internet

Lo scenario: la definizione di Internet 1 Lo scenario: la definizione di Internet INTERNET E UN INSIEME DI RETI DI COMPUTER INTERCONNESSE TRA LORO SIA FISICAMENTE (LINEE DI COMUNICAZIONE) SIA LOGICAMENTE (PROTOCOLLI DI COMUNICAZIONE SPECIALIZZATI)

Dettagli

Scenario di Progettazione

Scenario di Progettazione Appunti del 3 Ottobre 2008 Prof. Mario Bochicchio SCENARIO DI PROGETTAZIONE Scenario di Progettazione Il Committente mette a disposizione delle risorse e propone dei documenti che solitamente rappresentano

Dettagli

Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene

Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene Sotto il nome OpenOffice.org si nasconde un insieme di programmi per l ufficio potenti

Dettagli

Procedura per la configurazione in rete di DMS.

Procedura per la configurazione in rete di DMS. Procedura per la configurazione in rete di DMS. Sommario PREMESSA... 2 Alcuni suggerimenti... 2 Utilizzo di NAS con funzione di server di rete - SCONSIGLIATO:... 2 Reti wireless... 2 Come DMS riconosce

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

Il sistema operativo TinyOS

Il sistema operativo TinyOS tesi di laurea Anno Accademico 2005/2006 relatore Ch.mo prof. Domenico Cotroneo candidato Giovanni Chierchia Matr. 534 / 804 ::. Obiettivi del lavoro di tesi Studio del sistema operativo TinyOS Studio

Dettagli