Introduzione ai Sistemi Operativi
Sistema Operativo Software! Applicazioni! Sistema Operativo! È il livello di SW con cui! interagisce l utente! e comprende! programmi quali :! Compilatori! Editori di testi! Fogli elettronici! Sistemi informativi! Browser per Web!...! Hardware! Windows! Unix/Linux! Mac OS! È il livello di SW che interagisce direttamente! con l hw e che si occupa di una uso corretto! ed efficiente delle risorse fisiche (processore, memorie,! periferiche etc.)!
Funzioni di un S.O. (1/2) Gestione delle risorse hardware: CPU Memoria Centrale Di massa Periferiche e I/O Gestione e controllo delle applicazioni Caricamento Allocazione delle risorse alle applicazioni, accesso delle applicazioni alle risorse Terminazione Malfunzionamenti
Funzioni di un S.O. (2/2) Realizzazione di modalità di accesso alle risorse hardware/software per l utente Comandi/istruzioni/applicativi di base per la gestione delle risorse Realizzazione di opportune astrazioni (anche tramite interfacce grafiche) per la rappresentazione di tali risorse
Elementi di un S.O. Applicazioni! Interprete di! Comandi (shell)! Interfaccia grafica! (desktop manager)! Sistema operativo! Gestore del! Processore! (scheduler)! Gestore della! Memoria! Gestore delle! periferiche! File system! Kernel! Hw!
Modalità di funzionamento Modalità utente: Modalità di funzionamento dell elaboratore che permette un accesso limitato e mediato alle risorse hardware Per accedere alle risorse hardware (ad es. salvare un file) un applicativo deve invocare delle funzionalità offerte dal kernel (system call) Modalità kernel: Modalità riservata al sistema operativo nella quale l accesso alle risorse avviene in modo diretto N.B. Un programma in modalità kernel non è facilmente interrompibile!
Sistemi operativi, utenti e programmi Mono-utente o multi-utente (mono/multiuser) si distingue tra elaboratori di tipo personale e elaboratori utilizzabili da più utenti contemporaneamente Mono o multi-programmati (mono/multitasking) si distingue tra elaboratori in grado di eseguire un solo programma alla volta oppure più programmi contemporaneamente Praticamente tutti i sistemi operativi attuali sono di tipo Multi-utente e Multi-programmati
Esecuzione di applicazioni Caricamento del programma eseguibile da un supporto di memorizzazione di massa in memoria centrale Allocazione del tempo del processore alle applicazioni da eseguire Se più programmi possono essere attivi l unità centrale deve essere virtualmente divisa tra di essi Il S.O. deve quindi poter dinamicamente attivare e disattivare l esecuzione dei programmi
Gestione dei processi
Nozione di processo Si definisce un processo un programma attivato, compresi i propri dati e tutte le informazioni necessarie a ricostruirne il contesto di esecuzione Processo = programma attivato + contesto di esecuzione In un contesto multi-programmato il primo processo (scheduler) in esecuzione ha come compito la gestione (attivazione e allocazione del tempo della CPU al processo, e disattivazione) degli altri processi
Lo scheduler Al fine di poter eseguire più processi tramite una singola CPU, si usa una tecnica detta di time-sharing Eseguo Proc1! Eseguo Proc2! Eseguo Proc3! Eseguo Proc1! Quanto di tempo! 20-100 ms! Interruzione: il SO! riprende il controllo e decide chi! eseguire nel quanto successivo! Periferica orologio interno!
Attivazione/arresto dei processi Al fine di poter arrestare un processo, garantendo la possibilità di riattivarlo in seguito allo stesso punto nel quale era stato interrotto, va salvato il contesto di esecuzione Il S.O. è quindi dotato di opportune strutture per la memorizzazione dei processi attivi e del loro stato (tabella dei processi)
Processi e stati possibili Interruzione HW! asincrona! Stati possibili per i processi Running (in esecuzione): attualmente la CPU sta eseguendo il programma associato Blocked (bloccato): il processo non è attivo perchè ha richiesto un operazione di I/O che non è ancora stata gestita Ready (pronto): il processo potrebbe essere in esecuzione (non è in attesa di I/O) ma attualmente la CPU è allocata ad un altro processo
Strategie di attivazione e gestione dei processi Diverse possibili strategie di attivazione dei processi a coda : il processo attualmente gestito, finito il suo quanto di tempo, viene messo in coda alla lista dei processi da gestire a lotti : i programmi vengono eseguiti interamente uno dopo l altro strategie più complesse (ad es. code con priorità)
Gestione della memoria
Il gestore della memoria Tutti i programmi che compongono il SO ed i programmi applicativi attivi usano contemporaneamente la RAM Il gestore della memoria si preoccupa di fare condividere la RAM ai vari processi in esecuzione in modo che : ogni processo abbia un suo spazio privato distinto dagli altri (e inaccessibile agli altri) ogni processo abbia abbastanza memoria per eseguire il proprio algoritmo
Problemi di gestione della memoria In un contesto multi-programmato possono essere attivi molti programmi, con i relativi processi e contesti di esecuzione I dati su cui i programmi operano possono occupare grandi quantità di memoria, anche superiori alla capacità della memoria centrale à Necessità di gestire in modo dinamico anche la memoria
Tecniche di gestione della memoria Virtualizzazione: la memoria di massa viene vista come un estensione della memoria centrale dove collocare dati e processi non attualmente in esecuzione (swapping) A tal proposito la memoria viene suddivisa in unità dette pagine È necessario tenere traccia anche della memoria occupata dai vari processi, e del fatto che sia memoria centrale o di massa (tabella delle pagine)
Strategie per la gestione della memoria Le pagine salvate in memoria di massa richiederanno più tempo per essere utilizzate (e possono richiedere lo scaricamento di altre pagine su disco) Necessario cercare di minimizzare la frequenza di queste operazioni Strategie di gestione della memoria virtuale FIFO (First In First Out): la pagina più vecchia viene scaricata Non usata di recente (Not Recently Used): una fra le pagine non usate di recente viene scaricata Strategie più complesse (es. FIFO+NRU)
Gestione delle periferiche
Driver e controller (1/3) Ogni periferica è gestita in cooperazione da due entità: il Controller: un dispositivo hardware che colloquia direttamente con la parte elettrico/ meccanica della periferica il Driver: un programma software opportunamente progettato e realizzato per essere in grado di colloquiare con il controller di offrire (tramite il S.O.) funzionalità base di accesso alla periferica
Driver e controller (2/3) Solitamente il driver non è sviluppato da chi costruisce il S.O. ma da chi costruisce il dispositivo (in accordo alle specifiche del S.O.) Al fine di poter accedere correttamente al dispositivo è necessario installare il driver associato nel S.O. Possibili problemi: il driver viene spesso eseguito in modalità kernel!
Driver e controller (3/3) Quando si installa un nuovo driver bisogna fornire delle informazioni a basso livello per permettere di colloquiare correttamente con il S.O. con l hardware Periferiche plug & play: aderiscono ad un protocollo standard per la negoziazione automatica dei parametri di configurazione sono generalmente tutte le periferiche dei PC odierni... ciononostante l installazione di nuove periferiche a volte non è banale
Il File System
File System È la parte del S.O. che permette di mantenere dati e programmi in modo persistente nella memoria di massa fornisce funzionalità di accesso a questo genere di risorsa per le applicazioni permette di organizzare dati e programmi in modo da renderne agevole la localizzazione da parte dell utente umano à necessario definire opportune astrazioni! può essere modificata per cancellare dati obsoleti, aggiornare l organizzazione etc.
File System e astrazioni Le astrazioni generalmente fornite sono: il file (o archivio) : una sequenza di byte che contiene dati o programmi rappresentati con una opportuna codifica binaria il folder/directory (o cartella) : astrazione che permette di collezionare insieme più file e/o folder Regole base Esiste una radice dell albero (dischi e/o partizioni in Windows, / in Linux Un file o folder appartiene direttamente ad un solo folder (ma esistono eccezioni...) Due file o folder con lo stesso nome non possono appartenere allo stesso folder
File Un file è denotato da una descrizione più un estensione Es. 13-11-06-sistop.ppt L estensione in genere denota il tipo di file (es. una presentazione in formato PowerPoint) Come si crea un file utilizzando una applicazione dando comandi diretti al SO es. chiedendo di duplicare un file esistente (taglia e incolla ) via shell o interfaccia grafica
Folder Anche i folder sono identificati univocamente da nomi es Didattica, Matematica, Lab_Info non usano estensioni Creazione, modifica (nome/posizione), rimozione gestita dal S.O. tramite shell o interfaccia grafica
Funzionalità non discusse Gestione della sicurezza In contesto multi-utente più persone possono accedere al sistema Necessità di gestire la privacy à file e folder devono avere un proprietario e dev essere possibile definire politiche di controllo degli accessi Strumenti di utilità vari Interfacce utente