Sistemi operativi
Sistema Operativo Ogni computer ha un sistema operativo necessario per eseguire gli altri programmi Il sistema operativo, fra l altro, è responsabile di riconoscere i comandi di input (da tastiera) e di inviarne una copia sullo schermo gestire l uscita dei dati (modem, rete, stampante ecc.) gestisce l archivio dei file (dischi) gestire le unità di memoria aggiuntiva (dischi, dvd, cd, ecc.) gestire la sicurezza (autorizzazione all utilizzo del sistema). Nei sistemi di grandi dimensioni il sistema operativo è anche responsabile della gestione e del coordinamento fra i diversi utenti che utilizzano il sistema
Sistema Operativo Non facile da definire esattamente definizione informale Quello che nel sistema non è applicazione o hardware Software che permette alle applicazioni di utilizzare in modo conveniente l hardware Utenti Applicazioni Word processing, compilatori, basi dati... Sistema Operativo Hardware dispositivi I/O,dischi, CPU, memoria...
Obiettivi del sistema operativo semplificare e ottimizzare l accesso alle risorse dell sistema garantire la correttezza dell esecuzione concorrente assicurare la portabilità delle applicazioni indipendenza dalla piattaforma: stesso hardware sono possibili diversi SO stesso SO può girare su piattaforme HW diverse
Sistema operativo e CPU Struttura a livelli Il livello 2 è il più basso al quale un utente può programmare la macchina Normalmente la programma a livello 5
Sistema Operativo Il sistema operativo fornisce una piattaforma che permette l esecuzione di programmi applicativi e programmi utenti Nel caso dei PC il sistema più noto è windows (prima DOS) altri sistemi noti sono UNIX, LINUX (open source)... L utente interagisce con il sistema operativo con una serie di comandi Esempio: in DOS i comandi copy e rename permettono di copiare e ridenominare i file; comandi analoghi in altri sistemi interfaccie grafiche permettono di dare comandi con interazione diversa (ad esempio click con il mouse) I comandi oggi sono dati utilizzando l interfaccia grafica del sistema
Virtualizzazione delle risorse le applicazioni e i programmi (che poggiano sul SO) vedono risorse virtuali ignorano i dettagli eventuali altri programmi in concorrenza risorse virtualizzate CPU: Multiprogrammazione (più programmi sono eseguiti concorrentemente) memoria: ciascun programma vede uno spazio di memoria autonomo I/O: la memoria di massa (dischi) e periferiche di I/O sono viste dai programmi tramite il SO
Sistema operativo e CPU Funzioni Sistema operativo Memoria virtuale I/O dei file gestione dei processi
gestione dei processi processi concorrenti elaborati in parallelo su architetture multiprocessore elaborati a rotazione (time sharing) su architetture uniprocessore problemi: sincronizzare l utilizzo delle risorse comuni (memoria centrale e di massa, I/O) garantire accesso in mutua esclusione correttezza elaborazione
gestione dei processi stati di un processo running: in esecuzione sulla CPU blocked: bloccato in attesa di un evento (fine I/O,...) ready: pronto a riprendere la sua elaborazione scheduler: processo del SO che decide quale fra i processi ready mandare in esecuzione
gestione dei processi i Sistemi operativi possono essere classificati nel seguente modo: multi-user : multiutente (due o più utenti utilizzano il programma (anche migliaia nei casi più grandi) multiprocessing : permette la possibilità che un programma sia eseguito da più processori (CPU) multitasking : permette che uno o più programmi siano eseguiti concorrentemente (anche dello stesso utente) multithreading : permette che diversi parti di un unico programma siano eseguite concorrentemente real time: (tempo reale): risponde instantaneamente ( Windows e UNIX, non sono real time) time sharing: condivisione del tempo fra più utenti o più programmi
memoria virtuale: memoria virtuale lo stesso spazio di memoria è diviso fra più programmi ogni programma vede uno spazio di indirizzamento più ampio di quello effettivamente disponibile spazio indirizzi: virtuali: dipende dalle modalità di indirizzamento fisico: dipende dalle dimensioni della memoria
memoria virtuale programmi usano lo spazio virtuale lo spazio virtuale è allocato in memoria secondaria (dischi) si mantiene in memoria solo un sottoinsieme dello spazio virtuale (spazio logico) si trasferiscono quando servono le parti dello spazio virtuale alle quali il programma fa riferimento la gestione è fatta dal SO (trasparente all utente/programmatore) PROBLEMA: traduzione indirizzi; efficienza
memoria virtuale: paginazione modo semplice di organizzare la corrispondenza fra indirizzi virtuali e fisici lo spazio di memoria (fisico e virtuale) è organizzato in pagine (0.25-4 KB) quando serve un dato in memoria si trasferisce tutta la pagina che lo contiene
memoria virtuale: paginazione la struttura dello spazio virtuale si riflette nella struttura degli indirizzi offset: indirizzo nella pagina k bit più significativi: numero della pagina indirizzi fisici hanno la stessa struttura
memoria virtuale: paginazione i programmi specificano indirizzi virtuali l indirizzo fisico è diverso prima di accedere in memoria bisogna tradurre l indirizzo virtuale in indirizzo fisico Nota Bene: l indirizzo virtuale è fisso, quello fisico può cambiare nel corso dell esecuzione
memoria virtuale: paginazione con la memoria a pagine posso avere uno spazio fisico piccolo ma uno spazio virtuale grande posso utilizzare la memoria (piccola) per più programmi contemporaneamente due pagine vicine (nello spazio logico) possono essere in posti diversi dello spazio fisico una su disco e l altra in memoria centrale tutte e due su disco (o memoria centrale) ma con indirizzi fisici diversi
memoria virtuale: traduzione indirizzi La traduzione degli indirizzi avviene a cura della CPU (prima di accedere in memoria fisica) La corrispondenza tra pagine virtuali e pagine fisiche (page frames) viene mantenuta nella Tavola delle Pagine (nella CPU)
memoria virtuale: traduzione indirizzi tavola delle pagine contiene la corrispondenza fra indirizzo virtuale (o logico) e indirizzo fisico
memoria virtuale: come funziona se la pagina richiesta è in memoria: ok altrimenti page fault. il SO interrompe l esecuzione del programma la pagina richiesta viene trasferita da disco a memoria centrale (attesa) una volta trasferita la pagina richiesta l esecuzione del programma può riprendere a seguito di un page fault posso dover togliere una pagina dalla memoria per fare spazio a quella nuova, questo implica che le pagine virtuali non hanno necessariamente lo stesso indirizzo fisico
località dei programmi gli accessi in memoria rispettano un principio di località quando mi serve un dato che non è in memoria trasferisco tutta la pagina che contiene quel dato quando devo togliere una pagina dalla memoria per fare spazio alla nuova pagina trasferisco pagine richieste indietro nel tempo (meno probabili che siano richieste nel futuro)
Gestione dei file: importanza I/O Applicazioni hanno due componenti fondamentali: Elaborazione informazione Input/Output (I/O) (esistono applicazioni senza I/O?) Dati sono nei dispositivi di memoria diversi fra loro (velocità, modi di accesso,...) Utente vede dati come una libreria standard operazioni utente sono astratte: inserisci, cancella, duplica,... non dipende dal tipo di dato o da dove è il dato Funzioni SO: fornire operazioni standard per accedere e modificare i dati fornire protezioni ai dati (limitare le operazioni permesse) semplificare accesso a utente fornire interfaccia omogenea
Astrazione: File Punto di vista utente Insieme di dati con un nome tipo di dato (si usa spesso estenzione: txt - testo, exe - eseguibile, gif - immagine,...) utilizzabile sempre in modo conveniente (utente non vuole sapere dove si trova fisicamente il file) Punto di vista del sistema operativo crea corrispondenza fra i byte che costituiscono il file su blocchi di memoria non volatile Dischi, nastri, CD,... Dati persistenti (assenza di corrente, riavvi del sistema,...)
Astrazione: Direttorio Organizzare i file: una tabella contiene le informazioni su dove ciascun file si trovi sul disco Approccio semplice: ogni file ha un solo nome In pratica: un direttorio per ogni utente, per specificare un file: <nome utente, nome file> per ogni utente organizzazione ad albero del direttorio (es. cartelle di windows) Esempio: Mario/a/b.gif utente m ario ha un direttorio a che contiene un fileim m agine b (Mario può avere tantidirettori;apuò contenere tantifile o direttori)
Meta-Dati di un file Meta-dati: Informazioni addizionali associate ad ogni file Nome del file Tipo del file Puntatori (indirizzi) ai blocchi del disco che contengono i dati Dimensione del file Informazioni temporali: creazione, aggiornamento Proprietario (utente, gruppo) Bit di protezione (autorizzazione in lettura, scrittura) I Meta-dati sono memorizzati nel disco parte del disco contiene le informazioni necessarie <nome file, indice sui metadati> (l indice indica dove sono presenti i metadati nella memoria del disco)
Gestione del direttorio Direttorio contiene per ogni file una coppia <nome, indice>, (in cui il nome può essere un altro direttorio) Direttorio è memorizzato e organizzato come un file Indice indica dove sono le informazioni sui metadati associati al nome) Per indicare un file si specifica il nome del file indicando tutti i direttori a partire dalla radice Esempio: mkdirmario/a/b/c crea direttorio c contenuto in b che a sua volta è contenuto in a Leggi i metadati associati a utente mario e cerchi a ; ad esempio trovi < a, 5> leggi le informazioni indicate da 5, e cerca b ; ad esempio trovi < b, 9> leggi le informazioni indicate da 9, verifichi che non esiste c ; allochi c e aggiungi c dove necessario
Sistemi operativi: UNIX,LINUX Mini Computer Cluster Controller UNIX multi-user, multitasking operating system sviiluppato ai laboratori Bell nel 1970. Sistema flessibile fatto da poche persone. Scritto in linguaggio ad alto livello (C). Pertanto è flessibile: può essere installato su ogni macchina che ha un compilatore C.developed at Bell Labs in the early 1970s. Linux, versione open source di Unix
Sistemi operativi: Windows Mini Computer Cluster Controller Personal Computer Windows multitasking. Fornisce interfaccia grafica, memoria virtuale, multitasking e si può interfacciare con molte periferiche (incluse wireless) Le prime versioni di Windows utilizzavano DOS (come sistema operativo sottostante) Molte versioni nel tempo. Ultima Windows XP Windows XP in versione home e professional normalmente a 32 bit, ora anche a 64 bit Compatibile con le applicazioni a 32 bit; offre il Security Center e possibilità blocco dei pop-up in Internet Explorer.
Sistemi operativi: DOS Personal Computer DOS (disk operating system) MS-DOS (Microsoft disk operating system). sviluppato da Microsoft per IBM e per computer IBM compatibili (inizio anni 80). Molte versioni (in corrispondenza alla evoluzione dei personal computer) The initial DOS è un sistema operativo a 16-bit che non permette multi users o multitasking.