Cos’è un Sistema Operativo? Elementi di Informatica e Programmazione Per capirlo, immaginiamo inizialmente che non ci sia: Applicazioni Il Sistema Operativo HARDWARE (periferiche, memoria, CPU) - necessità per il programmatore di conoscere le specificità dell’hardware e di occuparsi della sua gestione ⇒ aumenta difficoltà nella scrittura dei programmi - dipendenza applicazioni/hardware Docente: Daniela Fogli Si introduce la suddivisione sistema operativo/applicazioni Daniela Fogli – Elementi di Informatica e Programmazione 2 In sostanza, in SO è … Organizzazione a livelli utenti 1. Collezione di programmi (detti anche software di base) finalizzati a rendere utilizzabile l’intera architettura di elaborazione applicazioni livello delle applicazioni programmatore di applicazioni 2. Fornisce una interfaccia (API: Application Programming Interface) al software applicativo usato dall’utente, che può invocare il sistema operativo attraverso chiamate di sistema interfaccia di programmazione verso le applicazioni programmatore di sistema sistema operativo 3. Generalmente a corredo dell’hardware di un sistema informatico viene fornito almeno un SO (esempi: MS Windows XP, MS Windows Vista, Mac OS X, Linux, Unix) livello del sistema operativo 4. Un tipico SO comprende programmi che hardware Daniela Fogli – Elementi di Informatica e Programmazione 1. gestiscono le risorse fisiche del sistema informatico 2. gestiscono in modo semplice l’interazione (interfaccia) dell’utente con il sistema (ad es.: linguaggio ad icone, interfaccia a livello fisico finestre, ecc.) 3 Daniela Fogli – Elementi di Informatica e Programmazione 4 Più in generale Funzioni del Sistema Operativo Il SO offre la visione di una macchina astratta (o virtuale) più potente e più semplice da utilizzare di quella fisicamente disponibile (macchina fisica) Applicazione Richiede servizi Virtualizzazione dell’hardware (mascherandone i dettagli) - periferiche - CPU - memoria centrale Visione dall’alto Gestione ottimale delle risorse (efficienza) SO Gestione della convivenza (più programmi in esecuzione e più utenti): - idealmente, ciascuno opera come se avesse a disposizione l’intero sistema; - d’altra parte, gestione delle interazioni tra programmi in esecuzione (es: output utilizzato come input da un altro) Visione dal basso Gestisce risorse Gestione della sicurezza (riservatezza e integrità dei dati) Daniela Fogli – Elementi di Informatica e Programmazione 5 Gli elementi di un SO (1) 6 Gli elementi di un SO (2) Sistema di gestione della memoria di massa (file system) Sistema di gestione dei processi (o del processore) Archiviazione e reperimento dati utilizzando le periferiche che costituiscono la memoria di massa Definisce quali programmi sono da eseguire e quali compiti sono da assegnare alla CPU Sistema di interazione con gli utenti e gestione dei relativi comandi (interprete comandi) Sistema di gestione della memoria centrale Controlla l’allocazione della memoria centrale assegnata ai diversi programmi che possono essere contemporaneamente in esecuzione Permette agli utenti di accedere in maniera semplice e intuitiva alle funzionalità disponibili: linguaggio grafico, ad icone, a comandi (tipico in DOS e UNIX) Sistema di gestione delle periferiche Sistema di gestione della rete Garantisce l’accesso ai dispositivi di ingresso/uscita Permette di interfacciarsi a risorse collegate via rete e di comunicare con processi in esecuzione su altri calcolatori Se ne parlerà nel contesto delle reti di calcolatori (prossime lezioni) Maschera i dettagli di basso livello e gli eventuali conflitti che possono sorgere nel caso di diverse richieste formulate da più utenti/programmi ad uno stesso dispositivo “contemporaneamente” Daniela Fogli – Elementi di Informatica e Programmazione Daniela Fogli – Elementi di Informatica e Programmazione 7 Daniela Fogli – Elementi di Informatica e Programmazione 8 Qualche cenno sugli elementi del SO Sistemi uniprogrammati (monotasking) Sistemi uniprogrammati (ad es: MS DOS): in memoria centrale Cominciamo a vedere il sistema di gestione dei processi che ha un ruolo fondamentale nei sistemi multiprogrammati (multitasking) risiede un solo programma applicativo, oltre al SO un solo programma in esecuzione in ogni istante Uso inefficiente del sistema: durante le operazioni di input/output con le periferiche la CPU rimane inattiva elaborazione attesa per operazioni di I/O Tempo Daniela Fogli – Elementi di Informatica e Programmazione 9 Sistemi multiprogrammati (multitasking) Programma: entità statica composta dal codice eseguibile dal processore può contenere più programmi Processo: entità dinamica che corrisponde al programma in esecuzione, composto da: codice (= programma) dati (in memoria e nei registri unità centrale) stato Progr. 1 Progr. 2 Tempo elaborazione attesa per operazioni di I/O Daniela Fogli – Elementi di Informatica e Programmazione 10 Processo vs. Programma Gli attuali SO (come MS Windows Vista e UNIX/Linux) sono sistemi multiprogrammati: in ogni istante la memoria centrale Progr. 3 Daniela Fogli – Elementi di Informatica e Programmazione 11 processo = programma + contesto di esecuzione Daniela Fogli – Elementi di Informatica e Programmazione 12 Gestione dei processi in “Time Sharing” Tre stati: processi in “esecuzione”, “pronti” ed in “attesa” In ogni istante un processo può essere in uno dei seguenti stati: Permette la condivisione della CPU tra più processi in esecuzione da parte della CPU (un solo processo se vi è una sola CPU) in attesa di un evento esterno (ad esempio I/O da tastiera o su schermo) pronto ad essere eseguito ed in attesa del proprio quanto di tempo CPU Il tempo di CPU viene suddiviso in unità elementari dette quanti di tempo I quanti di tempo vengono assegnati ai processi dal SO secondo opportune politiche (es. round-robin): apparente parallelismo I processi in attesa e i processi pronti sono messi in due code distinte (contengono i descrittori dei processi, strutture dati gestite dal sistema operativo che rappresentano il contesto: Ogni processo in esecuzione ha a disposizione un quanto di tempo di utilizzo della CPU, al termine del quale viene sospeso per lasciare il posto ad un altro processo in attesa di esecuzione Daniela Fogli – Elementi di Informatica e Programmazione identificativo processo, valori registri unità centrale, priorità, risorse assegnate, ecc.) Tipicamente per i processi pronti si usa una coda di tipo FIFO (“First in First Out”) Daniela Fogli – Elementi di Informatica e Programmazione 13 Transizioni di stato (1) Transizioni tra gli stati di un processo Processi pronti Completamento operazione di I/O (evento esterno atteso) Termine quanto di tempo Processi in attesa (figura adattata del libro di testo: Sciuto et al. 2005) Inizio esecuzione (accodamento ai processi pronti) Pronto → Esecuzione Termine elaborazione Selezione primo processo pronto e sua esecuzione Processo in esecuzione Richiesta operazione di I/O Daniela Fogli – Elementi di Informatica e Programmazione 14 15 Quando un programma deve essere “eseguito”, viene creato un processo che viene posto in fondo alla coda dei processi pronti Il SO stabilisce quale dei processi “pronti” debba essere mandato in “esecuzione”, di solito estraendo il primo nella coda dei “pronti” Il processo rimane in esecuzione finché termina il suo quanto di tempo oppure richiede un’operazione di I/O oppure è arrivato all’istruzione finale P E A Daniela Fogli – Elementi di Informatica e Programmazione 16 … se termina il quanto di tempo … Transizioni di stato (2) … attesa di un’operazione di I/O … Transizioni di stato (3) Esecuzione → Attesa Esecuzione → Pronto Il processo deve svolgere un’operazione di I/O che comporta un notevole tempo di attesa: es. attende un evento per il completamento dell’operazione (ad es. input da tastiera) Termina il quanto di tempo ed il processo in “esecuzione” lascia spazio a un altro processo “pronto” Il SO salva tutte le informazioni per riprendere l’esecuzione del processo dal punto in cui viene interrotta (ad es: salva il contenuto dei registri di CPU) salvataggio del contesto Il SO salva tutte le informazioni necessarie a riprendere l’esecuzione e l’informazione relativa all’evento atteso Contemporaneamente un altro processo passa da “pronto” a “esecuzione”, ne viene ripristinato il contesto se il processo era stato precedentemente interrotto P P E A A Daniela Fogli – Elementi di Informatica e Programmazione E 17 Daniela Fogli – Elementi di Informatica e Programmazione 18 Interruzioni, modo utente e modo supervisore Transizioni di stato (4) Attesa → Pronto Tre tipologie di interruzioni: interne: generate da specifica istruzione macchina per realizzare una chiamata di sistema (es. lettura da disco) esterne: generate dai componenti fisici del sistema (es. tastiera) per eccezione: segnalano situazioni eccezionali (es. errore sw, guasto hw) Si verifica l’evento esterno atteso dal processo ed il SO sposta quel processo in fondo all coda dei processi pronti P Le transizioni dei processi da uno stato all’altro che abbiamo visto corrispondono a interruzioni interne o esterne Una volta identificata l’interruzione, il sistema operativo salva il contesto del programma interrotto ed esegue la procedura di gestione dell’interruzione, ma al termine molto probabilmente non ritornerà il controllo al processo interrotto ma al primo dei processi pronti (sistema multiprogrammato) E A Daniela Fogli – Elementi di Informatica e Programmazione 19 Daniela Fogli – Elementi di Informatica e Programmazione 20 Il meccanismo di protezione sistema operativo Un passo indietro modo supervisore Quali proprietà fondamentali distinguono un compilatore (o un interprete) da un altro? Il linguaggio di alto livello L’insieme delle istruzioni macchina (ISA) (semplificando, il tipo di processore) Il sistema operativo interruzione fine gestione interruzione modo utente Nel modo supervisore, tutte le istruzioni macchina sono disponibili, anche quelle cosiddette “privilegiate” (ad esempio quelle che consentono di interagire direttamente con le periferiche) Nel modo utente, non sono disponibili le istruzioni privilegiate Il programmi del sistema operativo operano in modo supervisore, i programmi applicativi in modo utente Daniela Fogli – Elementi di Informatica e Programmazione 21 Un passo indietro: perché la traduzione dipende dal sistema operativo programma sorgente COMPILATORE 22 Un passo indietro: perché la traduzione dipende dal sistema operativo programma sorgente Dati Pexe Dati INTERPRETE chiamate di sistema chiamate di sistema SISTEMA OPERATIVO SISTEMA OPERATIVO instruction set instruction set HARDWARE Daniela Fogli – Elementi di Informatica e Programmazione Daniela Fogli – Elementi di Informatica e Programmazione HARDWARE 23 Daniela Fogli – Elementi di Informatica e Programmazione 24 Sistema di gestione della memoria Sistema di gestione della memoria DISCO FISSO Proc 1 Proc 1 Proc 2 MEMORIA CENTRALE Proc 2 MEMORIA CENTRALE Proc 3 La risorsa memoria centrale è condivisibile (fra più processi) Daniela Fogli – Elementi di Informatica e Programmazione Un nuovo processo può nascere e necessita di memoria, un processo può terminare e lasciare disponibile lo spazio allocato 25 Sistema di gestione della memoria Proc 1 Daniela Fogli – Elementi di Informatica e Programmazione 26 Gestione periferiche I/O (1) I processi e gli utenti accedono alle periferiche attraverso comandi ad alto livello L’accesso/controllo delle periferiche avviene attraverso DISCO FISSO Proc 5 i controller: dispositivi hardware il cui compito è ricevere richieste di operazioni di input/output ed eseguirle fisicamente dipendono dalle caratteristiche fisiche delle periferiche che gestiscono (ad es., il controller di una stampante è diverso da quello del lettore di CD ROM) i driver: programmi software integrati nel sistema operativo per la gestione dei controller mascherano le caratteristiche specifiche dei controller forniscono un insieme di comandi per la gestione delle operazioni di ingresso/uscita utilizzabili da altri programmi inclusi nel sistema operativo Proc 2 Proc 3 Proc 4 Proc 5 Gli spazi virtuali assegnati a ciascun processo possono essere in realtà costituiti da segmenti logici non contigui. I contenuti delle porzioni dedicate ad altri processi possono essere scaricate su disco se necessario Daniela Fogli – Elementi di Informatica e Programmazione Proc 3 Proc 4 Il gestore della memoria centrale rende disponibile a ciascun processo una memoria virtuale interamente dedicata MEMORIA CENTRALE DISCO FISSO 27 Daniela Fogli – Elementi di Informatica e Programmazione 28 Gestione periferiche I/O (2) Sistema di gestione della memoria di massa I sistemi operativi includono i driver per la gestione delle periferiche più comuni: Detto anche file system Obiettivo: presentare all’utente l’organizzazione logica dei dati della memoria di massa e le operazioni che è possibile compiere su di essi tastiera, video, mouse, stampanti, … Operazioni di base di un file system: recupero di dati precedentemente memorizzati; eliminazione (cancellazione) di dati obsoleti; modifica/aggiornamento di dati preesistenti; copia di dati (e.g. da HD a FD) per backup o per il trasferimento verso altro calcolatore I servizi vengono forniti sia ai programmi applicativi che direttamente agli utenti Ogni aggiunta o modifica alla configurazione standard comporta l’installazione di software addizionale ovvero di driver aggiuntivi solitamente prodotti dalla casa costruttrice della periferica (possono essere già disponibili sul CD del sistema operativo) es: driver per gestire informazione acquisita con una videocamera digitale ad alta definizione Daniela Fogli – Elementi di Informatica e Programmazione Daniela Fogli – Elementi di Informatica e Programmazione 29 Organizzazione del file system 30 Esempio “radice” Le informazioni vengono memorizzate in contenitori logici detti archivi o più comunemente file Un file è una sequenza di byte: può contenere un programma, un insieme di dati, un testo, un’immagine E’ caratterizzato da: utenti dispositivi program mi gioco.exe Chiara M ario un nome simbolico solitamente costituito di due parti: nome vero e proprio, assegnato dall’utente estensione, associata al programma che ha generato il file e consente gioco.exe quindi di identificare la tipologia dei dati contenuti nel file (ad es. i file Excel hanno estensione .xls) un insieme di attributi (dimensione, data e ora di creazione, permessi di lettura/scrittura/esecuzione, proprietario) foto.jpg I file sono generalmente organizzati in cartelle (directory) e sottocartelle in una gerarchia ad albero (o a grafo aciclico: una cartella o file può far parte di più cartelle) Daniela Fogli – Elementi di Informatica e Programmazione temporanei testo.doc Ogni file o cartella è individuato dal suo percorso assoluto (nome completo – pathname), ovvero dai nomi dei nodi intervallati da ‘\’ seguiti dal nome del file (es. \utenti\Mario\gioco.exe). Il pathname in pratica identifica la posizione del file o della cartella all’interno dell’albero 31 Daniela Fogli – Elementi di Informatica e Programmazione 32 Interprete dei comandi Interfaccia a comandi Tutto si svolge a caratteri, l’utente deve conoscere la sintassi dei comandi E’ un programma che in realtà si trova fuori del sistema operativo a livello delle applicazioni (questo rende possibile utilizzare diversi interpreti di comandi per uno stesso sistema operativo) Rappresenta l’interfaccia del sistema operativo con gli utenti Viene attivato subito dopo l’accesso al sistema Accetta comandi, li analizza, manda in esecuzione i programmi richiesti Fra i comandi ci sono quelli per la gestione dei file: l’utente non interagisce direttamente con il file system ma lo fa attraverso l’interprete dei comandi (creazione/cancellazione file/directory, rinomina/copia/elencazione, ...) L’utente deve conoscere la sintassi del linguaggio dei comandi, per ovviare a questo problema interfacce grafiche (Stone et al. 2005) Daniela Fogli – Elementi di Informatica e Programmazione 33 Interfaccia grafica: Elementi principali Il desktop come metafora Stile WIMP (Window, Icon, Menu, Pointer) Icone associate a file, directory, dischi, programmi … Pulsanti e barre dei pulsanti Finestre: cornici con strumenti Menu di comandi (pull-down, pop-up) Mouse che muove un cursore (Dix et al. 2004) Cut & paste (copia e incolla) Drag & drop (trascina e lascia) Daniela Fogli – Elementi di Informatica e Programmazione 35 Daniela Fogli – Elementi di Informatica e Programmazione 34