Parte VI SISTEMI OPERATIVI Sistema Operativo Ogni computer ha un sistema operativo necessario per eseguire gli altri programmi Il sistema operativo, fra l’altro, è responsabile di • riconoscere i comandi di input (da tastiera) e di inviarne una copia sullo schermo • gestire l’uscita dei dati (modem, rete, stampante ecc.) • gestire l’archivio dei file (dischi) • gestire le unità di memoria aggiuntiva (dischi, dvd, cd, ecc.) • gestire la sicurezza (autorizzazione all’utilizzo del sistema). Nei sistemi di grandi dimensioni il sistema operativo è anche responsabile della gestione e del coordinamento fra i diversi utenti che utilizzano il sistema 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 2 Sistema Operativo • Non facile da definire esattamente • definizione informale – Quello che nel sistema non è applicazione o hardware – Software che permette alle applicazioni di utilizzare in modo conveniente l’hardware Utenti Applicazioni Word processing, compilatori, basi dati.... Sistema Operativo Hardware 21/01/2008 dispositivi I/O,dischi, CPU, memoria.... Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 3 Sistema Operativo • Definizione Formale : Il sistema operativo è un insieme di programmi, invisibili all’utente, che si interpongono tra l’hardware e i programmi applicativi/utility visibili all’utente (interfaccia utente) per governare l’hardware nascondendo le diversità di hardware al software applicativo. • Il sistema operativo quindi forma uno strato di software che opera direttamente sull’hardware, isolando i dettagli dell’architettura hardware (attraverso i driver che sono parti di sistema operativo adattate alle specifiche caratteristiche dell’hardware) e fornendo un insieme di funzionalità e di astrazioni ad alto livello. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 4 Obiettivi del sistema operativo • semplificare e ottimizzare l’accesso alle risorse dell sistema • garantire la correttezza dell’esecuzione concorrente • assicurare la portabilità delle applicazioni • indipendenza dalla piattaforma: – stesso hardware sono possibili diversi SO – stesso SO può “girare” su piattaforme HW diverse 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 5 Sistema operativo e CPU Struttura a livelli • • Il livello 2 è il più basso al quale un utente può programmare la macchina Normalmente la programma a livello 5 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 6 Sistema operativo e CPU • • • • Le unità funzionali principali sono: – Gestione dei processi ( ogni programma in corso nel computer ) – Gestione della memoria centrale – Gestione delle periferiche – File system L’insieme di questi moduli costituisce il nucleo del sistema operativo, denominato anche kernel. Il sistema operativo possiede inoltre una interfaccia per l`interazione con l`utente che è formata dall’insieme dei programmi di utilità o utilities. Esempio: in DOS i comandi copy e rename permettono di copiare e ridenominare i file; comandi analoghi in altri sistemi; In Windows interfacce grafiche permettono di dare comandi con interazione diversa (ad esempio click con il mouse). 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 7 Virtualizzazione delle risorse • • le applicazioni e i programmi (che poggiano sul SO) vedono risorse virtuali – ignorano i dettagli – eventuali altri programmi in concorrenza risorse virtualizzate – CPU: Multiprogrammazione (più programmi sono eseguiti concorrentemente) – memoria: ciascun programma vede uno spazio di memoria autonomo – I/O: la memoria di massa (dischi) e periferiche di I/O sono viste dai programmi tramite il SO 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 8 Sistema operativo e CPU Funzioni Sistema operativo • Gestione dei processi • Memoria virtuale • I/O dei file 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 9 gestione dei processi • • processi concorrenti – elaborati in parallelo su architetture multiprocessore – elaborati a rotazione (time sharing) su architetture uniprocessore problemi: – sincronizzare l’utilizzo delle risorse comuni (memoria centrale e di massa, I/O) – garantire accesso in mutua esclusione – garantire la correttezza della elaborazione 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 10 gestione dei processi stati di un processo • running: in esecuzione sulla CPU • blocked: bloccato in attesa di un evento (fine I/O, ...) • ready: pronto a riprendere la sua elaborazione scheduler: processo del SO che decide quale fra i processi ready mandare in esecuzione 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 11 gestione dei processi scheduler: processo del SO che decide quale fra i processi ready mandare in esecuzione In un computer ci possono essere molti programmi in corso di esecuzione (caricati in memoria centrale) dello stesso utente o di utenti diversi. E’ compito di un programma del sistema operativo (schedulatore) commutare l’attività della CPU tra i vari programmi in corso di esecuzione dedicando a ciascuno una piccola porzione del tempo di elaborazione in modo che si abbia la percezione che tutti i programmi avanzino contemporaneamente. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 12 gestione dei processi i Sistemi operativi possono essere classificati nel seguente modo: multi-user : multiutente (due o più utenti utilizzano il programma (anche migliaia nei casi più grandi) multiprocessing : permette la possibilità che un programma sia eseguito da più processori (CPU) multitasking : permette che uno o più programmi siano eseguiti concorrentemente (anche dello stesso utente) multithreading : permette che diversi parti di un unico programma siano eseguite concorrentemente. Usano il time sharing, condivisione del tempo fra più utenti o più programmi• Il processore centrale è commutato velocemente da un programma ad un altro 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 13 gestione dei processi I Sistemi operativi possono essere classificati nel seguente modo: real time: (tempo reale)(Windows e UNIX non sono real time). Un sistema operativo real-time o in tempo reale (abbreviato in RTOS) è un sistema operativo specializzato per il supporto di applicazioni software real-time. Questi sistemi vengono utilizzati tipicamente in ambito industriale (controllo di processo, pilotaggio di robot, trasferimento di dati nelle telecomunicazioni) o comunque dove sia necessario ottenere una risposta dal sistema in un tempo massimo prefissato. Da un punto di vista puramente teorico l'intervallo di tempo in cui il sistema operativo/applicativo deve reagire non ha importanza, infatti un sistema operativo in RT non deve essere necessariamente veloce, la cosa importante è che risponda entro un tempo massimo ben conosciuto. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 14 gestione dei processi I Sistemi operativi possono essere classificati nel seguente modo: real time Un sistema in RT deve garantire una elaborazione rapida dal punto di vista temporale, anche se è possibile che la risposta non sia precisissima. Ad esempio una funzione di calcolo può calcolare il peso di un oggetto senza giungere alla determinazione del milligrammo perché deve comunque fornire una risposta in un preciso tempo da quando si è posto il peso nella bilancia. Tale ragionamento non significa che si possono anche dare risposte errate ma che bisogna spostare l'attenzione sul tempo della risposta. Questi tipi di sistemi devono dare l'opportunità allo sviluppatore di conoscere a priori le pessime probabilità in cui si ottiene la risposta. Viceversa un sistema operativo "tradizionale" deve garantire un'elaborazione corretta dal punto di vista logico, anche se è possibile tollerare che qualche risposta arrivi in anticipo o in posticipo di tempo. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 15 gestione dei processi real time Alcuni sistemi operativi in grado di lavorare in real-time su adeguate architetture hardware sono: Open source: HaikuOS http://haiku-os.org/ eCos http://sources.redhat.com/ecos FreeRTOS http://www.freertos.org Nut/OS http://www.ethernut.de Prex http://freshmeat.net/projects/prex RTAI http://www.rtai.org RTEMS http://www.rtems.com RTLinux Open Å ITRON TRON project Fiasco (L4 clone) http://os.inf.tu-dresden.de/fiasco ChorusOS http://www.experimentalstuff.com/Technologies/ChorusOS TinyOS http://www.tinyos.net 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 16 gestione dei processi •Windows: è un prodotto di Microsoft con licenza commerciale adatto a qualsiasi hardware di tipo PC compatibile. In realtà è formato da varie famiglie di sistemi operativi diversi destinati a categorie diverse di computer. Gli esempi che seguono sono tutti caratterizzati dall’appartenere ad una unica famiglia di Windows chiamata genericamente “Win32” per indicare che sfruttano la capacità di indirizzamento a 32 bit offerta dalle CPU Intel o compatibili a partire dall’80386 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 17 gestione dei processi •Windows: •Windows 95/98/ME/XP-HOME: sono sistemi operativi multiprocesso ( NON vuol dire multiprocessor !! ) e monoutente destinati all’utilizzo come workstation in un ambiente preferibilmente non di rete. •Windows NT-WKS/2000-WKS/XP-PRO: sono sistemi operativi multiprocesso e monoutente destinati all’utilizzo come workstation particolarmente adatti all’ambiente di rete. •Windows NT-SRV/2000-SRV/2003-SRV: sono sistemi operativi multiprocesso e multiutente destinati all’utilizzo come minicomputer (detti anche server) in ambiente di rete. •Windows CE: è una versione particolarmente alleggerita adatta ai computer palmari ma che può essere utilizzata anche negli embedded computer. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 18 gestione dei processi •Unix: è una ampia famiglia di sistemi operativi prodotti da varie aziende con licenza commerciale nel rispetto di standard comuni (Open Systems) e adatti a vari tipi di hardware compreso il tipo PC compatibile. Viene utilizzato sia per la realizzazione di server che di workstation. Gli standard Open Systems sono insiemi di norme pubbliche che specificano le regole che il software deve rispettare e differenziano questi sistemi operativi dai sistemi proprietari le cui regole di funzionamento invece non sono rese note dal produttore. •Sono sistemi operativi multiprocesso e multiutente 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 19 gestione dei processi Linux: è un sistema operativo che deriva da Unix ma è prodotto con licenza “Open Source” da vari produttori che in questo caso vengono chiamati “distribuzioni”. E’ adatto all’ hardware PC compatibile, sfrutta la capacità di indirizzamento a 32 bit ed è multiprocesso e multiutente. Può essere usato sia come minicomputer (server), e in questo ruolo è stato un potente motore di sviluppo della rete Internet, sia come workstation non utilizzando in questo caso la sua funzione di multiutenza. Le più famose distribuzioni sono Red Hat, Fedora, Mandrake, Suse, Debian, Slackware, Knoppix … 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 20 gestione dei processi Mac OS: è un prodotto di Apple con licenza commerciale adatto agli hardware di tipo MacIntosh. E’ stato il primo sistema operativo con interfaccia utente grafica (1984). Sebbene sia molto meno diffuso dei precedenti riveste una grande importanza nel campo delle workstation per usi specialistici (grafica, architettura …). L’ultima versione ha una base UNIX di OpenStep completata con l'interfaccia grafica e le molte tecnologie ad alto livello del Mac OS 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 21 memoria virtuale – Ogni programma in corso di esecuzione (processo), compreso il sistema operativo, occupa una parte della memoria centrale in cui risiedono le sue istruzioni codificate ed i suoi dati. – Al crescere dei processi la memoria RAM diviene rapidamente insufficiente, per cui il sistema operativo fornisce ai processi un’area di memoria centrale “virtuale” ottenuta da un opportuno spazio riservato nella memoria di massa. – Il sistema operativo fa in modo che questa memoria di massa sembri (per questo si chiama virtuale = finta) allocata al processo come se fosse memoria centrale ma questa apparenza è dovuta a continui “caricamenti” e “scaricamenti” fatti dal sistema operativo tra memoria centrale fisica e blocco di memoria virtuale della memoria di massa (hard disk). 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 22 memoria virtuale – L’operazione quindi è trasparente per il programma in corso di esecuzione che non si accorge di non possedere tutta la memoria centrale che gli serve perché ogni volta che la utilizza il sistema operativo gliela copia dalla memoria di massa scaricandola quando non serve più ma le prestazioni complessive del sistema ne sono influenzate se si pensa ai tempi medi di accesso di un disco di media qualità (decine di mS). – Questo meccanismo spiega perché uno dei fattori principali nelle prestazioni di un computer è la quantità della memoria centrale. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 23 memoria virtuale • memoria virtuale: – lo stesso spazio di memoria è diviso fra più programmi – ogni programma vede uno spazio di indirizzamento più ampio di quello effettivamente disponibile • spazio indirizzi: – virtuali: dipende dalle modalità di indirizzamento – fisico: dipende dalle dimensioni della memoria 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 24 memoria virtuale • programmi usano lo spazio virtuale • lo spazio virtuale è allocato in memoria secondaria (dischi) • si mantiene in memoria solo un sottoinsieme dello spazio virtuale (spazio logico) • si trasferiscono quando servono le parti dello spazio virtuale alle quali il programma fa riferimento • la gestione è fatta dal SO (trasparente all’utente/programmatore) • PROBLEMA: traduzione indirizzi; efficienza 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 25 memoria virtuale: paginazione • • • modo semplice di organizzare la corrispondenza fra indirizzi virtuali e fisici lo spazio di memoria (fisico e virtuale) è organizzato in pagine (0.254 KB), della stessa dimensione quando serve un dato in memoria si trasferisce tutta la pagina che lo contiene 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 26 memoria virtuale: paginazione Spazio fisico in Memoria RAM, Memoria fisica del computer suddivisa in 8 pagine PF1 Spazio logico su disco PL0 PL1 Organizzazione logica del processo 1 2 pagine logiche PF2 PF3 PF4 PF5 PF6 PF7 PF8 21/01/2008 Spazio logico Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino Organizzazione logica Del processo 2 4 pagine logiche. Non trova 4 pagine fisiche contigue 27 memoria virtuale: paginazione • la struttura dello spazio virtuale si riflette nella struttura degli indirizzi – offset: lunghezza della pagina – k bit più significativi: numero della pagina • indirizzi fisici hanno la stessa struttura 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 28 memoria virtuale: paginazione • Il programma viene suddiviso in un certo numero di sezioni, di dimensioni fisse e uguali fra loro, dette pagine logiche, e in corrispondenza organizzando allo stesso modo anche la memoria fisica in pagine fisiche, della stessa dimensione delle pagine logiche. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 29 memoria virtuale: paginazione Spiazzamento relativo all’inizio della pagina specificata dai k bit iniziali, in pratica dice quanto è lunga la pagina • • • i programmi specificano indirizzi virtuali l’indirizzo fisico è diverso prima di accedere in memoria bisogna tradurre l’indirizzo virtuale in indirizzo fisico Nota Bene: l’indirizzo virtuale è fisso, quello fisico può cambiare nel corso dell’esecuzione 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 30 memoria virtuale: paginazione • • con la memoria a pagine – posso avere uno spazio fisico piccolo ma uno spazio virtuale grande – posso utilizzare la memoria (piccola) per più programmi contemporaneamente due pagine vicine (nello spazio logico) possono essere in posti diversi dello spazio fisico – una su disco e l’altra in memoria centrale – tutte e due su disco (o memoria centrale) ma con indirizzi fisici diversi 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 31 memoria virtuale: traduzione indirizzi • • La traduzione degli indirizzi avviene a cura della CPU (prima di accedere in memoria fisica) La corrispondenza tra pagine virtuali e pagine fisiche (page frames) viene mantenuta nella Tavola delle Pagine (nella CPU) e viene gestita dall’hardware aggiuntivo Memory Management Unit presente nella CPU 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 32 memoria virtuale: traduzione indirizzi Numero pagina fisica ( Sei ) tavola delle pagine Lo spiazzamento rispetto all’inizio della pagina è uguale sia per la pagina logica che la pagina fisica contiene la corrispondenza fra indirizzo virtuale (o logico) e indirizzo fisico Pagina già in memoria si/no Numero pagina logica (Due ) 21/01/2008 4 bit Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 3 bit 33 memoria virtuale: come funziona • • se la pagina richiesta è in memoria: ok altrimenti page fault. – il SO interrompe l’esecuzione del programma – la pagina richiesta viene trasferita da disco a memoria centrale (attesa) – una volta trasferita la pagina richiesta l’esecuzione del programma può riprendere – a seguito di un page fault posso dover togliere una pagina dalla memoria per fare spazio a quella nuova, questo implica che le pagine virtuali non hanno necessariamente lo stesso indirizzo fisico 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 34 località dei programmi • gli accessi in memoria rispettano un principio di località – quando mi serve un dato che non è in memoria trasferisco tutta la pagina che contiene quel dato – quando devo togliere una pagina dalla memoria per fare spazio alla nuova pagina trasferisco pagine richieste indietro nel tempo (meno probabili che siano richieste nel futuro) 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 35 Gestione dei file: importanza I/O • Applicazioni hanno due componenti fondamentali: – Elaborazione informazione – Input/Output (I/O) (esistono applicazioni senza I/O?) • Dati sono nei dispositivi di memoria – diversi fra loro (velocità, modi di accesso, ...) • Utente vede dati come una libreria standard – operazioni utente sono astratte: inserisci, cancella, duplica,... – non dipende dal tipo di dato o da dove è il dato • Funzioni SO: fornire operazioni standard per accedere e modificare i dati – fornire protezioni ai dati (limitare le operazioni permesse) – semplificare accesso a utente – fornire interfaccia omogenea 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 36 Astrazione: File • Punto di vista utente – Insieme di dati con un nome • tipo di dato (si usa spesso estenzione: txt - testo, exe - eseguibile, gif - immagine, ....) • utilizzabile sempre in modo conveniente (utente non vuole sapere dove si trova fisicamente il file) • Punto di vista del sistema operativo – crea corrispondenza fra i byte che costituiscono il file su blocchi di memoria non volatile • Dischi, nastri, CD, .... • Dati persistenti (assenza di corrente, riavvi del sistema,...) 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 37 Astrazione: Direttorio • • • Organizzare i file: una tabella contiene le informazioni su dove ciascun file si trovi sul disco Approccio semplice: ogni file ha un solo nome In pratica: – un direttorio per ogni utente, per specificare un file: • <nome utente, nome file> – per ogni utente organizzazione ad albero del direttorio (es. cartelle di windows) Esempio: Mario/a/b.gif utente mario ha un direttorio a che contiene un fileim magine b (Mario può avere tanti direttori; a può contenere tantifile o direttori) 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 38 Meta-Dati di un file • Meta-dati: Informazioni addizionali associate ad ogni file – – – – – – – • Nome del file Tipo del file Puntatori (indirizzi) ai blocchi del disco che contengono i dati Dimensione del file Informazioni temporali: creazione, aggiornamento Proprietario (utente, gruppo) Bit di protezione (autorizzazione in lettura, scrittura) I Meta-dati sono memorizzati nel disco – parte del disco contiene le informazioni necessarie • <nome file, indice sui metadati> (l’indice indica dove sono presenti i metadati nella memoria del disco) 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 39 Gestione del direttorio • Direttorio contiene per ogni file una coppia <nome, indice>, (in cui il nome può essere un altro direttorio) – Direttorio è memorizzato e organizzato come un file – Indice indica dove sono le informazioni sui metadati associati al nome – Per indicare un file si specifica il nome del file indicando tutti i direttori a partire dalla radice Esempio: m kdir mario/a/b/c crea direttorio c contenuto in b che a sua volta è contenutoin a – Leggi i metadati associati a utente mario e cerchi “a”; ad esempio trovi <“a”, 5> – leggi le informazioni indicate da 5, e cerca “b”; ad esempio trovi <“b”, 9> – leggi le informazioni indicate da 9, verifichi che non esiste “c”; allochi c e aggiungi “c” dove necessario 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 40 Esercizio • Illustrare i compiti del sistema operativo nella gestione dei file e dell’Input/Output. 21/01/2008 Sistemi e Tecnologie Informatiche Prof. Gregorio Cosentino 41