1 / 70

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi. Sommario. Introduzione Scopo del sistema operativo Architettura del sistema operativo Storia dei sistemi operativi Struttura dei sistemi operativi La gestione dei processi La gestione della memoria Il file system La gestione dei dispositivi di I/O

genera
Download Presentation

Introduzione ai sistemi operativi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduzione aisistemi operativi

  2. Sommario • Introduzione • Scopo del sistema operativo • Architettura del sistema operativo • Storia dei sistemi operativi • Struttura dei sistemi operativi • La gestione dei processi • La gestione della memoria • Il file system • La gestione dei dispositivi di I/O • L’interfaccia utente • Esempi di sistemi operativi

  3. Introduzione

  4. Cos’è un sistema operativo  1 • Il software può essere diviso in due grandi classi: • iprogrammi di sistema, che gestiscono le funzionalità del sistema di calcolo • iprogrammi applicativi, che risolvono i problemi degli utenti • L’insieme deiprogrammi di sistemaviene comunemente identificato con il nome diSistema Operativo(SO) • Definizione Un sistema operativo è un programma che controlla l’esecuzione di programmi applicativi ed agisce come interfaccia fra le applicazioni e l’hardware del calcolatore

  5. Cos’è un sistema operativo  2 • Tutte le piattaforme hardware/software richiedono un sistema operativo • Quando si accende un elaboratore, occorre attendere alcuni istanti per poter iniziare a lavorare: durante questa pausa il computer carica il SO

  6. Scopo del sistema operativo • Gestione EFFICIENTE delle risorse del sistema di elaborazione • Rendere AGEVOLE l’interfaccia tra l’uomo e la macchina

  7. Compiti del sistema operativo • Gestione dei processi • Gestione della memoria principale • Gestione della memoria di massa (file system) • Realizzazione dell’interfaccia utente • Rilevamento e gestione degli errori • Accounting • Protezione e sicurezza

  8. Esempio: il SO come gestore risorse – 1 • Si consideri un ristorante con un capo–cuoco (che dirige la cucina) ed i suoi aiutanti, camerieri e clienti: • I clienti scelgono un piatto dal menù • Un cameriere prende l’ordine e lo consegna al capo–cuoco • Il capo–cuoco riceve l’ordine e assegna uno o più aiutanti alla preparazione del piatto • Ogni aiutante si dedicherà alla preparazione di un piatto, il che potrà richiedere più attività diverse • Il capo–cuoco supervisiona la preparazione dei piatti e gestisce le risorse (limitate) disponibili

  9. Esempio: il SO come gestore risorse – 2 • Il capo–cuoco è il sistema operativo! • I clienti sono gli utenti • Le ricette associate ai piatti sono i programmi • Il menù ed il cameriere costituiscono l’interfaccia verso il sistema operativo (grafica e non) • Gli aiutanti sono i processi • La cucina è il computer; pentole, fornelli, etc. sono le componenti hardware

  10. Esempio: il SO come gestore risorse – 3 • Problemi del capo–cuoco: • Esecuzione fedele delle ricette • Allocazione efficiente delle risorse esistenti (aiutanti, fornelli, etc.) • Coordinamento efficiente degli aiutanti • Licenziamento degli aiutanti che non si comportano secondo le regole • Problemi del sistema operativo: • Efficienza nell’uso delle risorse (processori, memoria, dischi, etc.) • Protezione nell’uso delle risorse • Coordinamento dei processi

  11. Il SO come macchina estesa – 1 • Visione a strati delle componenti hardware/software che compongo un elaboratore

  12. Il SO come macchina estesa – 2 • Il SO può essere inteso come uno strumento che virtualizzale caratteristiche dell’hardware sottostante, offrendo all’utente la visione di unamacchina astrattapiù potente e più semplice da utilizzare di quella fisicamente disponibile • In questa visione, un SO… • …nasconde a programmatori/utenti i dettagli dell’hardware e fornisce un’interfaccia conveniente e facile da usare • …agisce come intermediario tra programmatore/utente e hardware • Parole chiave • Indipendenza dall’hardware • Comodità d’uso • Programmabilità

  13. Il SO come macchina estesa – 3 • L’utente è in grado di utilizzare la macchina fisica senza conoscere i dettagli della sua struttura interna e del suo funzionamento Hardware— fornisce le risorse fondamentali di calcolo (CPU, memoria, device di I/O) Sistema Operativo — controlla e coordina l’utilizzo delle risorse hardware da parte dei programmi applicativi dell’utente Programmi Applicativi — definiscono le modalità di utilizzo delle risorse del sistema, per risolvere i problemi di calcolo degli utenti (compilatori, database, video game, programmi gestionali) Utenti — persone, altri macchinari, altri elaboratori Visione “a cipolla” del sistema di calcolo

  14. Interfaccia utente Gestore dell’I/O Gestore del File System Gestore dei Processi Gestore della Memoria Centrale KERNEL Architettura del sistema operativo • I SO sono costituiti da un insieme di moduli, ciascuno dedicato a svolgere una determinata funzione • I vari moduli del SO interagiscono tra loro secondo regole precise, al fine di realizzare le funzionalità di base della macchina • L’insieme dei moduli per la gestione della CPU e della memoria centrale è il kernel

  15. Ancora sul sistema operativo • Riassumendo: Il sistema operativo fornisce un ambiente per eseguire programmi in modo conveniente ed efficiente, funge infatti da… • Allocatore di risorse — controlla, distribuisce ed alloca le risorse (in modo equo ed efficiente) • Programma di controllo — controlla l’esecuzione dei programmi utente e le operazioni sui dispositivi di I/O Esempio: il filesystem Si ha a che fare con file, directory, etc., e non ci si deve preoccupare di come i dati sono memorizzati sul disco

  16. Storia dei sistemi operativi

  17. Storia dei sistemi operativi • L’evoluzione dei sistemi operativi… • …è stata spintadal progresso tecnologico dell’hardware • …ha guidatoil progresso tecnologico dell’hardware • Esempio: • Gestione degli interrupt • Protezione della memoria • Memoria virtuale • ... • Perché analizzare la storia dei sistemi operativi? • Perché permette di capire l’origine di certe soluzioni presenti nei SO attuali • Perché è l’approccio migliore per capire come certe idee si sono sviluppate • Perché alcune delle soluzioni più antiche sono ancora utilizzate

  18. Storia dei sistemi di elaborazione • Generazione 0: Babbage (1792–1871) • Progetta la macchina analitica (programmabile, meccanica) • Non aveva sistema operativo • La prima programmatrice della storia è Lady Ada Lovelace • Generazione 1: 1945–1955 • Valvole e tavole di commutazione • Generazione 2: 1955–1965 • Transistor e sistemi batch • Generazione 3: 1965–1980 • Circuiti integrati, multiprogrammazione e time–sharing • Generazione 4: 1980–oggi • Personal computer

  19. Generazione 1: 1945–1955 • Come venivano costruiti? • Calcolatori a valvole e tavole di commutazione • Come venivano usati? • Solo calcoli numerici (calcolatori non elaboratori) • Un singolo gruppo di persone progettava, costruiva, programmava e manuteneva il proprio computer • Come venivano programmati? • In linguaggio macchina (stringhe di 0 e 1) • Programmazione su tavole di commutazione • Nessun sistema operativo!

  20. Generazione 1: 1945–1955 • Principali problemi: • Scarsa affidabilità (guasti frequenti) • Rigidità nell’assegnazione dei ruoli • Non esiste il concetto di programmatore come entità separata dal costruttore di computer e dall’utente • Utilizzazione lenta e complessa; l’operatore doveva… • …caricare il programma da eseguire • …inserire i dati di input • …eseguire il programma • …attendere il risultato • …in caso di errore, ricominciare dal punto 1) • Tutto ciò a causa dell’assenza del SO

  21. Generazione 2: 1955–1965 • Come venivano costruiti? • Introduzione dei transistor • Costruzione di macchine più affidabili ed economiche • Come venivano usati? • Gli elaboratori iniziano ad essere utilizzati per compiti diversi • Si crea un mercato, grazie alle dimensioni ed al prezzo ridotti • Avviene una separazione tra costruttori, operatori e programmatori • Come venivano programmati? • Linguaggi di “medio/alto livello”: Assembly, Fortran • Tramite schede perforate • Sistemi operativi batch

  22. Generazione 2: 1955–1965 • Definizionedi job: Un programma o un insieme di programmi la cui esecuzione è richiesta da un utente • Ciclo di esecuzione di un job • Il programmatore… • scrive (su carta) un programma in un linguaggio di alto livello • perfora una serie di schede con il programma e il suo input • consegna le schede ad un operatore • L’operatore… • inserisce le schede di controllo scritte in linguaggio apposito • inserisce le schede del programma • attende il risultato e lo consegna al programmatore • operatore  programmatore = utente

  23. Generazione 2: 1955–1965 • Il monitor residente è in grado di eseguire una sequenza di job, trasferendo il controllo dall’uno all’altro in successione • Primi rudimentali esempi di sistema operativo, detti anchemonitor residenti osistemi batch, “a infornata”: • Controllo iniziale al monitor • Il controllo viene ceduto al job corrente • Una volta terminato il job, il controllo ritorna al monitor

  24. Generazione 2: 1955–1965 • Principale problema: molte risorse non utilizzate • Durante le operazioni di lettura schede/stampa, durante il caricamento di un nuovo job, il processore resta inutilizzato • Parte della memoria resta inutilizzata • Primo miglioramento… ma non una soluzione • Caricamento di numerosi job su nastro (off–line) • Elaborazione (output su nastro) • Stampa del nastro di output (off–line)

  25. Generazione 3: 1965–1980 • Come venivano costruiti? • Circuiti integrati • Come venivano usati? • Progressivamente sparisce la figura dell’operatore come “interfaccia” degli utenti verso le macchine • utente = operatore • Come venivano programmati? • Linguaggi di “alto livello”: C, shell scripting • Editor testuali, editor grafici, compilatori • Accesso al sistema da terminali • Sistemi operativi interattivi, con multi–programmazione e time–sharing

  26. Generazione 3: Multi–programmazione • Definizionedi multi–programmazione: Utilizzo del processore durante i periodi di I/O di un job per eseguire altri job • Vantaggi: • Il processore non viene lasciato inattivo (idle) durante le operazioni di I/O (molto lunghe) • La memoria viene utilizzata al meglio, caricando il maggior numero di job possibili • Nota: per gestire la multi–programmazione, il SO deve gestire un pool di job da eseguire, fra cui alternare il processore

  27. Generazione 3: Multi–programmazione • Caratteristiche tecniche: • Più job contemporaneamente in memoria • Una componente del SO, detta scheduler, si preoccupa di alternarli nell’uso della CPU • Quando un job richiede un’operazione di I/O, la CPU viene assegnata ad un altro job • SO multi–programmati: • Routine di I/O fornite dal SO • Gestione della memoria: il sistema deve allocare la memoria per i job presenti contemporaneamente • CPU scheduling: il sistema deve scegliere tra i diversi job pronti all’esecuzione • Allocazione delle risorse di I/O: il SO deve essere in grado di allocare le risorse di I/O fra diversi processi

  28. Generazione 3: Time–sharing • Definizionedi time–sharing: • La risorsa CPU viene suddivisa in quanti temporali; allo scadere di un quanto, il job corrente viene interrotto e l’esecuzione passa ad un altro job, anche in assenza di richieste di I/O • I context switch avvengono così frequentemente che più utenti possono interagire con i programmi in esecuzione • SO time–sharing: • Gestione della memoria: il numero di processi utente può essere molto elevato; si rende necessario l’uso della memoria virtuale • CPU scheduling: deve essere di tipo time–sliced, ovvero sospendere periodicamente l’esecuzione di un programma a favore di un altro • La presenza di più utenti rende necessari meccanismi di protezione (e.g. protezione del file system, della memoria, etc.)

  29. Generazione 4: 1980–oggi • I personal computer sono dedicati ad utenti singoli: • L’obiettivo primario per i SO diventa la facilità d’uso; diminuisce l’interesse per la gestione ottima delle risorse • I SO per PC sono in generale più semplici; non implementano la protezione (almeno fino all’avvento di Internet) • Creazione di interfacce grafiche user–friendly • Tuttavia, tecnologie sviluppate per SO più complessi possono comunque essere adottate

  30. La struttura del sistema operativo La gestione dei processi

  31. La gestione dei processi – 1 • Un processo è un programma in esecuzione • Un processo utilizza le risorse fornite dal sistema di elaborazione per assolvere ai propri compiti • La terminazione di un processo prevede il recupero di tutte le risorse riutilizzabili ad esso precedentemente allocate • Normalmente, in un sistema vi sono molti processi, di alcuni utenti, e alcuni sistemi operativi, che vengono eseguiti in concorrenza su una o più CPU • La concorrenza è ottenuta effettuando il multiplexing delle CPU fra i vari processi

  32. La gestione dei processi – 2 • Il sistema operativo è responsabile delle seguenti attività riguardanti la gestione dei processi: • creazione e terminazione dei processi • sospensione e riattivazione dei processi • gestione dei deadlock • comunicazione tra processi • sincronizzazione tra processi • Il gestore dei processi “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione un’unità di elaborazione dedicata

  33. La gestione dei processi – 3 • Il gestore dei processi èil modulo che si occupa del controllo, della sincronizzazione, dell’interruzione e della riattivazione dei programmi in esecuzione cui viene assegnato un processore • La gestione dei processi viene compiuta secondo modalità diverse, in funzione del tipo di utilizzo cui il sistema è rivolto • Il programma che si occupa della distribuzione del tempo di CPU tra i vari processi attivi, decidendone l’avvicendamento, è chiamato scheduler • Nel caso di sistemi multiprocessore, lo scheduler si occupa anche di gestire la cooperazione tra le diverse CPU presenti nel sistema

  34. Ciclo di vita dei processi nascita top nella coda di scheduling running ready tempo scaduto evento wait termine attesa evento (es. I/O)

  35. Politiche di scheduling • Le politiche di scheduling sono raggruppabili in due grandi categorie: • Preemptive: l’uso della CPU da parte di un processo può essere interrotto in un qualsiasi momento, e la risorsa concessa ad altro processo • Non preemptive:una volta che un processo ha ottenuto l’uso della CPU, è unico proprietario della risorsa finché non ne decide il rilascio

  36. Tempo di utilizzo della CPU Tempo di attesa di eventi esterni Sistemi mono–tasking • I SO che gestiscono l’esecuzione di un solo programma per volta (un solo processo) sono detti mono–tasking • Non è possibile sospendere un processo per assegnare la CPU ad un altro • Sono storicamente i primi SO (es. MS–DOS) C B A t T

  37. Tempo di utilizzo della CPU Tempo di attesa di eventi esterni Sistemi multi–tasking • I SO che permettono l’esecuzione contemporanea di più programmi sono dettimulti–tasking o multi–programmati • Un programma può essere interrotto e la CPU passata a un altro programma C B A t Tmono-tasking Tmulti-tasking

  38. Sistemi time–sharing • Un’evoluzione dei sistemi multi–tasking sono i sistemi time–sharing • Ogni processo viene eseguito ciclicamente per piccoli quanti di tempo • Se la velocità del processore è sufficientemente elevata si ha l’impressione di un’evoluzione parallela dei processi • Esempio • Ipotesi: 1 MIPS, 4 processi, 0.25 s/utente • Conseguenze: 0.25 MIPS/utente, TELA = 4  TCPU 0.00” D A 0.75” 0.25” C B 0.50”

  39. Time–sharing: diagramma temporale D C B A t

  40. La gestione della memoria

  41. La gestione della memoria principale – 1 • La memoria principale… • …è un “array” di byte indirizzabili singolarmente • …è un deposito di dati facilmente accessibile e condiviso tra la CPU ed i dispositivi di I/O • Il SO è responsabile delle seguenti attività riguardanti la gestione della memoria principale: • Tenere traccia di quali parti della memoria sono usate e da chi • Decidere quali processi caricare quando diventa disponibile spazio in memoria • Allocare e deallocare lo spazio di memoria quando necessario • Il gestore di memoria “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione una memoria dedicata

  42. La gestione della memoria principale – 2 • L’organizzazione e la gestione della memoria centrale è uno degli aspetti più critici nel disegno di un SO • Il gestore della memoria è quel modulo del SO incaricato di assegnare la memoria ai task (per eseguire un task è necessario che il suo codice sia caricato in memoria) • La complessità del gestore della memoria dipende dal tipo di SO • Nei SO multi–tasking, più programmi possono essere caricati contemporaneamente in memoria • Problema: come allocare lo spazio in maniera ottimale

  43. Allocazione lineare Memoria 0000x Programma A Programma B Programma C

  44. Allocazione lineare Memoria 0000x Programma A PROBLEMA !!!! FRAMMENTAZIONE Programma D Programma C

  45. Programma A Programma A Programma A Programma B Programma B Paginazione Memoria 0000x Programma D

  46. Programma A Memoria 0000x Programma A Programma A Programma F Programma D Programma F Paginazione Programma E

  47. La memoria virtuale – 1 • Spesso la memoria non è sufficiente per contenere completamente tutto il codice dei processi • Si può simulare una memoria più grande tenendo nella memoria di sistema (RAM) solo le parti di codice e dati che servono in quel momento • Si usa il concetto di memoria virtuale • I dati e le parti di codice relativi a programmi non in esecuzione possono essere tolti dalla memoria centrale e “parcheggiati” su disco nella cosiddetta area di swap • I processori moderni sono dotati di meccanismi hardware per facilitare la gestione della memoria virtuale

  48. Swap Programma A-2 Programma A-3 Programma B-2 La memoria virtuale – 2 Memoria 0000x Programma A-1 Programma B-1 Programma D

  49. La memoria virtuale – 2 Memoria 0000x Programma A-2 Programma B-1 Swap Programma D Programma A-1 Programma A-3 Programma B-2

  50. La gestione della memoria secondaria  1 • Poiché la memoria principale è volatile e troppo piccola per contenere tutti i dati e tutti i programmi in modo permanente, un computer è dotato di memoria secondaria • In generale, la memoria secondaria è data da hard disk e dischi ottici • Il SO garantisce una visione logica uniforme del processo di memorizzazione: • Astrae dalle caratteristiche fisiche dei dispositivi per definire un’unità di memorizzazione logica  il file • Ciascuna periferica viene controllata dal relativo device driver, che nasconde all’utente le caratteristiche fisiche variabili dell’hardware: modalità e velocità di accesso, capacità, velocità di trasferimento

More Related