Struttura astratta della memoria Memoria centrale… (Quasi) tutto cio’ che “accade” in un sistema di calcolo passa per la memoria centrale • Memoria centrale Load e store per trasferire da memoria a registri della CPU e viceversa – il solo dispositivo di memoria al quale la CPU puo’ accedere direttamente Memoria volatile, ad accesso veloce, dalla capacita’ limitata • Memoria secondaria (di massa) Dal punto di vista OS, si tratta di gestire le possibili sequenze di indirizzi generate per l’accesso a memoria – Estensione della memoria centrale che fornisce grande capacita’ di memoria non volatile Gerarchia dei dispositivi di memoria… 10 nsec … < 1 KB 1 nsec 2 nsec … qualche osservazione memory • Electronic disk e’ accessibile come un file system (volatile o non volatile alimentato a batteria) 1 MB 64-512 MB Volatile • Cache interamente gestite via hardware (ex., next instruction register) Permanente 10 msec 5-50 GB Velocita’ • Movimento tra i vari livelli sia implicito che esplicito •In generale caching e’ l’operazione di copia di informazioni in dispositivi di memoria piu’ veloci (es. la Costo memoria centrale puo’ essere vista come una cache per la memoria secondaria) … e qualche attributo consistenza • Consistenza tra copie dello stesso item in diverse memorie • Coerenza tra diverse cache (in un multiprocessor, per esempio) oppure tra diverse repliche di un file in un file system distribuito coerenza Sistemi Operativi cache 1 Cos’e’ un Sistema Operativo (OS) Un semplice schema… • Un sistema che agisce da intermediario tra l’utente e il computer • Scopi del OS: – Rendere il computer piu’ conveniente all’uso (“user-friendly”) – Utilizzare l’hardware in maniera efficiente Sistemi Operativi 7 Sistemi Operativi … e un dettaglio delle sue componenti 1. Hardware – fornisce le risorse di base (CPU, memorie, dispositivi di I/O). 2. OS – controlla e coordina l’uso dell’hardware fra i vari programmi applicativi 3. Programmi di sistema – definiscono il modo in cui le risorse di sistema sono utilizzate per risolvere i problemi dell’utente (p.es., compilatori, database, fogli elettronici, ecc…) 4. Programmi applicativi – Applicazioni costruite per risolvere specifici problemi (p.es. sistema di prenotazione voli) 8 Sistema operativo è: 1. Allocatore di risorse – un sistema di controllo dispone di risorse hw e sw utili per la risoluzione di problemi. Il S.O. gestisce tali risorse allocandole in base alle necessità definite dai loro compiti, a programmi e a utenti specifici. 2. Programma di controllo – controlla e coordina l’esecuzione dei programmi utente in modo da impedire che vengano commessi errori o che il computer venga utilizzato in modo non corretto. 5. Utenti (persone, macchine o altri computer) – possono utilizzare il sistema com’e’ e/o costruire programmi applicativi Sistemi Operativi 9 Sistemi Operativi 10 I compiti del OS… • Fa da interfaccia per l’utente (convenienza!!!) • Gestisce ed alloca le risorse (efficienza!!!) convenienza kernel … e i suoi “confini” efficienza Kernel – quel programma che e’ sempre in esecuzione sul computer – contiene le funzioni comuni di allocazione e controllo utili a tutti i programmi (es. Controllo dispositivi I/O) Sistemi Operativi 11 Ex: driver di uno scanner Sistemi Operativi 12 2 … e ancora sui confini Breve evoluzione dei sistemi di calcolo e dei relativi OS • Prima generazione 1945 - 1955 • Seconda generazione 1955 - 1965 • Terza generazione 1965 – 1980 • Quarta generazione 1980 – 1995 • Quinta generazione 1995 – oggi – Condensatori, programmazione wired – transistors, sistemi batch – Circuiti integrati, multiprogrammazione – Personal computers attenzione: sottile e’ il confine tra programmi di sistema e OS intero ! Sistemi Operativi – Computer “tascabili” (wireless) Sistemi Operativi 13 Multiprogrammazione: organizzazione di memoria Piu’ job sono tenuti in memoria allo stesso tempo, e la CPU puo’ essere condivisa tra essi 14 Compiti di un OS per multiprogrammazione • Scheduling della CPU (al termine di ogni job) Job pool – struttura dati che permette al OS di selezionare quale job eseguire per accrescere l’utilizzazione della CPU OS delegato a decidere !!! Sistemi Operativi 15 Si condividono risorse, ma non c’e’ ancora interleaving di esecuzione tra i job Vittorio Cortellessa, 2002-2003 Sistemi interattivi e time-sharing… • Idea : rimpiazzare il job che utilizza la CPU con un altro, per esempio quando il primo ha bisogno di I/O (contextswitching) • Prerequisito : strutture dati ed algoritmi piu’ complessi per gestire il time-sharing Sistemi Operativi 17 • Gestione della memoria • Routines di I/O • Allocazione di dispositivi Sistemi Operativi 16 Vittorio Cortellessa, 2002-2003 I concetti… INTERATTIVITA’ • Comunicazione tra l’utente e il sistema: quando il sistema finisce l’esecuzione di un comando passa il controllo all’utente • Possibilita’ per l’utente di accedere a codice e dati TIME_SHARING • La CPU e’ condivisa tra un insieme di job tenuto in memoria • Strategie per : scegliere il job che deve utilizzare la CPU, far entrare e uscire job da questo insieme Sistemi Operativi 18 3 Caratteristiche di un OS per Interattivita’ e Time-Sharing … e una rappresentazione grafica Memoria job1 job2 CPU Scheduling della CPU (anche a intervalli di tempo, non solo quando ci sono operazioni di I/O!!!) • Gestione della memoria (mantenere un insieme di job in memoria, non tutti quelli possibili) • Allocazione di dispositivi in maniera consistente con job5 job3 • il time-sharing job4 UTENTI job6 • Virtualizzazione della macchina SISTEMA DI CALCOLO Sistemi Operativi File System accessibile dall’utente Sistemi Operativi 19 20 Personal Computers Computers dedicati ad un singolo utente • Nuovi dispositivi di I/O – tastiera, mouse, schermi piccoli, piccole stampanti • Maggiore necessita’ STRUTTURE DEI SISTEMI DI CALCOLO di conoscere OS da parte dell’utente (tradeoff!) • Convenienza (facilita’ d’uso) per l’utente • Diversa concezione delle protezioni e condivisioni rispetto a sistemi con multipli utenti Sistemi Operativi Sistemi Operativi 21 22 Caratteristiche generali… Architettura di un sistema di calcolo • Dispositivi di I/O e CPU possono operare allo stesso tempo e competere per l’accesso a memoria (regolato dal controller di memoria, unico nel suo genere) • I controller sono la parte intelligente di un dispositivo • Ogni controller e’ predisposto per un certo tipo di dispositivo • Esso ha registri e buffer locali per gestire le interazioni con le altre parti del sistema • Sistemi Operativi 23 Il device driver e’ la controparte del dispositivo in OS, e cioe’ la parte di OS predisposta a interagire con un certo dispositivo Sistemi Operativi 24 4 … e meccanismi di I/O Mai sentito parlare di Interrupt ?! • La CPU sposta i dati da/a memoria principale a/da buffer del dispositivo • I/O avviene da/a buffer del dispositivo a/da dispositivo • Il controller informa la CPU, mediante un interrupt, che ha finito l’operazione • OS e’ interrupt driven ! • Perche’? – Interrupt regolano le interazioni tra OS e dispositivi e tra OS e programmi utente • Esempi – Un interrupt viene generato dal controller di un disco quando un’operazione di scrittura e’ terminata – Una trap (interrupt generato via software) puo’ essere causata da un errore (ex. divisione per 0) o dalla richiesta esplicita (da parte di un programma utente) di un servizio del OS (system call, ex. mkdir) Sistemi Operativi 25 Sistemi Operativi 26 Spazio di indirizzi determinati da base e limit Memory Protection • Proteggere interrupt vector e codice delle interrupt routines • Due registri che determinano il range di indirizzi leciti di un processo: – base register – il piu’ piccolo indirizzo fisico di memoria lecito del processo – limit register – taglia del range di indirizzi del processo • La memoria al di fuori del range deve essere protetta Sistemi Operativi 27 CPU Protection Regola : Evitare che un processo possa detenere per un tempo illimitato il controllo della CPU Soluzione : un timer che interrompe l’esecuzione dopo un certo tempo e rida’ il controllo a OS (ex. quantum in time sharing) Le istruzioni di manipolazione del timer sono privilegiate Sistemi Operativi 29 Sistemi Operativi 28 Meccanismo per l’esecuzione di istruzioni privilegiate • OS deve sempre mantenere il controllo • Come fa un processo utente ad accedere alle risorse se le istruzioni relative sono tutte privilegiate? System call – il metodo usato da un processo per richiedere un’azione di OS Sistemi Operativi 30 5 Componenti comuni di un OS STRUTTURE DEI SISTEMI OPERATIVI Sistemi Operativi 31 1. Gestione dei processi 2. Gestione della memoria centrale 3. Gestione della memoria secondaria 4. Manipolazione dei file 5. Gestione dell’I/O 6. Sistema di protezione 7. Gestione di rete 8. Interprete dei comandi Sistemi Operativi 1. Gestione dei processi Un processo e’ un programma in esecuzione Un processo utente deriva da un programma eseguito da un utente; un processo di sistema corrisponde ad una routine di OS Un processo ha bisogno di risorse, quali tempo di CPU, memoria, files e dispositivi di I/O per svolgere il suo compito 32 Programma e processo PROGRAMMA f(a,b) begin a := a+5 … … end PROCESSO a b f memoria CPU Carta o file disco Sistemi Operativi 33 Compiti di OS rispetto ai processi Creazione e cancellazione Sospensione e ripristino (scheduling) Sincronizzazione (deadlock) Comunicazione Sistemi Operativi 35 Sistemi Operativi 34 2. Gestione della memoria centrale Memoria : un array di parole o bytes, ognuna con il suo indirizzo • Velocemente accessibile • Di piccola taglia • Volatile • Condivisa tra la CPU e i dispositivi di I/O Sistemi Operativi 36 6 Compiti di OS rispetto alla memoria Tenere traccia di quali parti della memoria sono correntemente usate e da chi Decidere quali processi caricare da disco quando diventa disponibile spazio di memoria 3. Gestione della memoria secondaria La memoria secondaria serve da backup per la memoria centrale (troppo piccola e volatile per conservare informazioni in maniera permanente) Allocare e deallocare spazio di memoria quando necessario In genere si tratta di dischi, aventi caratteristiche proprie quali la velocita’ di accesso, la capienza, etc… Sistemi Operativi Sistemi Operativi 37 38 4. Manipolazione dei file Compiti di OS rispetto alla memoria secondaria Un file e’ una collezione di informazioni (in qualche modo in relazione tra esse) definita dal suo creatore Gestione dello spazio libero Un file comunemente contiene o Allocazione della memoria programmi o dati o altri file (directory) Scheduling delle richieste Il file e’ lo strumento di astrazione dalle memorie secondarie Sistemi Operativi Sistemi Operativi 39 Compiti di OS rispetto ai file 5. Gestione dell’I/O • Sistema di buffering, caching e spooling – Buffering : preparare i dati di I/O in predisposti registri e aree di memoria – Caching : conservare in memorie veloci i dati usati piu’ di frequente per I/O – Spooling : virtualizzazione dei dispositivi di I/O mediante uso di aree di memoria per caricare e scaricare informazioni • Driver per ogni tipo di dispositivo : routine di I/O che colloquia con il controller del dispositivo • Interfaccia generale per i driver : programma che si invoca per iniziare qualsiasi operazione di I/O Creazione e cancellazione di file/directory Primitive per la manipolazione (open, read, etc.) Mapping di file a dispositivi di memoria Backup di files su dispositivi appositi Sistemi Operativi 41 40 Sistemi Operativi 42 7 6. Sistema di protezione Una risorsa e’ un’entita’ passiva, quindi non e’ in grado di proteggersi da sola contro usi impropri ed errori Compiti di OS per la protezione Distinguere tra usi/utenti autorizzati e non Specificare i controlli da imporre Piu’ in generale un sistema di protezione si occupa di controllare gli accessi di programmi, processi, utenti a OS e risorse Sistemi Operativi 43 Fornire un meccanismo per il rispetto dei vincoli imposti dalle protezioni Sistemi Operativi 7. Gestione di rete Un sistema distribuito e’ una collezione di “elaboratori” (possibilmente non omogenei tra loro) che non condividono memoria e clock, e che sono collegati mediante una rete di comunicazione 44 Compiti di OS per una rete Fornire accesso alle risorse di rete da parte degli utenti Velocizzazione dell’esecuzione Maggiore disponibilita’ di informazioni Maggiore affidabilita’ Sistemi Operativi 45 Un esempio di Local Area Network Sistemi Operativi 46 8. Interprete dei comandi (shell) La shell e’ il programma che si occupa di accettare, interpretare ed eseguire il prossimo comando L’insieme di comandi costituisce il linguaggio di colloquio tra utente e OS Piu’ o meno facili e user-friendly shell, a seconda di OS Sistemi Operativi 47 Sistemi Operativi 48 8 Esempio : UNIX shell Riassumendo quindi… Servizi comuni di un OS : convenienza • Esecuzione di programmi • Operazioni di I/O • Gestione del File System • Comunicazioni • Rilevamento di errori mkdir cp kill … lpr chmod Funzioni comuni di un OS : efficienza • Allocazione delle risorse • Contabilizzazione dell’uso delle risorse • Protezione Sistemi Operativi 49 Sistemi Operativi 50 System Calls Forniscono l’interfaccia tra un programma in esecuzione e OS La maggior parte dei moderni linguaggi di programmazione permette la chiamata diretta di system call nel linguaggio stesso mkdir cp kill --------- Ad ogni system call corrisponde in genere un comando di OS, che quindi e’ disponibile anche direttamente all’utente in shell Sistemi Operativi 51 … lpr chmod --------- Sistemi Operativi --------- 52 Classificazione di system calls A. Gestione dei processi Esempio di programma applicativo con uso di system call : lettura del contenuto di un file e scrittura in un altro file B. Manipolazione dei file C. Manipolazione di dispositivi (memorie e I/O) D. Manutenzione delle informazioni E. Comunicazioni Sistemi Operativi 53 Sistemi Operativi Che novita’! 54 9 Struttura interna di un OS un esempio di design : MS-DOS … ed un altro esempio meglio strutturato: UNIX Interfacce e livelli di funzionalita’ non sono ben separati Il kernel consiste di tutto cio’ che sta al di sotto delle interfacce alle system call e al di sopra dell’hardware Sistemi Operativi 55 Un criterio generale di design: approccio stratificato Sistemi Operativi 56 Relazioni tra livelli… • OS e’ suddiviso in un numero di livelli, • Information hiding • Data encapsulation • Modularita’ • Facile verifica e debugging • Bassa efficienza ognuno costruito sui sottostanti • Il livello piu’ basso e’ l’hardware (livello 0) e il piu’ alto e’ l’interfaccia utente (livello N) Sistemi Operativi 57 e caratteristiche Sistemi Operativi 58 Fine Parte Informatica Sistemi Operativi 59 10