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: unità unità in in grado grado di di svolgere una una elaborazione Programma: descrive l insieme delle delle istruzioni da da fornire fornire ad ad una una macchina perché perché esegua esegua un un certo certo compito. Componente statica statica Processo: successione di di azioni azioni svolte svolte da da un un processore per per ottenere un un risultato. È l insieme degli degli stati stati assunti assunti dal dal processore durante l esecuzione di di un un programma. Componente dinamica (evolve (evolve nel nel tempo) tempo) File: File: insieme di di dati dati registrati su su supporto hardware Risorsa: qualsiasi entità entità di di un un sistema di di elaborazione che che permette l avanzamento di di un un processo. Può Può essere essere fisica fisica (stampante, HD) HD) o logica logica (file); (file); attiva attiva (CPU) (CPU) o passiva (MC), (MC), interrompibile (CPU) (CPU) o no no (stampante), divisibile (MC) (MC) o no no (CPU). (CPU). 2
Il Sistema Operativo Il Sistema Operativo è un insieme di programmi che permette ad un utente di un sistema di elaborazione di poterne usare le risorse. Interfaccia: componente che che permette il il collegamento fornire un interfaccia utente-computer tra tra 2 entità. entità. Ottimizzare l uso delle risorse sovraintendendo e coordinando in modo opportuno tutto quello che avviene nella macchina: dal caricamento dei programmi alla loro esecuzione chiamando all'opera le opportune componenti del sistema I suoi principali compiti sono: rendere trasparente all utente e ai programmi stessi l hardware su cui stanno lavorando, fornendo un immagine astratta delle risorse disponibili (macchine virtuali) Macchina virtuale: componente software, in in grado grado di di interagire con con la la macchina reale, reale, mettendo a disposizione dell utilizzatore esterno, delle delle procedure dette dette primitive. Rende Rende trasparente l hw. l hw. 3
dedicati - monoprogrammati I SO nascono alla fine degli anni 40 per sollevare il programmatore dalla gestione diretta delle componenti hw e per avere un interfaccia più amichevole. Inizialmente i calcolatori erano in grado di eseguire un solo programma alla volta, completamente residente in MC (monoprogrammazione) e con tutte le risorse ad esso dedicate. I SO si limitavano pertanto a caricare, inizializzare e terminare i programmi. 4
batch Verso la fine degli anni 50 i calcolatori erano divenuti più veloci, ma ancora molto costosi: non si poteva lasciare un computer al servizio di un solo programma con molti tempi morti dovuti al caricamento dello stesso. Si realizzò allora la tecnica di elaborazione a lotti o batch: venivano raccolti diversi lavori o job, che venivano presentati uno di seguito all altro all elaboratore. Se un programma generava un errore veniva bloccato e si passava ad un successivo. Non si poteva interagire con il computer durante l elaborazione: i dati venivano forniti insieme alle istruzioni. 5
batch Job 1 Job 2 Job 3 Risultati job 1 Risultati job 2 Risultati job3 Se un job richiedeva operazioni di I/O la CPU le serviva rimanendo inutilizzata in attesa che si concludessero (periferiche molto lente rispetto ai tempi della CPU) CPU I/O Job 1 Job 2 6
interattivi L elaborazione di tipo batch aveva dei tempi di risposta imprevedibili ed elevati (quanti lavori ci sono prima del mio?), in più si dovevano presentare, non solo le istruzioni, ma anche i dati. Nei sistemi interattivi: I dati si presentano durante l esecuzione. I risultati sono utilizzabili appena prodotti. I tempi di risposta dipendono dalla complessità del programma (e dalla velocità dell hw) Per contro, vengono aggiunti i tempi morti di attesa dei dati di input da parte della CPU 7
multiprogrammazione Verso il 1960 nasce la multiprogrammazione: si vuole poter servire più job contemporaneamente, Si vogliono eliminare i tempi morti di trasferimento dei job da MM a MC, per cui in MC non c è più un solo processo. Si realizzano processori di I/O dedicati (DMA) in modo che la CPU lasci a loro il compito di gestire le richieste di I/O, mentre lei passa a servire un altro job Job 1 Job 2 Job 3 CPU 1 1 2 3 1 2 2 3 1 1 2 Proc I/O 1 1 1 2 3 3 1 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 8
time-sharing In un ambiente di multiprogrammazione, un processo con poche operazioni di I/O, poteva monopolizzare la CPU. Si introduce la politica di gestione a partizione di tempo (time-sharing): La CPU è assegnata ai vari processi per un quanto di tempo fisso (time-slice) La CPU passa ad un altro processo, anche quando devono essere eseguite operazioni di I/O Job 1 Job 2 Job 3 CPU 1 2 3 1 2 3 2 1 2 1 1 Proc I/O 2 3 3 1 1 1 2 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 9
svantaggi multiprogrammazione Avendo in esecuzione più programmi nascono i seguenti problemi: Protezione: affinché non si vadano a modificare i dati di altri programmi in MC. Si assegna ad ogni processo uno proprio spazio degli indirizzi. Condivisione: delle risorse tra i vari programmi. Si creano varie politiche di assegnamento delle risorse (scheduling) nei momenti di conflitto Il SO stesso deve condividere con gli altri programmi la MC e le risorse. Le operazioni del SO sono privilegiate e il processore quando le esegue è in uno stato supervisore, altrimenti è in modalità utente Il SO è troppo grande per essere tutto in MC Si carica in MC le componenti essenziali (supervisore) e si lasciano le altri componenti come librerie in MM 10
real-time Negli anni 60 assumono importanza anche i sistemi real-time: L esecuzione di una certa operazione deve avvenire in tempi trascurabili rispetto agli eventi esterni con cui interagisce (sistema che controlla un processo di produzione, sistema di pilotaggio di un aereo, ) 11
portabili Inizialmente i SO erano proprietari, cioè legati ad una certa macchina. Agli inizi degli anni 80, con l avvento del personal computer, si separa l hardware dal SO creando sistemi snelli e portabili, cioè utilizzabili su HW differenti. Nasce MS-DOS della Microsoft, con cui anche persone non tecniche erano in grado di interagire con il PC tramite un interfaccia in modalità testuale. La Apple invece lancia il suo SO con la prima interfaccia grafica a finestre, così friendly da favorire la diffusione dei PC. 12
distribuiti Alla fine degli anni 80, per velocizzare l elaborazione, invece di potenziare una sola macchina, si è pensato di utilizzare più CPU, che lavorano in un reale parallelismo. Queste possono: Condividere lo stesso clock e la stessa MC che utilizzano per comunicare (sistemi multiprocessore) Avere una propria MC e comunicare tramite connessioni veloci (sistemi distribuiti). In questi sistemi è possibile: Condividere le risorse (fisiche e logiche) in modo trasparente all utente Essere più affidabili, in quanto un elaboratore guasto può essere rimpiazzato dalla capacità elaborativa degli altri Comunicare tra elaboratori tramite messaggi. 13
SO di riferimento Studieremo un generico SO multiprogrammato, con un unica CPU, dei processori di I/O dedicati DMA, delle periferiche standard CPU BUS DMA DMA DMA MC HD 14
Il Sistema Operativo Modello onion skin (a cipolla) utente risorse logiche risorse fisiche 15
Il Sistema Operativo Nucleo Gestione della CPU: Ogni programma o richiesta da parte di un utente è un Job (Lavoro). Per essere eseguito viene caricato in MC e la sua esecuzione genererà una serie di processi La risorsa CPU viene assegnata ai vari processi che ne hanno chiesto l utilizzo, per un certo tempo (politica di time-sharing) Vengono generate e gestite diverse code di processi 16
Il Sistema Operativo Gestore della memoria centrale Qualunque Job per essere eseguito deve essere caricato in MC Il gestore della memoria decide: come organizzare lo spazio in MC come assegnare lo spazio in MC ai vari job prelevati dalla MM (swap-in) come liberare spazio in MC quando è piena (swap-out) 17
Il Sistema Operativo Gestore della periferiche Periferica: dispositivo hardware non non strettamente necessario al al funzionamento dell elaboratore, in in quanto quanto non non interviene direttamente nell elaborazione. Il gestore delle periferiche deve: Conoscere lo stato di ogni periferica (libera, occupata, non in linea,..) e dei suoi canali Decidere a quale processo e per quanto tempo deve assegnare una periferica Assegnare al processo prescelto la periferica e il canale Decidere come deve essere rilasciata una periferica 18
Il Sistema Operativo Gestore dell informazioni Il gestore dell informazioni o file system deve occuparsi dell archiviazione e del reperimento dei dati nelle memorie di massa. I suoi compiti sono: Per ogni dispositivo tenere traccia di tutti i file su esso presenti Determinare chi può utilizzare e come possono essere utilizzati i vari file Assegnare la risorsa al processo prescelto (apertura del file) e rilasciarla (chiusura file) Creare e cancellare file e directory Fornire primitive di manipolazione sui file Permettere il back-up 19