Software di Sistema: S.O. = Insieme di programmi che ha il compito di gestire l'hardware rendendo più facile l'utilizzo di altri programmi. Drivers = Programmi che gestiscono le unità periferiche che il S.O. non è in grado di gestire autonomamente. Servizi di sistema = Programmi che forniscono particolari servizi ad altri programmi ampliando i servizi già forniti dal S.O. Software applicativi (e programmi di utilità di sistema) = Programmi attraverso cui l'utente può interagire direttamente con la macchina. La differenza tra software applicativi e programmi di utilià di sistema sta nel fatto che i primi eseguono funzioni richieste dall'utente mentre i secondi si occupano della gestione, tra questi c'è anche l'interfaccia utente. Grazie ad essa l'utente può interagire con la macchina attraverso il cursore mosso con il mouse. Esiste anche la possibilità di utilizzare un'interfaccia a riga di comando che permette all'utente di digitare i propri comandi sottoforma di testo scritto con un particolare linguaggio (Linguaggio di comandi di sistema). Componenti di un S.O.: Nucleo (kernel). Driver dei dispositivi. Servizi di sistema. Programmi di utilià di sistema. Utenti del Sistema Programmi applicativi Programmi applicativi e di utilià di sistema Servizi di sistema Nucleo del Sistema Operativo Interfaccia con i programmi applicativi Livello privilegio 2 e 3 Sistema Operativo Livello privilegio 1 Livello privilegio 0 Drivers dei dispositivi Piattaforma hardware Programmi applicativi: livello privilegio 3. Programmi di utilità di sistema: livello privilegio 2. I sistemi operativi BATCH. Sono usati nei mainframe e nei supercomputer in quanto ottimizzano l'utilizzo delle risorse. Gli utenti non possono accedere direttamente alla macchina, possono solo gli operatori. Utenti Operatore Lettura di schede Unità centrale Stampante = Schede forate Sistemi operativi Time Sharing. Interazione diretta con l'utente. Utente Terminale Unità centrale Sistema operativo NOS. Server Client Client Rete di computer Client Server Server Sistemi operativi Real Time. Sono sistemi operativi "dedicati" ovvero S.O. che devono garantire agli utenti un processo automatizzato. S.O. Real Time Attuatori Sistema di controllo Sistema controllato Sensori Sistemi Operativi: Batch. Time Sharing. Network O.S. Real Time. di uso generale Sistemi Operativi per dispositivi mobili. Smarthphone. Palmabili. Tablet. Ebook reader. Il nucleo del Sistema Operativo si divide in 4 moduli: modulo che si occupa della gestione della CPU modulo che si occupa della gestione della Memoria centrale (RAM) modulo che si occupa della gestione dei dispositivi di Input e Output (IO) modulo che si occupa della gestione dei Files (File System) Il modulo della gestione della CPU: (MultiTasking) Programmi: A Esecuzione Esecuzione Tempo Esecuzione Esecuzione B Tempo S.O. Tempo = 1µs = 10-6 s Processi Processo = rappresentazione dell'attività di esecuzione di un programma da parte del sistema. Ad ogni processo viene assegnato un insieme di risorse, in caso la risorsa non possa essere esclusivamente assegnata ad un solo processo viene condivisa senza interferire con gli altri processi (ad esempio: il processore). Descrittore di processi = struttura di dati in cui sono contenute tutte le informazioni relative ad un processo: Codice identificativo del processo (codice univoco). Codice identificativo del processo padre. Stato dei registri del processore (valore). Quando il processo termina, il valore dei registri viene salvato nel descrittore di processo. Aree di memoria riservate al processo. Altre risorse Hardware o Software riservate al processo. (Esempio: dispositivo di IO o un file). Fasi di un processo: Stato di esecuzione Stato di bloccato Stato di pronto (Esecuzione delle istruzioni del programma). (Il programma non può essere eseguito, ad esempio sta attendendo la fine di un operazione IO). (Non è né in fase di esecuzione né in stato di bloccato tuttavia non può essere mandato in esecuzione: è pronto per essere eseguito). Un processo può passare da stato di esecuzione a stato di pronto quando ha raggiunto il limite massimo di tempo asseganto al processo. Diagramma delle transizioni di stato: Pre-rilascio Pronto Schedulazione Si verifica l'evento atteso dal processo Bloccato Standard "posx": Esecuzione Il processo si pone in attesa del verificarsi di un evento (usato principalmente da Unix e Linux) Chiamate di sistema per la gestione dei processi. Chiamate di sistema per la gestione della memoria (RAM). Chiamate di sistema per la gestione dei file. Quando un processo deve creare un altro procesos esegue una chiamata di sistema chiamata "fork". La chiamata "fork" non necessita di alcun parametro d'ingresso ma restituisce un parametro d'uscita: il PID ovvero il codice di identificazione del processo figlio il quale condividerà le stesse istruzioni del processo padre e ha una copia dei valori di ciascuna variabile, ma non i stessi dati. Processo chiamante Codice delle istruzioni Codice dei dati Nuovo processo Copia identica del codice delle istruzioni Copia del codice dei dati Se il valore restituito è: minore di 0: uguale a 0: maggiore di 0: Errore di creazione del processo. Processo figlio. Processo padre. ... ... ... pid = fork(); if (pid == 0) processoFiglio(...); else processoPadre(...); ... ... ... void execv (char * path, char * argv[]); char * path char * argv[] = = stringa che contiene il nome del percorso di un programma. argomenti che saranno passati al programma. Processo chiamante Codice delle istruzioni Codice dei dati Path Dati di path Il main int main (int argv, char * argv[]) Copia void exit (int status); status = numero intero che rappresenta il motivo dell'uscita. uguale a 0 diverso da 0 = terminazione corretta. = terminazione errata, il numero indica la causa dell'errore. Schedulazione. Schedulazione: la selezione tra tutti i processi in stato di pronto di un processo da mandare in esecuzione. I criteri attraverso cui vengono scelti i processi: Fattori di utilizzo del processore. Tempo medio di attesa in stato di pronto di un processo. Tecnica di schedulazione FCFS (First Came First Serve). Coda dei descrittori di processi pronti: Creazione di un nuovo processo oppure un passaggio dallo stato di bloccato allo stato di pronto. Schedulazione Questa tecnica ha un difetto: se un processo non termina gli altri non verranno più eseguiti e quindi il Tattesa sarebbe infinito. Per risolvere hanno aggiuntoil "pre-rilascio" ovvero un tempo massimo per cui un processo può rimanere in esecuzione, limitando così il Tattesa massimo. Questa tecnica prese il nome di "Schedulazione Round Robin". ∆ = tempo massimo concesso ad un processo nello stato di esecuzione. n = numero di processi presenti nel sistema contemporaneamente (grado di multiprogrammazione). Tattesa <= n • ∆ Tecnica di schedulazione a classi di priorità. Priorità statiche: La priorità non cambia. Tipo di processo Background Processo iterativo Processo di sistema Real Time Priorità 1 2 3 4 Priorità dinamiche: La priorità viene modificata durante la vita di un processo. Gestione della Memoria. Memoria Memoria centrale Memoria secondaria Tipo di memoria Volatile Permanente Tempo di accesso Ridotto (veloce) Elevato (lenta) Costo Elevato Ridotto Capacità Ridotta Elevata Tipi di gestione: Programmi applicativi Sistema Operativo Driver dei dispositivi FFF...F 0 Programmi applicativi Sistema Operativo FFF...F 0 FFF...F Flash Rom Programmi applicativi Sistema Operativo 0 Problema della rilocazione statica: La ROM non può essere modificata, tuttavia se il software (potendo accedere a tutte le aree di memoria) accedesse all'area dedicata all'SO o ad un altro processo interferendo, le conseguenze sarebbero imprevedibili. Per risolvere furono creati due tipi di indirizzi ovvero: Fisici: Indirizzi di ciascuna cella di memoria). Logici: Indirizzi delle istruzioni di ciascun programma). Gli indirizzi logici vengono trasformati in indirizzi fisici all'avvio del programma in base allo stato della memoria. Indirizzo logico Logica di traduzione Indirizzo fisico La logica di traduzione fa uso di particolari registri: Registro di base: Registro limite: Contiene l'indirizzo della prima cella di memoria utilizzata dal programma). Contiene la dimensione dell'area di memoria utilizzata da un programma). Ripeti: Se indirizzoLogico > registroLimite Termina il processo altrimenti indirizzoFisico = calcola (indirizzoLogico + registroBase) Fino alla fine del programma Questo viene eseguito dal processore per ogni istruzione del programma. Cambio di contesto. Il passaggio dell'esecuzione di un programma ad un altro viene gestita dal Sistema Operativo richiede: Salvataggio del contenuto di tutti i registri del processore nel descrittore del processo interrotto. Inserimento del descrittore del processo nella coda dei descrittori dei processi pronti. Selezione del nuovo processo da porre in stato di esecuzione. Copia dei registri del nuovo processo nel processore. Successivamente il Sistema Operativo cede il controllo al nuovo processo. Situazione B termina D viene creato A termina E viene creato ///////// / C ///////// / C ///////// / C ///////// / C ///////// / C B ///////// ///////// ///////// D D D A ///////// ///////// / A A E SO SO SO ///////// // SO SO Compattazione ///////// ///////// C D E SO Swapping. Area di swap Immagini dei processi attivi. Copia del contenuto del processo, se presente nell'area di swap, nella memoria centrale (swap-in). Copia del contenuto nell'area di swap (swap-out). ///////// / C B A SO Visto che l'accesso al disco richiede un tempo elevato e lo swapping viene eseguito anche centinaia di volte al secondo, è da utilizzare il meno possibile. Trash = Quando ci sono troppi processi, troppe operazioni di swap. Memoria virtuale. La memoria virtuale può essere vista come un'area della memoria secondaria che simula il funzionamento di una memoria centrale di capacità superiore a quella della memoria centrale disponibile nel computer. Tecniche di implementazione della memoria virtuale: Paginazione. Segmentazione. Paginazione + Segmentazione. Paginazione. Divisione dell'immagine di un programma in varie pagine, tutte di dimensione costante e comune. 1KB < x < 1GB. Indirizzi logici. Tabella delle pagine. 32 KB Memoria centrale. Indirizzi fisici. Pagina 7 Pagina 7 Pagina 7 Pagina 4 Pagina 4 Pagina 4 Pagina 3 Pagina 3 Pagina 3 Pagina 0 Pagina 0 3 2 1 0 Pagina 0 0KB MMU (Memory Management Unity) Traduce gli indirizzi logici in indirizzi fisici. Indirizzo logico Numero della pagina 100 Pagina 4 OFFSET (posizione all'interno della pagina della cella indirzzata) 000010000001 129 Per trasformare: Va a leggere nella tabella delle pagine la posizione della pagina nella memoria centrale e lo sostituisce. 100 010 Page fault. Quando la pagina non è contenuta in memoria centrale. SO sceglie una pagina fisica. Salva il contenuto sul disco. Copia la nuova pagina dal disco alla memoria centrale al posto di quella precedentemente salvata. Descrittore delle pagine logiche. Contiene: Il numero di una pagina fisica. Il bit P (presenza): 1 = presente. 0 = non presente. La tabella delle pagine può essere memorizzata: MMU Memoria Centrale (Troppi registri e quindi costo troppo elevato). (Rallenta l'esecuzione). CPU MMU Tabella delle pagine Memoria Centrale Per risolvere: Memoria associativa. Memoria presente nella MMU che contiene i descrittori delle pagine usate più frequentemente. Pagina logica 0 3 4 7 P 1 1 1 1 Pagina fisica 0 1 2 3 Scelta delle pagne da rimpiazzare. Per evitare lo Trashing (blocco del sistema) bisogna fare in modo che la pagina sostituita non venga più richiesta o almeno per un lungo periodo di tempo. Tecniche del rimpiazzamento: Casuale. Ottimale. Consiste nel scegliere la pagina che verrà richiesta dopo tutte le altre ma non è realizzabile in quanto richiederebbe di saper prevedere il futuro. st Recently Used (LRU). 5 Sec Per fare ciò serve che ogni descrittore di pagina: 3 Sec 7 Sec P Pagina Fisica M Contatore 1 Sec Bit che dice se la pagina è stata: 1: Modificata. 0: Non modificata. Conta il numero di istruzioni del programma che sono state eseguite, è di almeno 64bit. Not Recently Used (NRU). P M 1 0 0 x 1 1 P M 0 0 0 1 1 0 1 1 Pagina Fisica 80 5 U 0 0 0 Azzerato periodicamente Non utilizzata, non modificata. Utilizzata, non modificata. Non utilizzata, modificata (modificata prima dell'azzeramento). Utilizzata, modificata. Segmentazione. Segmenti del codice delle istruzioni Main Sottoprogramma1 Segmenti del codice dei dati Sottoprogramma2 Vettore1 Vettore2 Vettore3 Vantaggi: Collegamento dinamico Condivisione del codice (Alcuni segmenti di codici o dati vengono usati contemporaneamente da più programmi). Segmenti di dimensione variabile (La dimensione di ciascun segmento può variare durante l'esecuzione del programma). Implementazione: Indirizzo logico: Numero del segmento Indirizzo di una cella di memoria all'interno del segmento Tabella dei segmenti: N 0 1 2 ... ... ... ... ... ... ... n-1 P Indirizzo base Lunghezza Traduzione logico - fisico: Accedi all'elemento della tabella con indice "n" segmento. Se P = 0 "Page fault". altrimenti "confronta offset con lunghezza" se offset > lunghezza Interruzione. altrimenti (offset <= lunghezza) indirizzo fisico = base + offset. In caso di Page fault: L.R.U. Tabella dei segmenti più il campo "M" e il campo "Contatore". N.R.U. Tabella dei segmenti più il campo "M" e il campo "U". Paginazione e Segmentazione. Suddivisione dei segmenti in pagine di uguale dimensione. Ad ogni processo viene associata una tabella di descrittori di segmenti Ad ogni segmento viene associata una tabella delle pagine. Intel x86 Per ogni programma. 8192 8191 Segmenti locali. Segmenti globali. 220 pagine di 4KB per segmento. Dimensione massima di un segmento: 4GB. Dimensione massima di un processo: 32TB. File System. File System: Parte del Sistema Operativo che si occupa delle informazioni contenute nella memoria secondaria (gestisce la memoria di massa di un computer nascondendo all'utente tutti i dettagli relativi al suo funzionamento in modo che l'utente possa accedervi molto semplicemente attraverso un numero limitato di comandi e/o servizi di sistema. File: Concetto astratto, contenitore di tipo permanente di informazioni che possono essere lette o modificate d programmi. Comandi e/o servizi per la gestione dei file: Comandi per la creazione di file. Comandi per l'eliminazione di file. Comandi per la copia di file / il contenuto di file. Comandi per la rinominazione di file. Servizi per l'apertura / lettura / scrittura / chiusura di file. Proprietà: Nome (univoco). Tipo (contenuto / estensione). Data di creazione. Data di ultimo accesso. Data di ultima modifica. Nome dell'utente creatore del file. Nome del proprietario del file. Attributi: Sola lettura. File nascosto. Sistema. Variabile: Contenitore di tipo volatile di informazioni. Differenza Memorizzazione permanente Capacità elevata Condivisione di dati Accesso (lettura / scrittura) rapido File • • • Nomi dei file: Sequenze di caratteri. Scrittura di un file: Sequenza di Byte (codici binari di 8-bit). Sequenza di record: A lunghezza fissa. A lunghezza variabile. Variabile •