Sistemi Operativi Insieme di programmi che permettono di gestire le risorse (HW e SW ) efficientemente. Funzioni principali: conservare lo stato delle risorse e del processo che le sta utilizzando accettare e soddisfare le richieste di uso di risorse risolvere i conflitti tra più risorse gestire gli utenti e i loro accessi Sistemi Operativi Il SO è costituiti da un insieme di moduli, ciascuno dedicato a svolgere una determinata funzione; I vari moduli del SO interagiscono tra di loro secondo regole precise al fine di implementare le funzionalità di base dalla macchina. Sistemi Operativi Utente SW applicativo Interprete comandi Gestione memoria Gestione processore HW Gestione periferiche File system Sistema Operativo Sistemi Operativi Sistemi Operativi (nucleo) Programma: una entità statica composta dal codice eseguibile dal processore. Processo: entità dinamica relativa al programma in esecuzione, ed è composto da: codice del programma dati necessari all’esecuzione del programma stato dell’esecuzione Sistemi Operativi (nucleo) Il nucleo o kernel si occupa di gestire la sincronizzazione, interruzione e riattivazione dei processi; La gestione dei processi avviene in vari modi, in funzione del tipo di utilizzo cui il sistema è rivolto. Sistemi Operativi (nucleo) Lo Scheduler è quella parte del nucleo che si occupa della distribuzione del tempo di CPU tra i vari processi. Nel caso di elaboratori multi-processore lo Scheduler si occupa anche di gestire la cooperazione tra le varie CPU presenti nel sistema. Sistemi Operativi (nucleo) Time Sharing: Il S.O. condivide la CPU tra più processi, suddividendo il tempo di esecuzione del processore tra più utenti Ogni processo utilizza periodicamente un intervallo di tempo prestabilito (quanto) compreso tra 100 e 200 ms Durante il quanto di esecuzione di un processo, tutti gli altri processi sono sospesi Al termine di ogni quanto, il processo in esecuzione viene sospeso e il S.O. assegna la CPU ad un altro processo. Sistemi Operativi (nucleo) Quando un processo non è in esecuzione può assumere due diversi stati: attesa: il processo è sospeso finché un determinato evento esterno non si verifica (i.e., I/O) pronto: il processo è sospeso finché non gli viene concesso l’uso della CPU in ogni instante di tempo vi è un solo processo attivo, e tutti gli altri sono o in attesa o pronti, e memorizzati in apposite code che ne indicano l’ordine di esecuzione. Sistemi Operativi (nucleo) Selezione primo processo pronto e sua esecuzione Inizio esecuzione (accodamento) READY RUN Processo attivo Coda processi pronti Termine quanto di tempo Completamento operazione I/O WAIT Coda processi in attesa Richiesta operazione I/O Termine elaborazione Sistemi Operativi (nucleo) Se il processo richiede operazioni ad altri dispositivi (es. Operazioni di I/O), la CPU rimarrebbe inutilizzata: il SO mette il processo in stato di attesa, il SO sceglie un nuovo processo tra i pronti dalla tabella, quando l’operazione sarà finita, il SO dichiarerà di nuovo pronto il processo Permette un utilizzo molto più efficiente delle risorse di elaborazione. Esempio: durante la digitazione di un documento di testo, l’utente compie molte pause per riflettere sul contenuto che sta scrivendo questo tempo è usato dal sistema per compiere altre operazioni in contemporanea Sistemi Operativi (nucleo) Le politiche utilizzate dallo scheduler : Preemptive: la CPU in uso da parte di un processo può essere tolta e passata a un altro in un qualsiasi momento. Non Preemptive: una volta che un processo ha ottenuto l’uso della CPU non può essere interrotto fino a che lui stesso non la rilascia. Sistemi Operativi (nucleo) I SO che gestiscono l’esecuzione di un solo programma per volta sono catalogati come mono-tasking; Non è possibile sospendere l’esecuzione di un programma per assegnare la CPU a un altro Sono storicamente i primi SO (es MSDOS). Sistemi Operativi (nucleo) Tempo di utilizzo della CPU. Tempo di attesa di eventi esterni. C B A t T Sistemi Operativi (nucleo) I SO che permettono l’esecuzione contemporanea di più programmi sono definiti multitasking (Windows-NT , Linux); Un programma può essere interrotto e la CPU passata a un altro programma Sistemi Operativi (nucleo) Tempo di utilizzo della CPU. Tempo di attesa di eventi esterni. C B A t T multi-tasking T mono-tasking Sistemi Operativi (nucleo) Throughput: utilizzo della CPU = Tp/Tt Tp = tempo dedicato dalla CPU alla esecuzione dei processi utente Tt = tempo totale di osservazione Alta efficienza: throughput tendente ad 1. Overhead: tempo impiegato dal SO per trasferire il controllo da un programma ad un altro Sistemi Operativi (nucleo) Politiche dello scheduler: Privilegiare l’utilizzo della CPU. Aumentare il throughput. Ridurre il tempo di "turnaround» (permanenza di un processo nel sistema). Ottimizzare i tempi di risposta all’utente. Garantire a tutti i processi l’uso equo delle risorse (fairness). Sistemi Operativi (nucleo) I SO devono consentire anche la sincronizzazione dei processi. Più processi su una macchina posso essere: in Competizione: quando cercano di utilizzare una stessa risorsa contemporaneamente; in Cooperazione: quando uno ha bisogno dell’altro per evolvere. La sincronizzazione avviene grazie a variabili condivise dette Semafori o a scambio di messaggi tra processi. Sistemi Operativi (gest. M.C.) Ogni processo per essere eseguito è necessario che il suo codice e i suoi dati siano caricati in memoria. Nei sistemi multitasking più programmi contemporaneamente possono essere caricati in memoria. Sistemi Operativi (gest. M.C.) Il gestore della memoria è incaricato di: 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 Sistemi Operativi (gest. M.C.) Per ogni «blocco» di memoria il SO mantiene un descrittore con le informazioni essenziali (indirizzo iniziale, indirizzo finale / dimensione, stato, tipo contenuto, ecc.) Sistema Operativo «libera» Risorse del computer Word «libera» Antivirus «libera» Sistemi Operativi (gest. M.C.) Le tecniche di gestione della m.c. provocano uno spreco di spazio di memoria, noto con il nome di frammentazione: Con i “blocchi” di dimensioni fisse, all’interno di ogni blocco ci sara’ uno spazio non utilizzato: frammentazione interna Con i “blocchi” di dimensioni variabili, dopo un certo numero di allocazione e deallocazione di processi, si formeranno un certo numero di porzioni di memoria libere (“buchi”), di dimensioni insufficienti a contenere un processo: frammentazione esterna Sistemi Operativi (gest. M.C.) N.B. Per Frammentazione nelle memorie di massa si intende la divisione di un file in diverse catene di blocchi non contigue. La frammentazione riduce drasticamente le prestazioni perché non posso leggere il file in un semplice giro della testina, ma devo seguire un percorso e ricostruire il file in memoria Sistemi Operativi (gest. M.C.) Se l’effettiva memoria fisica non è sufficiente a contenere tutto lo spazio richiesto dai processi, il gestore della memoria risolve i conflitti garantendo uno spazio di memoria virtuale anche superiore alla capacità della memoria fisica, mantenendo nella memoria centrale solo le parti di codice e dei dati che servono in quel momento. Sistemi Operativi (gest. M.C.) In un sistema che utilizza la memoria virtuale, soltanto le parti del programma o dei dati al momento necessarie vengono caricate nella memoria centrale, il resto è salvato sul disco fisso fino a che non si renda necessario il suo spostamento nella memoria reale. Swap-out Swap-in Sistemi Operativi (gest. M.C.) Paginazione Suddivisione della memoria centrale in blocchi di dimensioni fisse (pagine) tipicamente 2KB o 4KB. L'immagine di un processo viene suddivisa in pagine caricate all'interno della memoria principale in modo indipendentemente, anche in posizioni non contigue. Sistemi Operativi (gest. M.C.) Il SO gestisce una Page Table che memorizza per ogni pagina (spazio logico) del processo la sua posizione in memoria centrale (spazio fisico) Sistemi Operativi (gest. M.C.) Memoria centrale (spazio fisico) pagina 0 Spazio logico processo 1 pagina 1 Spazio logico processo 2 pagina 2 pagina 0 pagina 0 pagina 3 pagina 1 pagina 1 pagina 4 pagina 2 pagina 5 pagina 3 pagina 6 pagina 7 Sistemi Operativi (gest. M.C.) Se durante l’esecuzione del processo, la CPU fa riferimento ad un indirizzo che appartiene ad una pagina non caricata in memoria centrale – page fault - , il SO provvede a mettere il processo in stato d’attesa e a far partire il caricamento della pagina richiesta, - swap - dopo di che’ il processo puo’ riprendere la sua esecuzione. Sistemi Operativi (gest. M.C.) Nella paginazione esiste ancora il problema della frammentazione, che e’ pero’ limitato al fatto che l’ultima pagina di ogni processo è solo parzialmente occupata. Mediamente si può considerare uno spreco pari a circa ½ pagina per ogni processo. Sistemi Operativi (gest. M.C.) Segmentazione / Partizionamento La memoria fisica è suddivisa in un determinato numero di aree, "segmenti" o "partizioni". In ciascun segmento può essere caricato un solo programma per volta per essere eseguito. Un segmento può essere utilizzato solo da quel programma, fino a quando non viene deallocato dal S.O. Sistemi Operativi (gest. M.C.) Ogni entry nella segment table contiene l’indirizzo base di un segmento e la sua lunghezza. 0 Sistema Operativo Segment table Inizio Dimensione 0 20M 22M 17M 37M 10M «libera» 20M Risorse del computer 22M 37M Word «libera» 47M Sistemi Operativi (gest. M.C.) Svantaggio principale: frammentazione. La memoria non viene sfruttata completamente in quanto ciascun programma deve essere allocato in M.C. in maniera contigua, per cui é necessario che esista un segmento di memoria libero sufficientemente grande. Sistemi Operativi (gest. M.C.) Anche se in totale vi é una grossa parte della M.C. libera, potrebbe accadere che un nuovo programma debba attendere prima di essere allocato perché le frammentazioni sono sparse. Per ovviare a ciò esiste un processo di compattamento: traslazione dei programmi. Sistemi Operativi (gest. M.C.) Politiche di allocazione della m.c. partizionata: First-fit: Alloca il primo frammento libero sufficiente. Best-fit: Alloca il più piccolo frammento libero sufficiente; ricerca sull’intera lista e produce frammenti piccoli. Worst-fit: Alloca il più grande frammento; ricerca sull’intera lista e produce frammenti grandi. Statisticamente First-fit e Best-fit sono migliori del Worst-fit in termini di velocità e uso di memoria. Sistemi Operativi (gest. M.C.) Nei moderni SO con m.c. di grandi capacità si utilizza la paginazione dei segmenti: un segmento viene realizzato tramite un insieme di pagine. Questa soluzione differisce dalla segmentazione “pura” poiché una entry nella segment table non contiene l’indirizzo base di un segmento, ma l’indirizzo base della page table di quel segmento. Sistemi Operativi (gest. M.C.) Un’area di memoria nota come Cache mantiene alcuni blocchi logici in memoria per un accesso più veloce ai dati. Quando è necessario l'accesso ad un dato, questo dato viene prima cercato nella cache. Se è presente, viene utilizzata la copia presente. Viceversa, viene recuperato dalla memoria principale, e memorizzato nella cache, nel caso possa servire successivamente. Sistemi Operativi (gest. perif.) Gestore delle periferiche: permette la comunicazione tra il calcolatore e tutti i dispositivi esterni ad esso collegati, assegnando i dispositivi ai processi che ne fanno richiesta e controllando i dispositivi stessi. Sistemi Operativi (gest. perif.) Gestore delle periferiche: garantisce un comportamento asincrono dell’ambiente rispetto al calcolatore e gestisce gli accessi contemporanei da parte di più periferiche Sistemi Operativi (gest. perif.) Particolari programmi detti device driver gestiscono le operazioni di in/out tra le varie periferiche collegate alla macchina. I device driver sono spesso realizzati dai produttori dei dispositivi stessi che ne conoscono le caratteristiche fisiche in maniera approfondita. Sistemi Operativi (gest. perif.) Funzioni device driver : Rendono trasparenti le caratteristiche fisiche tipiche di ogni dispositivo; Gestiscono la comunicazione dei segnali verso i dispositivi; Gestiscono i conflitti, nel caso in cui due o più task vogliono accedere contemporaneamente allo stesso dispositivo. Sistemi Operativi (gest. perif.) Nelle versioni più recenti dei sistemi operativi, la necessità di configurare “manualmente” ogni periferica tramite appositi driver viene sostituita da funzioni Plug&Play Sistemi Operativi (gest. perif.) Modalità Plug&Play: ad ogni accensione il S.O. scandisce tutte le risorse HW rilevando quelle non ancora configurate ogni periferica comunica al S.O. i driver di cui necessita ed il S.O. installa gli appositi driver senza l’intervento dell’utente. Sistemi Operativi (gest. perif.) Spooling: tecnica utilizzata dai driver per rendere virtuali più periferiche non condivisibili. Una stampante e più processi che intendono stampare: ogni processo invia il file da stampare al driver della stampante, che lo mette in coda nella directory di spooling i file in coda vengono stampati secondo l’ordine di arrivo quando a directory di spooling si svuota il driver rimane in memoria in attesa di una nuova richiesta di stampa. In questo modo i processi evitano lunghe attese ed operano indipendentemente dalla periferica. Sistemi Operativi (file system) Il File System gestisce le memorie di massa cioè organizza logicamente i dati e le possibili operazioni su di essi: recupero, cancellazione o modifica di dati memorizzati copia di dati per backup o trasferimento da supporto a supporto. I servizi vengono forniti sia ai programmi applicativi che direttamente agli utenti. Sistemi Operativi (file system) Nei sistemi multi-utente, il File System deve mettere a disposizione dei meccanismi di protezione in modo tale da consentire agli utenti di proteggere i propri dati dall’accesso da parte di altri utenti non autorizzati. Permette anche la condivisione o il mascheramento, dei file, con altri utenti. Sistemi Operativi (file system) Funzioni tipiche del File System : Fornire un meccanismo per l’identificazione dei Files; Fornire opportuni metodi per accedere ai dati; Rendere trasparente la struttura fisica del supporto di memorizzazione; Implementare meccanismi di protezione dei dati. Sistemi Operativi (file system) File e cartelle/directory sono organizzati secondo una struttura gerarchica ad albero che ne rende semplice la localizzazione: • Radice = radice del’intero file system • Nodi interni = cartelle / directory • Foglie = documenti/programmi Sistemi Operativi (file system) C:\ Documenti Musica Programmi Photoview Moderna tesi.doc Adobe Classica lucidi_tesi.pps mare.jpg Dreamweaver.exe On The Run.mp3 Breathe.mp3 Time.mp3 Sinfonia 9.mp3 Bolero.mp3 Sistemi Operativi (file system) Path names. In un’organizzazione ad albero i nomi devono contenere informazioni sui cammini sui quali si trovano i corrispondenti file: Nomi relativi. Relativi ad una particolare directory (es. ..\..\esami\dispense.ppt) Nomi assoluti. Specificano il cammino a partire dalla root del file system (es. c:\documenti\esami\dispense.ppt) Sistemi Operativi (file system) Entità atomica è il file, contenitore logico di informazioni (dati o istruzioni). Per ogni file vengono registrati: Identificatore (nome.estensione) Periferica (drive) e percorso sulla periferica Data creazione Dimensione Posizione effettiva dei dati nella memoria di massa Sistemi Operativi (file system) Altre informazioni: applicazione che consente all’utente di “usare” il file in base all’estensione (es. .exe file eseguibili .txt file di testo .doc documenti di testo (MS Word) .mp3 file audio .bmp immagine in formato bitmap data di ultima modifica diritti di accesso al contenuto del file Attributi: file di sistema, file nascosto. Tipo: File di caratteri e binari (eseguibili), cartella. Sistemi Operativi (Interprete Comandi) L’interprete dei comandi o shell è quella parte più esterna di un SO che riceve ed elabora le istruzioni impartite da un utente. I SO per rendere agevole l’utilizzo del sistema da parte degli utente implementano dei meccanismi di accesso: Interfaccia Utente. Consente di far “girare” i programmi Sistemi Operativi (Interprete Comandi) L’interprete dei comandi interagisce con i moduli interni al SO per eseguire le fasi elementari utili all’esecuzione di un programma: Ricerca e lettura del programma da una cartella della memoria di massa (file system) Caricamento del file in memoria (gestore memoria) Attivazione del processo (nucleo) Sistemi Operativi (Interprete Comandi) Interfaccia testuale. L’utente deve scrivere lo specifico comando rispettandone correttamente la sintassi; la risposta è costituita da codici numerici o messaggi prefissati. Il formato è la riga di comando Sistemi Operativi (Interprete Comandi) Interfaccia testuale Sistemi Operativi (Interprete Comandi) Alcuni comandi DOS FORMAT A: inizializza un dischetto (crea root e FAT) MD <nome> (ovvero MD <pathname>) crea una nuova sottodirectory nella directory corrente (ovvero della directory <pathname>) CD <pathname> la directory <pathname> diventa la d. corrente DIR (ovvero DIR <pathname>) elenca il contenuto della directory corrente (ovvero nella directory <pathname>) Sistemi Operativi (Interprete Comandi) Interfaccia grafica. Tramite un dispositivo di puntamento l’utente seleziona il comando da un menù o da un oggetto grafico visualizzato (pulsante, area, campo…). Una GUI (graphical user interfaces), tipica è quella di tipo WIMP (Windows, Icons, Menus, Pointing device). Sistemi Operativi (Interprete Comandi) Interfaccia grafica: • Mouse che sposta un cursore • Cut & paste (copia e incolla) • Drag & drop (trascina e lascia) • Icone associate a file, directory, dischi, … • Directory come cartelle • Pulsanti • Finestre: cornici con strumenti • Menu di comandi Sistemi Operativi (Interprete Comandi) Alcune caratteristiche dell’interfaccia Windows Scrivania (desktop) Il pulsante di avvio La barra delle applicazioni La gestione delle risorse e il file system Proprietà di file e cartelle Menù di scelta rapida Creazione di collegamenti Il cestino Esecuzione di un programma Guida in linea Accessori