INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo Il Sistema Operativo un po’ di definizioni Elaborazione: Elaborazione: trattamento trattamento didi informazioni informazioni acquisite acquisite dall’esterno dall’esterno per per restituire restituireun unrisultato risultato Processore: Processore:unità unitàiningrado gradodidisvolgere svolgereuna unaelaborazione elaborazione Programma: Programma: descrive descrive l’insieme l’insieme delle delle istruzioni istruzioni da da fornire fornire ad ad una una macchina perché esegua un certo compito. Componente statica macchina perché esegua un certo compito. Componente statica Processo: Processo:successione successionedidiazioni azionisvolte svolteda daun unprocessore processoreper perottenere ottenere un risultato. È l’insieme degli stati assunti dal processore durante un risultato. È l’insieme degli stati assunti dal processore durante l’esecuzione l’esecuzionedidiun unprogramma. programma.Componente Componentedinamica dinamica(evolve (evolvenel neltempo) tempo) File: File:insieme insiemedididati datiregistrati registratisu susupporto supportohardware hardware Risorsa: Risorsa: qualsiasi qualsiasi entità entità didi un un sistema sistema didi elaborazione elaborazione che che permette permette l’avanzamento l’avanzamento didi un un processo. processo. Può Può essere essere fisica fisica (stampante, (stampante, HD) HD) oo logica logica (file); (file); attiva attiva (CPU) (CPU) oo passiva passiva (MC), (MC), interrompibile interrompibile (CPU) (CPU) oo no no (stampante), (stampante),divisibile divisibile(MC) (MC)oono no(CPU). (CPU). 2 Il Sistema Operativo 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: Interfaccia: componente componente che permette ilil che permette I suoi principali compiti sono: collegamento tra 2 entità. • fornire un’interfaccia utente-computer collegamento tra 2 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 • rendere trasparente all’utente e ai programmi stessi l’hardware su cui stanno lavorando, fornendo un’immagine astratta delle risorse disponibili (macchine virtuali) Macchina Macchina virtuale: virtuale: componente componente software, software, inin grado grado didi interagire interagire con con lala macchina macchina reale, reale, mettendo mettendo aa disposizione disposizione dell’utilizzatore dell’utilizzatore esterno, esterno, delle delle procedure proceduredette detteprimitive. primitive.Rende Rendetrasparente trasparentel’hw. l’hw. 3 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo Evoluzione dei SO: 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 Job 1 Job 2 I/O 6 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo Evoluzione dei SO: 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 Proc I/O 1 2 1 2 2 3 1 1 1 1 2 3 3 1 1 2 3 4 5 10 11 6 7 8 9 1 2 12 13 8 Il Sistema Operativo Evoluzione dei SO: 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 Proc I/O 1 2 2 3 2 1 2 2 3 3 1 1 1 2 1 1 3 7 8 9 11 4 5 6 10 1 1 12 13 9 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo Evoluzione dei SO: 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 Il Sistema Operativo SO di riferimento Studieremo un generico SO multiprogrammato, con un’unica CPU, dei processori di I/O dedicati DMA, delle periferiche standard CPU BUS MC DMA DMA HD DMA 14 Il Sistema Operativo Il Sistema Operativo Modello onion skin (a cipolla) utente risorse logiche risorse fisiche 15 Il Sistema Operativo 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 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 Il Sistema Operativo Gestore della periferiche Periferica: Periferica: dispositivo dispositivo hardware hardware non non strettamente strettamente necessario necessario alal funzionamento funzionamento dell’elaboratore, dell’elaboratore, inin quanto quanto non non interviene interviene direttamente direttamente nell’elaborazione. 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 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