I Sistemi operativi Sistema operativo E’ un insieme di programmi che consente all’utente o alle applicazioni informatiche di accedere alle operazioni di base per utilizzare le risorse del sistema di elaborazione sia hardware che software Classificazione Interna Monoprogrammati Multiprogrammati Time sharing Utilizzo Batch Interattivo Dedicato (embedded) Real time Distribuiti Transazionali (ACID) Tipologie Monolitici (DOS) Livelli Microkernel sono solo i meccanismi del SO (es paginazione, scheduler), mentre le politiche sono realizzate con processi in user state (NT) Client-Server Struttura del sistema operativo In generale è costituito da una struttura a strati a “buccia di cipolla” Al centro c’è l’hardware e poi via via si dipartono i vari moduli software che costituiscono il SO Strato = macchina virtuale che maschera la macchina fisica (hardware) La schematizzazione si chiama modello a macchine virtuali Architettura di un sistema operativo Funzionalità Possiamo identificare 5 strati tra macchina fisica e utente Gestore dei processi (nucleo o kernel) Gestore della memoria Gestore delle periferiche File system Interprete dei comandi Gestore dei processi (nucleo) Gestisce l’esecuzione dei programmi Le unità di esecuzione vengono chiamate processi Per eseguire un programma occorre mantenere il corrispondente processo attivo nella CPU In ambiente multi-utente il gestore deve decidere a quale processo assegnare la CPU Inoltre deve reagire agli eventi esterni (le interruzioni provenienti dalle periferiche) Cos’e’ un processo? Programma = lista di istruzioni = nozione statica Processo = programma in esecuzione = programma + stato corrente variabili = nozione dinamica Stato corrente = valori in memoria centrale valori nei registri della CPU In un PC un solo processo in esecuzione alla volta Dettagli: Ciclo di vita dei processi L’esecuzione di un programma può comportare l’alternarsi di processi utente e di sistema all’interno della CPU Processo utente deriva da un programma applicativo Processo di sistema deriva da un programma del sistema operativo Processi kernel (nucleo) Gestori interruzioni L’esecuzione di un processo può essere interrotta! Ricordate sempre che un processo corrisponde ad un programma + stato corrente della memoria centrale e dei registri *Interruzione interna L’esecuzione di un processo attivo si interrompe ad es. per operazioni di input/output (operazioni costose in termini di tempo) Lo stato corrente (contenuto registri ecc) del processo interrotto viene salvato in memoria Il processo passa allo stato in attesa Il controllo passa ad un processo di sistema che assegna la CPU ad un altro processo (per poter ottimizzare l’utilizzo della CPU) *Interruzioni interne Ripristina stato attivo Fine Inizio pronto Acknowledg. operazione Salva stato attesa *Interruzioni esterne Una periferica segnala la fine di un operazione L’esecuzione del processo corrente viene interrotta (il processo passa allo stato pronto) e passa al gestore delle interruzioni Quindi interruzione esterna perché riguarda le operazioni di un’altro processo! Il gestore delle interruzioni provvede a trasferire dati in memoria e risvegliare il processo in attesa che passa allo stato pronto Il controllo passa poi al nucleo che manda in esecuzione uno dei processi in stato pronto Il gestore lavora con interruzioni disabilitate *Interruzioni esterne Ripristina stato attivo Fine Inizio pronto Salva stato *Stati in unix Scheduling dei processi Il sistema operativo può interrompere i processi Scheduler = quella parte del sistema operativo che seleziona il processo da mandare in esecuzione Non preemptive (non revocabili) il controllo rimane al processo finchè non lo molla lui Funziona con una FIFO semplice Preemptive (revocabili) c’è un controllore attivo Due possibili politiche di scheduling: Round robin (time sharing) Con Priorità Round Robin Gestione dei processi in attesa tramite coda Cioe’ FIFO = first-in first-out Ogni processo ha un quanto di tempo di esecuzione dopo il quale torna in attesa Il problema è l’overhead ovvero il tempo perso per il salvataggio dello stato del processo e il successivo ripristino. E’ utilizzo della CPU da parte dello scheduler. Priorità Si assegna una priorità ad ogni processo e si manda in esecuzione il processo con priorità più alta La priorità può essere assegnata staticamente ed essere ridotta durante l’esecuzione: se risulta più bassa di un processo in attesa si effettua la fase di context switching dinamicamente: a seconda delle operazioni effettuate dal processo (ad es. seleziona subito processi con operazioni I/O) * Caratteristiche di programmi Qual è il maggior carico del programma? Se sono gli accessi al disco I/O Bound Se è il calcolo CPU Bound A seconda della caratteristica dei programmi in esecuzione la strategia può cambiare per ottimizzare l’esecuzione Multitasking Nei sistemi più evoluti è possibile che un utente esegua contemporaneamente due o più programmi sullo stesso calcolatore Oppure che due o più utenti utilizzino contemporaneamente lo stesso calcolatore Multitasking L’esecuzione di un programma alterna periodi di elaborazione (utilizzo della CPU) a periodi di attesa che i dispositivi di I/O siano pronti Durante i periodi di attesa la CPU sarebbe inutilizzata Multitasking Ogni volta che un programma si sospende in attesa di una operazione di I/O, il SO “passa” la CPU ad un processo di un altro programma Gestione Memoria Centrale I processi si alternano durante l’esecuzione nella CPU Per ragioni di efficienza e garantire il multitasking dobbiamo mantenere più programmi in memoria centrale Ciò comporta il partizionamento della memoria centrale e del suo spazio di indirizzi. Ogni programma deve avere una sua memoria dedicata, ma la memoria è solo 1, dunque si crea una memoria virtuale. Gestore della memoria Il gestore della memoria deve allocare la memoria partizionarla tra i processi che la richiedono Grazie al gestore della memoria gli strati superiori hanno l’illusione che ogni processo abbia una memoria dedicata (memoria virtuale) Serve una funzione di rilocazione che trasforma gli indirizzi virtuali in fisici. Gestore delle periferiche Maschera le caratteristiche hardware delle periferiche Gestisce le operazioni di input e output Fornisce procedure ad alto livello ad esempio per la lettura, scrittura di dati su memorie secondarie scrittura su stampanti, ecc File System Gestisce i dati in memoria di massa Struttura i dati in modo gerarchico utilizzando file e directory Fornisce operazioni di alto livello per la gestione di file ad esempio creazione di un nuovo documento, directory ecc Protegge i dati da accessi esterni Garantisce la condivisione sicura dei dati File Nome: Struttura: Sequenza di byte Sequenza di blocchi (record) di byte Tipo: Identifica il file spesso con una estensione che indica il tipo di file es. Tesi.doc oppure somma.exe File di caratteri e binari (eseguibili) Directory Attributi: nome, diritti di accesso,proprietario Operazioni su File Il file system consente di effettuare le seguenti operazioni: creare, cancellare, spostare, recuperare, modificare documenti in memoria di massa (memoria persistente) Modificare gli attributi di un file Ridenominare i file Directory E’ un file di tipo speciale che mantiene informazioni su altri file permette di strutturare insiemi di file (dati) in maniera gerarchica contiene la lista dei nomi e attributi dei file e directory al suo interno Quindi: il file system ha una struttura ad albero Radice = radice del’intero file system Nodi interni = directory Foglie = documenti/programmi Struttura ad albero L’interprete dei comandi Interprete dei comandi Consente all’utente di attivare i programmi Sfrutta le funzionalità degli strati inferiori per cercare in memoria il programma invocato allocare la memoria richiesta dal programma attivare un processo per eseguire il programma Evoluzione dei Sistemi Operativi Sistemi batch con schede (50’s-60’s) (interfaccia cartacea) System/360 IBM compatibili (65-70’s) (interfaccia testuale) Sistemi operativi UNIX e DOS (80’s) (interfaccia testuale/a finestre) WINDOWS (90’s) (interfaccia grafica) CDE KDE Gnome (unix) Interprete (interfaccia) orientato al testo Interfaccia grafica System calls API Il sistema operativo mette a disposizione tutte queste funzioni per l’utente o i programmi Application Program Interface Es: open close write … Modalità di funzionamento User mode: non ho accesso diretto a tutte le risorse Hw (accedo solo tramite le API) Kernel (supervisor) mode: accesso completo all’hw compresi registri della CPU IL PROBLEMA DELL’UOVO E DELLA GALLINA Il SO carica i programmi in memoria per l’esecuzione... ...ma il SO è a sua volta un programma... ...chi carica il SO in memoria? Avvio