5ªMI – Sistemi operativi Gli oggetti della prima parte del corso 1 SO: funzionalità mf SO come GESTORE DELLE RISORSE, controlla tutte le risorse del calcolatore e le gestisce in modo efficiente: Funzioni di servizio del SO mf Esecuzione di applicazioni Accesso ai dispositivi di ingresso/uscita condivisione di risorse da parte di più utenti o applicazioni, meccanismi di protezione e politiche di risoluzione degli eventuali conflitti d’uso; Contabilizzazione fornire un’organizzazione logica dei dati sotto forma di cartelle (directory) e file, gestire le operazioni di basso livello per il relativo ingresso/uscita; Controllo di accesso degli utenti gestione dei segnali necessari per il trasferimento dei dati, consente all’utente di ragionare in termini di operazioni astratte di lettura e scrittura; Archiviazione di dati e programmi caricamento del programma (istruzioni e dati) nella memoria centrale, inizializzazione dei dispositivi di ingresso/uscita, preparazione e gestione di altre risorse come la rete di comunicazione ottimizzare il tempo di risposta dei programmi interattivi, fatturare agli utenti i costi dell’impiego del sistema; Gestione dei malfunzionamenti rilevare e, se possibile, di risolvere eventuali malfunzionamenti provocati da guasti hardware, o da operazioni scorrette compiute dal software applicativo. 2 mf mf Gli elementi di un SO Utente Sistema Operativo Interprete comandi Gestione memoria Software applicativo Gestione processore Gestione periferiche Hardware File system 3 Elementi in dettaglio di un SO mf Sistema di gestione del processore, Sistema di gestione della memoria, garantisce l’accesso ai dispositivi di ingresso/uscita, maschera i dettagli di basso livello e gli eventuali conflitti che possono insorgere nel caso che diverse richieste arrivino contemporaneamente a uno stesso dispositivo; Sistema di gestione dei file (file system) controlla l’allocazione della memoria di lavoro ai diversi programmi che possono essere contemporaneamente in esecuzione; Sistema di gestione delle periferiche, controlla l’unità centrale di elaborazione (CPU); definisce quali programmi sono da eseguire e quali compiti sono da assegnare alla CPU; consente l’archiviazione e il reperimento dei dati sfruttando le periferiche che costituiscono la memoria di massa; Sistema di gestione degli utenti e dei relativi comandi (interprete comandi), interfaccia diretta con gli utenti, permette agli utenti di accedere in maniera semplice e intuitiva alle funzionalità disponibili. 4 Vantaggi della struttura a livelli di un SO mf Sono legati alla possibilità di definire modalità standard di interfaccia con i dispositivi fisici, cosicché sia possibile: mf sviluppare programmi in modo semplice, modulare ed indipendente dallo specifico calcolatore su cui viene fatto funzionare il sistema operativo; aggiornare il software di base e l'hardware in modo trasparente ai programmi applicativi e all'utente, ossia senza che vengano influenzati dall'operazione. Organizzazione a “strati” Ogni macchina virtuale è un insieme di programmi che realizza delle funzionalità che utilizzano i servizi forniti a livello inferiore. Ogni macchina virtuale ha il compito di gestire risorse specifiche di sistema regolandone l’uso e mascherandone i limiti. I meccanismi che garantiscono la correttezza logica sono separati dalle politiche di gestione (maggiore flessibilità). ogni “strato” risolve un problema specifico 5 Organizzazione di un SO mf mf Gerarchia di “macchine virtuali” La visione della macchina virtuale a livello n è quella fornita dall’HW e dagli strati del SO fino all’ennesimo (incluso) I programmi del SO e i programmi Utente Programmi applicativi hanno una visione LOGICA delle risorse hanno accesso a un insieme ridotto di risorse; possono utilizzare solo un sottoinsieme delle istruzioni del processore (esecuzione in modalità utente); non possono decidere autonomamente quando e come avere accesso alle risorse del sistema (richiedono al S.O. l’esecuzione di alcuni servizi); Sistema operativo ha una visione FISICA delle risorse ha accesso diretto a tutte le risorse; può utilizzare tutte le istruzioni del processore (esecuzione in modalità supervisore); stabilisce una politica di gestione delle risorse (modalità di gestione delle richieste che riceve devono essere soddisfatte); 6 mf La “vita” di un SO Fasi della vita del S.O., dall’accensione allo spegnimento: bootstrap (caricamento del nucleo nella RAM) funzionamento a regime shutdown (salvataggio impostazioni e registri di sistema) Bootstrap mf Attivazione della corrente elettrica nei circuiti → esecuzione di programmi scritti nelle memorie ROM: diagnostica : test componenti HW caricamento S.O. : dalla memoria di massa (hard disk) caricamento di una prima parte del S.O. nella RAM, che gestisce poi il caricamento di una seconda parte del S.O.. quando l’utente inizia a lavorare il S.O è già in esecuzione 7 Shutdown mf Operazioni preliminari allo spegnimento dell’elaboratore. mf Memorizzazione nella memoria di massa di tutte le informazioni residenti su memorie volatili (RAM e buffer di dispositivi periferici). Spegnimento senza shutdown: crash con possibile perdita irreversibile di dati. I livelli del S.O. Applicazioni Interfaccia del nucleo (chiamate di sistema) NUCLEO (o kernel) (sempre caricato nella RAM) Gestione Gestione Gestione File Gestione CPU RAM System I/O processi HW 8 mf Si accede ai servizi del sistema operativo tramite System Call Esempio: gli 11 passi necessari per eseguire la read (fd, buffer, nbytes) mf Alcuni esempi di system call: di Unix e Win32 (Application Programming Interface) 9 Applicazioni VB C++ C# J# … Common Language Specification Interfaccia del nucleo (chiamate di sistema) User Interface Data and XML Base Class Library Visual Studio.NET Web Services Common Language Runtime NUCLEO (o kernel) (sempre caricato nella RAM) HardWare mf Un salto nel passato: i SO e perché si sono sviluppati L’evoluzione dei sistemi operativi… …è stata spinta dal progresso tecnologico dell’hardware …ha ha guidato il progresso tecnologico dell’hardware Perché analizzare la storia dei sistemi operativi? Perché permette di capire l’origine di certe soluzioni presenti nei SO attuali Perché è l’approccio migliore per capire come certe idee si sono sviluppate Perché alcune delle soluzioni più antiche sono ancora utilizzate 10 mf Un salto nel passato: gli antenati dei SO • Generazione ZERO Babbage (1792–1871) – Macchina analitica (programmabile, meccanica) che non aveva sistema operativo – La prima programmatrice della storia è Lady Ada Lovelace (figlia del poeta Lord Byron) • Prima generazione 1945 - 1955 – valvole, tavole di commutazione, programmi “hardwired” • Seconda generazione 1955 - 1965 – transistor, sistemi batch • Terza generazione 1965 – 1980 – Circuiti integrati (IC), multiprogrammazione, time–sharing • Quarta generazione 1980 – oggi – personal computers, reti mf Generazione 0: Babbage… Il primo calcolatore a programma memorizzato fu costruito da Charles Babbage (1792-1871) e venne chiamato Difference Engine (1832). Si tratta di un esempio notevolissimo di meccanica applicata (consiste di circa 2000 parti e funziona ancora oggi). Il modello rappresentato in basso a destra è stato realizzato nel 1991 11 mf Generazione 0: … e Ada La prima persona a concepire però una macchina capace di computazionalità programmabile in senso lato fu Ada Lovelace Byron (1815-1852), figlia di Lord Byron, la quale lavorò con Babbage al progetto di una Analytical Machine che nelle intenzioni doveva essere il successore della Differential Machine, Machine capace di più generali applicazioni di calcolo. Questa macchina non venne mai realizzata, ma a lady Lovelace va dato credito per avere anticipato concetti quali la programmabilità di una macchina e la generazione automatica di musica (a lei è dedicato uno dei primi linguaggi di programmazione per l’Intelligenza Artificiale: ADA). mf 12 mf Generazione 1: 1945–1955 Come venivano costruiti? Calcolatori a valvole e tavole di commutazione Come venivano usati? Solo calcoli numerici (calcolatori non elaboratori) Un singolo gruppo di persone progettava, costruiva, programmava e manuteneva il proprio computer Come venivano programmati? In linguaggio macchina (stringhe di 0 e 1) Programmazione su tavole di commutazione Nessun sistema operativo! mf La prima generazione dei SO … ENIAC I Elaboratore digitale elettronico (1944) 160 metri quadri 30 tonnellate 18.700 valvole 13 mf … il primo SO “umano” Veniva programmato muovendo fisicamente i connettori nei contatti mf Generazione 1: 1945–1955 Principali problemi: Scarsa affidabilità (guasti frequenti) Rigidità nell’assegnazione dei ruoli Non esiste il concetto di programmatore come entità separata dal costruttore di computer e dall’utente Utilizzazione lenta e complessa; l’operatore doveva… 1) 2) 3) 4) 5) …caricare il programma da eseguire …inserire i dati di input …eseguire il programma …attendere il risultato …in caso di errore, ricominciare dal punto 1) Tutto ciò a causa dell’assenza del SO 14 mf .. ma la differenza di velocità dei dispositivi… La potenza di calcolo di una CPU misurata in MIPS (Million Instructions Per Second) = numero di istruzioni eseguite in un secondo da un microprocessore (dipende dall’Instruction set, quindi è poco obiettivo) CPU ns (nanosecondi) 1.000.000.000 DISCO ms (millisecondi) 1.000.000 STAMPANTE s (secondi) 1 Note La velocità di un PC dipende anche dall’architettura interna (bus a 32,64,128 bit) e dalla velocità di trasferimento dati dalla memoria al microprocessore. Un comando di un linguaggio di programmazione impiega più istruzioni per poter essere eseguito e cambia da tipo di processore a tipo di processore mf .. A causa dei transistor 15 mf Entra in gioco il concetto di JOB… JOB = singola o insieme di attività legate all’elaborazione o alle operazioni di I/O Il programmatore… • scrive (su carta) un programma in un linguaggio di alto livello • perfora una serie di schede con il programma e il suo input • consegna le schede ad un operatore L’operatore… • inserisce le schede di controllo scritte in linguaggio apposito • inserisce le schede del programma • attende il risultato e lo consegna al programmatore mf Una scheda perforata… 16 mf mf Una perforatrice di schede… … poi il concetto di MONITOR (verso la seconda generazione) Esisteva un unico programma (MONITOR) caricato in memoria che provvedeva alla gestione dei lavori ma il sistema operativo era NON INTERATTIVO: l’operatore “UMANO” fa eseguire i job UNO ALLA VOLTA L’unica componente di sistema operativo erano le routine per gestire l’I/O dei jobs 17 mf mf 18 mf La seconda generazione: l’elaborazione batch Nei primi sistemi batch (lotti) l’operatore: – porta le schede al 1402 che trasferisce il contenuto delle schede su nastro – inserisce il nastro nel 1406 e automaticamente viene preso dal 1401 che effettua la vera e propria computazione – inserisce il nastro su un altro 1403 che stampa i risultati Prime idee per aumentare efficienza: • disaccoppiare l’ I/O lento dalla computazione • far gestire la sequenzializzazione dei job da un Monitor Residente mf Generazione 2: 1955–1965 Come venivano costruiti? Introduzione dei transistor Costruzione di macchine più affidabili ed economiche Come venivano usati? Gli elaboratori iniziano ad essere utilizzati per compiti diversi Si crea un mercato, grazie alle dimensioni ed al prezzo ridotti Avviene una separazione tra costruttori, operatori e programmatori 19 Generazione 2: 1955–1965 mf Come venivano programmati? Linguaggi di “alto livello”: Assembly, Assembly Fortran Tramite schede perforate FORTRAN ASSEMBLY e = (a+b)*(c+d) mf ⇒ LOAD a, %r0 LOAD b, %r1 ADD %r0, %r1 LOAD c, %r2 LOAD d, %r3 ADD %r2, %r3 MULT %r1, %r3 STORE %r3, e LINGUAGGIO MACCHINA ⇒ 10000001101101011010101010101000 Generazione 2: 1955–1965 Primi rudimentali esempi di sistema operativo, detti anche monitor residenti o sistemi batch, batch “a infornata”: Controllo iniziale al monitor Il controllo viene ceduto al job corrente Una volta terminato il job, il controllo ritorna al monitor Il monitor residente è in grado di eseguire una sequenza di job, trasferendo il controllo dall’uno all’altro in successione 20 mf Generazione 2: 1955–1965 Principale problema: molte risorse non utilizzate Durante le operazioni di lettura schede/stampa, durante il caricamento di un nuovo job, il processore resta inutilizzato Parte della memoria resta inutilizzata Primo miglioramento… ma non una soluzione Caricamento di numerosi job su nastro (off–line) Elaborazione (output su nastro) Stampa del nastro di output (off–line) mf Nascono periferiche di I/O più veloci e … L’avvento dei dischi ha permesso di escludere i nastri: tecnica dello SPOOLING (Simultaneous Peripheral Operation On-Line). Obiettivo: utilizzare al massimo la CPU evitando i tempi morti dovuti alla lentezza dell’I/O rispetto alla CPU Con periferiche di I/O più veloci si arriva al concetto di… IBM 360 21 mf … e nasce il concetto di multiprogrammazione Definizione di multi–programmazione: più programmi utente caricati contemporaneamente in memoria centrale Scopo: Utilizzo del processore durante i periodi di I/O di un job per eseguire altri job Vantaggi: Il processore non viene lasciato inattivo (idle) durante le operazioni di I/O (molto lunghe) La memoria viene utilizzata al meglio, caricando il maggior numero di job possibili Nota: per gestire la multi–programmazione, il SO deve gestire un pool di job da eseguire, fra cui alternare il processore mf La terza generazione: la multiprogrammazione I job (programmi) in esecuzione sono costituiti da una sequenza di CPU burst alternati ad I/O burst Burst di un programma CPU burst I/O burst CPU burst I/O burst CPU burst 22 Esecuzione in un sistema multiprogrammato Tempo P1 P2 P3 La CPU viene assegnata a turno ai vari programmi in esecuzione: quando il programma a cui è assegnata la CPU chiede (al S.O.) l’esecuzione di una operazione di I/O, la CPU viene assegnata ad un altro programma. Se il livello di multiprogrammazione è alto, la CPU non sarà mai inutilizzata. Indica chi è running in ogni istante Indica per chi lavora il disco in ogni istante Indica un processo in attesa di iniziare I/O Commutazione di contesto (Context switch) mf Livello di multiprogrammazione e utilizzazione della CPU A: carico di tipo CPU-bound (i programmi richiedono poco I/O) B: carico di tipo I/O-bound (i programmi richiedono molto I/O) Livello di multiprogrammazione simultaneamente in esecuzione. = numero di programmi 23 mf La commutazione di contesto (o context switch) Il trasferimento della CPU da un programma ad un altro si chiama Commutazione di contesto (context switch): ad ogni evento di questo tipo, il S.O. deve salvare lo stato del programma (i registri della CPU) in esecuzione e caricare lo stato salvato del programma prescelto tra quelli in attesa della CPU. mf Generazione 3: 1965–1980 Come venivano costruiti? Circuiti integrati Come venivano usati? Progressivamente sparisce la figura dell’operatore come “interfaccia” degli utenti verso le macchine utente = operatore Come venivano programmati? Linguaggi di “alto livello”: C, shell scripting Editor testuali, editor grafici, compilatori Accesso al sistema da terminali Sistemi operativi interattivi, con multi– multi–programmazione e time– time–sharing 24 mf mf Generazione 3: Multi– programmazione Generazione 3: Multi– programmazione Caratteristiche tecniche: tecniche Più job contemporaneamente in memoria Una componente del SO, detta scheduler, scheduler si preoccupa di alternarli nell’uso della CPU Quando un job richiede un’operazione di I/O, la CPU viene assegnata ad un altro job SO multi– multi–programmati: programmati Routine di I/O fornite dal SO Gestione della memoria: memoria il sistema deve allocare la memoria per i job presenti contemporaneamente CPU scheduling: scheduling il sistema deve scegliere tra i diversi job pronti all’esecuzione Allocazione delle risorse di I/O: I/O il SO deve essere in grado di allocare le risorse di I/O fra diversi processi 25 Un sistema Multiprogrammato: il Time–sharing mf Definizione di time– time–sharing: sharing La risorsa CPU viene suddivisa in quanti temporali; allo scadere di un quanto, il job corrente viene interrotto e l’esecuzione passa ad un altro job, anche in assenza di richieste di I/O I context switch avvengono così frequentemente che più utenti possono interagire con i programmi in esecuzione SO multiprogrammato funziona a time– time–sharing: sharing Gestione della memoria: memoria il numero di processi utente può essere molto elevato; si rende necessario l’uso della memoria virtuale CPU scheduling: scheduling deve essere di tipo time– time–sliced, ovvero sospendere periodicamente l’esecuzione di un programma a favore di un altro La presenza di più utenti rende necessari meccanismi di protezione (e.g. protezione del file system, della memoria, etc.) Multiprogrammazione: il Time Sharing mf Tempo P1 P2 P1 termina P3 Obiettivo: garantire tempi di “reazione” rapidi ai programmi interattivi. La CPU viene assegnata a turno ai vari programmi in esecuzione (un time-slice ciascuno). Un dispositivo hardware, il timer, invia dei segnali (interrupt) alla CPU per garantire che ciascun programma non occupi mai P3 termina la CPU più a lungo di un time P2 termina slice. Indica chi è running in ogni istante Timer 26 mf Scelta della durata del quanto di tempo (time slice) Per ottenere risposte rapide ai comandi degli utenti interattivi conviene impostare il time slice (o quanto di tempo) ad un valore piuttosto piccolo, tuttavia time slice troppo brevi causano un aumento dei costi (anche detti overhead) dovuti ai numerosi context switch. mf La multiprogrammazione: vantaggi e problemi Vantaggi: mentre un programma deve attendere la fine di una operazione di I/O, un altro puo’ essere eseguito, quindi la CPU viene sfruttata meglio. Problemi: Bisogna far convivere diversi programmi, appartenenti anche ad utenti diversi, senza che interferiscano. Occorre gestire in modo appropriato le risorse (CPU e Memoria, in primo luogo) e assicurare una esecuzione protetta. IBM 370 VAX UNIVAC 27 mf Generazione 4: 1980–oggi I personal computer sono dedicati ad utenti singoli: L’obiettivo primario per i SO diventa la facilità d’uso; diminuisce l’interesse per la gestione ottima delle risorse I SO per PC sono in generale più semplici; non implementano la protezione (almeno fino all’avvento di Internet) Creazione di interfacce grafiche user– user–friendly Tuttavia, tecnologie sviluppate per SO più complessi possono comunque essere adottate mf 28 mf Le unità di misura… Dove opera il Sistema Operativo (Architettura Logica Hardware) CPU Cache L1 Cache L2 RAM BIOS B U S Linee dati, indirizzi e controllo Motherboard Memorie di Massa • Hard Disk • Floppy • CD-ROM - DVD • Tape Controllers Dispositivi di I/O • Tastiera • Mouse • Schermo • Stampante • Valore da trasferire • Dove trasferirlo • Direzione di trasferimento, unità coinvolte etc. Schede LAN (Local Area Network) 29 La struttura del sistema operativo mf La gestione dei processi (nucleo) Modalità utente e modalità supervisore mf Stato utente : modalità di funzionamento del computer che permette l’accesso solo a un numero limitato di risorse es : un sottoinsieme delle istruzioni assembler (non si può accedere alle istruzioni che istruiscono le interfacce di I/O), una sola parte della RAM etc. Stato supervisore : modalità che permette l’accesso a tutte le risorse 30 Modalità utente e modalità supervisore mf Eseguiti in stato utente Applicazioni Gestore del processore Interprete di comandi (shell) Gestore della memoria Gestore delle periferiche Hw mf Interfaccia grafica (desktop) File system Eseguiti in stato supervisore Modalità utente e modalità supervisore I programmi che girano in stato utente richiedono servizi al SO tramite invocazione di sottoprogrammi speciali system call o chiamate di sistema Il sistema operativo decide come e quando effettuare il servizio Il sistema operativo può interrompere un programma che gira in stato utente per eseguire altri programmi o per effettuare operazioni di ‘gestione’ della macchina 31 Esecuzione di un programma mf Quando un programma utente è stato attivato, il processore esegue una dopo l’altra le istruzioni assembler che lo compongono Un programma in esecuzione viene detto ‘processo’ Un processo utilizza le risorse fornite dal sistema di elaborazione per assolvere ai propri compiti Programmi e Processi mf Processo: programma in esecuzione programma (entità statica): sequenza di istruzioni processo (entità dinamica): insieme di informazioni che caratterizzano la particolare esecuzione del programma (1 programma genera 1 o più processi) 32 Programma (wordprocessor) che genera più processi mf I Processi ed il loro contesto mf Connotazione temporale: il processo rappresenta lo stato di avanzamento del programma istante per istante. Il Contesto (stato) del processo all’istante t è rappresentato da: istruzione da eseguire (indirizzo in RAM: PC, IR) contenuto dei registri dati del processore …. 33 mf Dove rimane l’informazione su un processo? Il S.O. mantiene l’informazione relativa a tutti i processi attivi (non terminati) nella tabella dei processi (PCB, Process Control Block) . Per ogni processo il PCB contiene un certo numero di informazioni. La tabella dei processi è in ogni istante caricata interamente in RAM. mf La tabella dei processi: PCB Il PCB esiste per ogni processo attivo: PID: Process Identifier Stato corrente (Execute, Ready, Blocked) Program Counter Contenuto dei registri Priorità …... 34 mf mf PCB più in dettaglio… Commutazione del contesto Cambiamento di contesto - Il processo A è in esecuzione - A viene sostituito dal processo B - tutti i dati del processo A, in particolare il Program Counter, vengono salvati nel PCB Ripristino del contesto Quando il processo A torna in esecuzione riprende dai dati precedentemente salvati nel PCB 35 Tipologie di Processi mf Processo utente: generato dall’esecuzione di un applicativo utente. Processo di sistema: generato dal SW di sistema (Sistema Operativo, utilities, ecc.). mf Terminazione di un processo Un processo termina : Quando esegue una istruzione assembler di terminazione Quando effettua una operazione illecita (es. accesso a memoria privata di altri processi)(fatal error) Quando c’è un errore di programmazione che non lo permette di proseguire (es. overflow, etc) Killed da un altro processo più “importante” In tutti questi casi il processore ricomincia automaticamente ad eseguire il processo Scheduler del sistema operativo ad un indirizzo prefissato 36 mf Esecuzione ed interruzione di un processo Problema : Come fa il Sistema Operativo a riprendere il controllo del processore dopo l’attivazione di un processo? Attraverso Terminazione del processo (normale o erronea) Interruzione dall’”esterno” mf L’interruzione di un processo Il sistema operativo può bloccare un processo in un qualsiasi istante della sua esecuzione per effettuare qualche operazione di gestione della macchina Questo avviene attraverso il meccanismo hardware delle interruzioni 37 mf Gli interrupt Come funzionano le interruzioni ? ogni periferica può “richiedere attenzione” inviando un segnale di interruzione usando le linee di controllo del bus alla fine dell’esecuzione di ogni istruzione assembler il processore controlla la presenza di una interruzione se è presente il controllo passa automaticamente al sistema operativo S.O : Classificazione mf Classificazione dei S.O. in base alla modalità di gestione dei processi: mono-tasking multi-tasking: multi-tasking ‘semplice’ time-sharing time-sharing con priorità real-time 38 S.O. mono-tasking mf Esecuzione sequenziale dei processi: non si interrompe l’esecuzione di un processo per assegnare la CPU a un altro nessuna interazione con l’utente unica funzione del S.O.: concatenazione automatica dell’esecuzione di più processi Esempi: Sistemi batch (lotti di schede perforate, ‘50) MS-DOS (‘81) S.O. mono-tasking (2) mf Diagramma temporale: il il il il Job i carica i dati di input Job i effettua la computazione Job i scarica i dati di output S.O. avvia automaticamente il Job successivo I/O Job i Esecuzione Job i S.O. Job ≅ processo Job 3 Job 2 Job 1 Tempo 39 Il gestore del processore mf Nei computer attuali, tutti i programmi che compongono il SO ed i programmi applicativi ‘avviati’ sono attivi contemporaneamente sul calcolatore (multiprogrammazione) es : Windows 2000 + Word + cd player ... Il gestore del processore si preoccupa di far condividere il processore a tutti i programmi attivi in modo corretto mf lo scopo è dare l’impressione che ognuno abbia il suo processore dedicato S.O. multi-tasking Esecuzione “contemporanea” di più processi. Multi-tasking ≅ Multi-programmazione (Multi-programmazione: molti programmi UTENTE risiedono contemporaneamente nella RAM) 40 NUCLEO = Gestione dei processi e processori mf Gestione del/i processore/i: • • • mf in un certo istante la CPU è assegnata ad un solo programma; assegnazione nel tempo della CPU ai vari programmi in attesa di essere eseguiti; gestione della cooperazione tra diverse CPU Nucleo e gestione dei processi Il nucleo (Kernel) del sistema operativo è responsabile delle seguenti attività riguardanti la gestione dei processi: creazione e terminazione dei processi sospensione e riattivazione dei processi gestione dei deadlock comunicazione tra processi sincronizzazione tra processi Il gestore dei processi “realizza” realizza” una macchina (o processore) virtuale in cui ciascun programma opera come se avesse a disposizione un’ un’unità unità di elaborazione dedicata 41 mf NUCLEO = Gestione dei processi e processori Gestione dei processi: gestione dell’avvicendamento dei processi in esecuzione sul processore (o sui processori). Gestione dei processori: gestione dell’assegnazione dei processori ai processi. mf Compiti del Nucleo (Kernel) Nei sistemi attuali sono in esecuzione più processi ‘contemporaneamente’. La CPU esegue comunque una sola istruzione per volta. Il S.O. gestisce l’avvicendamento dei processi in esecuzione: assegna la CPU ai vari processi istante dopo istante. Scheduler: parte del S.O. che si occupa della gestione dei processi e dei processori 42 Obiettivi dello scheduling mf Massimizzare l’uso della CPU. Massimizzare il numero di processi eseguiti nell’unità di tempo. Minimizzare il tempo di risposta. Stati di avanzamento di un processo mf Possibili stati di un processo: execute (in esecuzione): la CPU è assegnata al processo blocked (bloccato): il processo è in attesa di un evento (completamento di un’operazione di I/O,…) ready (pronto): il processo è eseguibile, ma la CPU è assegnata a un altro processo 43 mf Ciclo di vita di un processo Ciclo di vita di un processo (dall’inizio alla terminazione): alternarsi di periodi in stato di execute, ready, blocked Terminazione Execute Inizio mf Ready Blocked Ciclo di vita dei processi alternarsi di periodi in stato di execute, ready, blocked nella coda di scheduling execute nascita ready tempo scaduto evento termine attesa evento (es. I/O) blocked park 44 mf Realizzazione di uno scheduler dei processi L’insieme dei processi in stato ready sono gestiti mediante una struttura dati coda in modalità FIFO (First In First Out). Terminazione Execute Inizio Ready A Blocked Coda Ordinata in base all’ordine di arrivo. mf Scheduler code a priorità 45 mf Stati di avanzamento di un processo Ciclo di vita di un processo (dall’inizio alla terminazione): alternarsi di periodi in stato di execute, ready, blocked Terminazione Scheduling : la CPU viene assegnata al processo A (ready). Execute A A Inizio mf A Ready Blocked Stati di avanzamento di un processo Terminazione 2. B, pronto, va in esecuzione 1.Il processo A è in attesa di un evento e cambia stato Execute A A Inizio B Ready B A Blocked 46 Tipologie delle politiche di scheduling mf Le politiche di scheduling sono raggruppate in due grandi categorie: essere Preemptive: Preemptive l’uso della CPU da parte di un processo può essere interrotto in un qualsiasi momento, e la risorsa concessa ad altro processo Non preemptive: preemptive una volta che un processo ha ottenuto l’uso della CPU, è unico proprietario della risorsa finché non ne decide il rilascio Sistemi mono–tasking mf I SO che gestiscono l’esecuzione di un solo programma per volta (un solo processo) sono detti mono– mono–tasking Non è possibile sospendere un processo per assegnare la CPU ad un altro Sono storicamente i primi SO (es. Sistemi Batch e MS–DOS) Tempo di utilizzo della CPU Tempo di attesa di eventi esterni C B A t T 47 Sistemi Multi–tasking (semplice) mf I SO che permettono l’esecuzione contemporanea di più programmi sono detti multi– multi–tasking o multi– multi–programmati Un programma può essere interrotto e la CPU passata a un altro programma Tempo di utilizzo della CPU C Tempo di attesa di eventi esterni B A t Tmulti-tasking Tmono-tasking mf Multi-tasking ‘semplice’ Obiettivi: sfruttare l’attesa per il compimento di operazioni di I/O (anche l’80-90% del tempo di elaborazione) Mentre il processo A attende per un’operaz. di I/O viene mandato in esecuzione il processo B. C B A t Tmulti-tasking Tmono-tasking 48 Sistemi time–sharing mf Un’evoluzione dei sistemi multi– tasking sono i sistemi time– sharing Ogni processo viene eseguito ciclicamente per piccoli quanti di tempo 0.75” Se la velocità del processore è sufficientemente elevata si ha l’impressione di un’evoluzione parallela dei processi 0.00” D A 0.25” C B 0.50” Time–sharing: diagramma temporale mf Processo Tempo di CPU A 3 B 2 C 4 D 3 D C B A t 49 mf Esempio di real time (tempo reale) Obiettivo: controllare processi in cui il tempo di risposta è un parametro critico. Esempi: controllo reattori nucleari, missili, impianto di riscaldamento con termostato, …. Proc. C Proc. B Proc. A Tempo Esempio di real time mf Diagramma temporale: il processo X a priorità più alta effettua la computazione quando il processo X deve effettuare un’operazione di I/O, parte l’esecuzione del processo che ha priorità più alta tra i pronti Esempio con tre processi: Bloccato Pronto Esecuzione Priorità: A > B> C Proc. C Proc. B Proc. A Tempo 50 Esempio di real time mf Non suddivisione del tempo in quanti. Assegnazione di priorità statica ai processi (alle attività critiche valori alti di priorità). I sistemi real time non sono necessariamente veloci o interattivi! Proc. C Proc. B Proc. A Tempo mf 51 mf mf La struttura del sistema operativo Il gestore della memoria 52 Gerarchie di memorie CPU ALU Registri 1 nsec 10 unità x 32/64b + velocità + costo — taglia 2 nsec Cache L1 100 Kb 10 nsec Cache L2 1Mb 80 nsec RAM 1Gb — velocità 200 Gb Dischi 8 msec — costo + taglia Nastri – Dischi backup 120 sec 100 Gb – 1Tb Una marcia in più: la memoria cache… mf CPU CACHE L1 CACHE L2 trasferimento dati MEMORIA RAM Si tratta di una memoria temporanea veloce che si pone tra la RAM e la CPU Obiettivo: Fornire molta memoria al costo delle tecnologie più economiche e con le prestazioni delle tecnologie più costose. 53 … per anticipare i bisogni… mf la cache permette di trovare quanto richiesto molto più velocemente Il 1° livello: la cache che non si vede… mf CPU Clock input B U S output Cache L1 Registri Data Path A L U istruzioni condizioni comandi Control Unit 54 mf La Memoria Cache Copio blocchi di dati tra memorie principale e memoria cache quando il processore li richiede, per anticipare future richieste Memoria principale Blocco 0 16 bytes Blocco 1 Blocco 2 istruzione corrente Blocco 0 16 bytes Blocco 1 Blocco 2 Blocco 16 Blocco 228-1 mf memoria cache di 16x4 bytes Blocco 3 istruzione corrente Il principio di località spaziale e temporale località spaziale: quando un programma fa riferimento ad un elemento è molto probabile che entro breve tempo richieda elementi attigui a quello attuale - scansioni di strutture dati come matrici e vettori - esecuzione di codice sequenziale località temporale: quando un programma fa riferimento ad un elemento è molto probabile che entro breve tempo chieda di accedere nuovamente allo stesso elemento - esecuzione di cicli - esecuzione sottoprogrammi - strutture dati tipo stack - variabili indici 55 mf Esempio di località int mat[1024][1024]; max=mat[0][0]; for(i=0; i<1024; i++) for(j=0; j<1024; j++) if(max<mat[i][j]) max = mat[i][j]; Località temporale Continuo ad usare le variabili i, j (poiché sono in un ciclo) Località spaziale Dopo mat[10][101] uso mat[10][102] Funzionamento della cache mf cache line CPU blocco di parole contigue Cache L2 RAM La filosofia della gerarchia della memoria consiste nel portare più vicino alla CPU le informazioni più utilizzate dalla porzione di programma in esecuzione così che nella maggior parte dei casi il tempo di accesso coincide con quello delle memorie più rapide. 56 Funzionamento della cache Miss x è in cache? Cerca una cache line Non trovata libera Trovata Hit Leggi/scrivi x in cache Carica un blocco di parole contenente x da RAM alla cache line trovata/liberata Scegli una cache line e, se modificata, riscrivila in RAM Sfruttamento della Località: Località Temporale → accessi alla stessa parola in cache Località Spaziale → accessi a parole consecutive nella stessa cache line Le memorie oggi in commercio mf SRAM (Static Random Access Memory ) – tempo di accesso 1÷10 ns – utilizzata per cache L1/L2 DDR/SDRAM ((Synchronous) Dynamic RAM ) – tempo di accesso 50÷100 ns – utilizzate per la memoria principale (RAM) – costo 5÷10 volte inferiore alle SRAM 57 Riepilogo delle memorie e dei tempi mf Processor Control Speed (ns): 1 Size (bytes): 100b mf On-Chip Cache Registers Datapath Second Level Cache (SRAM) Main Memory (DRAM DDR) 10 100 100Kb 512 Mb Secondary Storage (Disk) Tertiary Storage (Tape) 10,000,000 10,000,000,000 (10 ms) (10 s) 160Gb 1Tb La gestione della memoria principale La memoria principale… …è un “array” di byte indirizzabili singolarmente …è un deposito di dati facilmente accessibile e condiviso tra la CPU ed i dispositivi di I/O Il SO è responsabile delle seguenti attività riguardanti la gestione della memoria principale: 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 Il gestore di memoria “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione una memoria dedicata 58 mf La gestione della memoria principale L’organizzazione e la gestione della memoria centrale è uno degli aspetti più critici nel disegno di un SO Il gestore della memoria è quel modulo del SO incaricato di assegnare la memoria ai task (per eseguire un task è necessario che il suo codice sia caricato in memoria) La complessità del gestore della memoria dipende dal tipo di SO Nei SO multi–tasking, più programmi possono essere caricati contemporaneamente in memoria mf I compiti del gestore della memoria principale Costruire gli indirizzi dei programmi e dei dati che sono caricati in memoria 2. Gestire la multiprogrammazione e l’interazione dei processi (come è organizzata la memoria) 3. Realizzare una memoria virtuale (RAM + HD) per aumentare la capacità 1. 59 Compito 1: Gli indirizzi mf Il problema fondamentale da risolvere è il passaggio da programma eseguibile (su memoria di massa) a processo in esecuzione (in memoria di lavoro RAM) Process Control Block Programma Processo Dati Dati User Stack Memoria condivisa Da indirizzi Logici a indirizzi Fisici: la RILOCAZIONE mf La CPU esegue programmi che elaborano insiemi di dati in base ad una sequenza di istruzioni La CPU utilizza riferimenti generali in memoria per dati e istruzioni, cioè gli indirizzi logici Gli indirizzi logici vengono ricalcolati nei corrispondenti indirizzi fisici nei vari passi: Compilazione Linking Caricamento Esecuzione 60 mf RILOCAZIONE: da Indirizzi logici a indirizzi fisici Un indirizzo è detto indirizzo logico o virtuale perché ancora non fa riferimento ad un indirizzo reale sulla RAM Un indirizzo logico viene fissato (binding) durante la compilazione/linking o durante il caricamento del programma L'insieme degli indirizzi logici generati da un programma è detto spazio di indirizzamento logico mf RILOCAZIONE: da Indirizzi logici a indirizzi fisici Un indirizzo presentato alla memoria per il trasferimento di un valore è detto indirizzo fisico Durante l'esecuzione, l'associazione tra indirizzi logici e fisici è realizzata da un dispositivo hardware dedicato Memory Management Unit (MMU) 61 mf Chi fa la RILOCAZIONE: Funzionamento della MMU Con la MMU (Memory Management Unit) l'utente non vede mai gli indirizzi fisici, ma sempre e solo quelli logici MMU Indirizzo logico CPU Registro di rilocazione Indirizzo fisico 1A030 1A376 346 MEMORIA + Sistema operativo e processi utente mf Il sistema operativo, in genere risiede nella parte bassa dello spazio di indirizzamento Gli spazi di indirizzamento dei processi sono delimitati tramite Un registro di rilocazione Un registro limite Registro Limite Memoria Registro di Rilocazione (indirizzo base) Processo 2 CPU Indirizzo logico si < no + Indirizzo fisico Processo 1 Processo 3 S.O. 62 Sistema operativo e processi utente mf Poiché in memoria devono coesistere Il sistema operativo I processi utente Ciò comporta Condivisione della memoria Separazione degli spazi di indirizzamento mf La memoria è logicamente suddivisa in un'area di sistema e una per i processi utente I differenti spazi di indirizzamento è bene che siano separati, in modo da non permettere ad un processo utente di corrompere il sistema operativo o addirittura bloccare il sistema Lo Spazio di indirizzamento di un processo I 3 segmenti: il codice dati (statici e dinamici) stack o chiamate delle librerie 63 I registri “base” e “limite” di un programma mf indirizzo base addizionatore PC + + (contatore istruzione corrente programma) Indirizzo (alla memoria) > confrontatore Fault (accesso oltre il limite) registro limite Due registri: base e limite base: indirizzo iniziale del programma limite: ampiezza spazio indirizzi Indirizzo fisico = indirizzo logico + registro base Errore se indirizzo logico > registro limite Come funzionano i registri base e limite mf I registri base e limite sono gestiti dal SO Con due coppie di registri è possibile dividere il segmento del codice dai dati 64 mf Quando viene fatta la Rilocazione: Tipologie Ci sono 3 tipologie di rilocazione: Assoluta Statica Dinamica mf La Rilocazione ASSOLUTA In compilazione vengono generati solo indirizzi con riferimento a dove esattamente il codice dovrà risiedere in memoria durante l'esecuzione tipo gli eseguibili .COM del DOS Codice non rilocabile e non può essere spostato all’interno della RAM Non adatto alla multiprogrammazione (dove i processi si spostano all’interno della memoria) 65 La rilocazione ASSOLUTA del DOS (monoprogrammazione) mf 0xffff La memoria viene divisa tra il SO e l’unico processo utente in esecuzione Il SO può essere: Device driver in ROM Programma utente Programma utente Programma utente 0 Sistema operativo in RAM Sistema operativo in RAM nella RAM (Random Access Memory) in memoria bassa nella ROM (Read Only Memory) in memoria alta i driver di periferica nella ROM e il resto del SO nella RAM mf Sistema operativo in ROM La Rilocazione STATICA In compilazione gli indirizzi fanno riferimento ad un indirizzo base non specificato. Verrà fissato dal loader durante il caricamento in memoria centrale tipo gli eseguibili .EXE di DOS/Windows 9x Proc. Control Block È un codice in parte rilocabile: occorre ricalcolare tutti gli indirizzi Programma Processo Loader Dati 1 76 A3 Dati User Stack Memoria condivisa 66 Esempio di Rilocazione statica mf Quando un programma viene linkato, il linker deve conoscere l'indirizzo di memoria corrispondente all'inizio del programma Memoria Libreria Modulo 1 Linker Processo Eseguibile Modulo 2 Modulo 3 mf Processo Loader S.O. La Rilocazione DINAMICA Il codice rilocabile contiene solo riferimenti relativi a se stesso; può essere spostato durante l'esecuzione tipo gli eseguibili di Linux/Windows B B A viene spostato per far posto anche a C A A C SO SO 67 Rilocazione DINAMICA e caricamento parziale del codice mf Con la Rilocazione Dinamica è possibile effettuare il Linking dinamico del codice Il concetto base è che una libreria di funzioni viene caricata solo quando ne e' richiesta l'esecuzione. Esempio: le librerie .DLL in Windows Rilocazione DINAMICA e caricamento parziale del codice mf Il codice compilato contiene solo uno stub Stub: parte di codice che permette al compilatore di generare la chiamata corretta ad una funzione esterna, gestita dal sistema operativo Al primo riferimento alla funzione, il codice nello stub controlla la disponibilità della libreria ed in caso ne richiede il caricamento al sistema operativo Per i riferimenti successivi, la libreria è disponibile e la chiamata alle sue funzioni è immediata 68 Esempio di caricamento di una DLL (Dynamic Link Library) Memoria Libreria Modulo 1 Linker Processo Eseguibile Modulo 2 Modulo 3 I sottoprogrammi non vengono caricati fino a che non vengono chiamati. Processo Loader S.O. Librerie DLL Memoria Si ha un miglior impiego della memoria: i sottoprogrammi che non utilizzati non vengono mai caricati. Utile quando si richiedono grandi quantità di codice per gestire situazioni che avvengono raramente. Modulo 1 Linker Parte dinamica Processo Modulo 2 Modulo 3 Eseguibile Processo Loader S.O. mf Compito 2: Organizzazione della memorie e multiprogrammazione Come organizzare (suddividere) la memoria per poter gestire la presenza di più processi contemporaneamente (multiprogrammazione)? C Organizzazione lineare A pagine (Paginazione) A A segmenti (Segmentazione) B S.O. 69 1 - Organizzazione lineare mf (o contigua o a partizione unica) Indirizzo logico corrisponde all’indirizzo fisico Unica tecnica di rilocazione: ASSOLUTA Ha il grosso problema della FRAMMENTAZIONE C A B S.O. mf 2 - Organizzazione a pagine (PAGINAZIONE) Passo successivo: rinunciare alla non contiguità degli indirizzi logici (allocare la memoria fisica ai processi ovunque essa sia disponibile.) La memoria è divisa in PAGINE tutte della stessa dimensione chiamati frame (la dimensione è una potenza di 2 compresa fra 512 byte e 8192 byte) 4 Kb 4 Kb 4 Kb 4 Kb 4 Kb . . S.O. 70 mf Cosa occorre per la PAGINAZIONE Si deve tenere traccia di tutti i frame liberi. Per eseguire un programma con dimensione di n pagine, è necessario trovare n frame liberi prima di caricare il programma. Si impiega una tabella delle pagine per tradurre gli indirizzi logici negli indirizzi fisici. Si ha solo frammentazione interna (relativa all’ultimo frame non completamente occupato). 4 Kb 4 Kb 4 Kb 4 Kb 4 Kb . . S.O. Come funziona la paginazione mf Ogni processo ha la tabella delle pagine da lui occupate La tabella delle pagine risiede in memoria centrale (MMU). Il calcolo dell’indirizzo fisico è dato da n°pagina + offset (spostamento) interno della pagina 71 mf Esempio pratico di calcolo degli indirizzi L’indirizzo generato dalla CPU viene suddiviso in: Numero di pagina (p) – impiegato come indice in una tabella di pagine che contiene l’indirizzo di base di ciascuna pagina nella memoria fisica. Offset nella pagina (d) – viene combinato con l’indirizzo di base per definire l’indirizzo fisico di memoria che viene inviato all’unità di memoria. mf Passo ulteriore: NON vedere la memoria come ad un array lineare di byte, ma un insieme di BLOCCHI o SEGMENTI in quanto un programma è una collezione di segmenti logici 64 Kb 3 - Organizzazione a segmenti (SEGMENTAZIONE) programma principale (main), procedure o funzioni, librerie dinamiche variabili logiche, variabili globali, stack tabella dei simboli, matrici,… La memoria è divisa in SEGMENTI di dimensione diversa 64 Kb 64 Kb 32 Kb 32 Kb 128 Kb S.O. 72 Vista logica della segmentazione mf 1 4 1 main 2 procedura 3 DLL 4 procedura 2 3 Spazio del programma dell’utente Spazio fisico di memoria Architettura della segmentazione mf L’indirizzo logico è costituito da due elementi: <numerosegmento, offset> Tabella dei segmenti – mappa lo spazio degli indirizzi bi-dimensionale (visto dall’utente); ciascun elemento della tabella contiene: iniziale: contiene l’indirizzo fisico di partenza dello spazio di memoria in cui risiedono i segmenti. offset: indica la lunghezza del segmento. 73 Come funziona la segmentazione mf Il calcolo dell’indirizzo fisico è dato da segmento + offset (spostamento) interno del segmento mf Caratteristiche della segmentazione Rilocazione: dato che i segmenti variano di dimensione, l’allocazione della memoria è dinamica, con la tabella dei segmenti e con i relativi problemi Condivisione: è possibile avere segmenti condivisi, puntando allo stesso numero di segmento. Allocazione: si ha frammentazione esterna 74 Frammentazione esterna e hole (buchi) mf Un buco (hole) è un blocco di memoria disponibile buchi di varie dimensioni sono sparsi nella memoria. Quando viene caricato un processo, gli viene allocata la memoria di un buco grande abbastanza da contenere il processo. Il SO conserva informazioni su: a) Partizioni allocate b) Partizioni libere (buchi) S.O. Spazio fisico di memoria mf Problemi del gestore della memoria Come soddisfare una richiesta di dimensione n a partire da un insieme di buchi? In ogni momento è presente un insieme di buchi di diverse dimensioni sparsi per la memoria. Sist.op. Sist.op. ? 75 mf Strategie per l’allocazione dinamica Sist.op. della memoria First–fit: Si alloca il primo buco grande abbastanza. Best–fit: Si alloca il più piccolo buco che possa contenere il processo. E’ necessario scandire tutta la lista dei buchi. Si produce il più piccolo buco residuo. Worst–fit: Si alloca il più grande buco. E’ ancora necessario ricercare su tutta la lista. Si produce il più grande buco residuo. First-fit e best-fit sono meglio di worst-fit in termini di velocità e impiego di memoria. mf Compito 3: La memoria Virtuale Spesso la memoria non è sufficiente per contenere completamente tutto il codice dei processi Si può simulare una memoria più grande (VIRTUALE) tenendo nella memoria di sistema (RAM) solo le parti di codice e dati che servono in quel momento I dati e le parti di codice relativi a programmi non in esecuzione possono essere tolti dalla memoria centrale e “parcheggiati” su disco nella cosiddetta area di swap E’ necessario permettere lo spostamento (swapping) delle pagine. 76 mf mf Che cosa è lo swapping Memoria virtuale Cache sul disco (ma molto più lenta) Con questo meccanismo il S.O. realizza la memoria virtuale che permette di caricare ed eseguire programmi (o insiemi di programmi) che occupano più spazio di quello disponibile in RAM (quello che non ci sta in RAM viene mantenuto su disco, e portato in RAM solo quando serve). In ogni caso bisogna decidere: •dove allocare i blocchi •come identificarli •chi rimpiazzare se manca spazio 77 mf mf Gli swapping dei S.O. Funzionamento logico della memoria virtuale Memoria 0000x Programma AA-1 Programma BB-1 Programma D Swap Programma AA-2 Programma AA-3 Programma BB-2 78 Funzionamento logico della memoria virtuale mf Memoria 0000x È su disco: è un casino… Programma AA-2 Programma BB-1 Programma D Swap Programma AA-1 Programma AA-3 Programma BB-2 Caricare solo su richiesta… mf Si porta una pagina in memoria solo quando è richiesta. Viene impiegata meno memoria Si possono gestire più utenti La risposta è più lenta… Una pagina è richiesta ⇒ si fa un riferimento alla pagina pagina già in memoria ⇒ tutto OK pagina non in memoria ⇒ si porta in memoria 79 mf Si associa un bit di validità a ciascun elemento della tabella delle pagine (1 ⇒ in memoria, 0 ⇒ non in memoria). Durante la traduzione dell’indirizzo, se la pagina cercata ha il bit di validità 0 ⇒ si ha un page fault. mf Per vedere se una pagina è presente in memoria oppure no: il bit di validità Frame # Bit di validità 1 1 1 1 0 M 0 0 Tabella pagine Cosa succede al Page Fault Il SO seleziona un frame vuoto della memoria. Sposta la pagina nel frame. Aggiorna le tabelle (bit di validità = 1). Viene riavviata l’istruzione che era stata interrotta. 80 A volte occorre sostituire delle pagine mf Se in memoria non c’è posto, occorre fare la sostituzione di una pagina Con un algoritmo si trova una pagina in memoria che non sia utilizzata (criteri temporali e spaziali) e si sposta sul disco mf Algoritmo FIFO Algoritmo LRU Conclusioni Il rimpiazzamento delle pagine completa la separazione fra la memoria logica e la memoria fisica: una grande memoria virtuale può essere fornita ad un sistema con poca memoria fisica. 81 mf mf 82 mf mf La struttura del sistema operativo Il gestore della memoria secondaria (file system) 83 mf Le attuali unità di misura delle memorie di massa… Valore Nome Abbreviazione Potenza di 2 1 Byte (=8 bit) B ( = 8bit) 0 1.024 1 Kilobyte KB 10 1.048.576 1 Megabyte MB 20 1.073.741.824 1 Gigabyte GB 30 1.099.511.627.776 1 Terabyte TB 40 mf … e quelle future… … e conoscendo i passi da gigante della tecnologia… Pb (Peta – x 1.125.899.906.842.624) (250) Eb (Exa – x 1.152.921.504.606.846.976) (260) Zb (Zetta – x 1.180.591.620.717.411.303.424) (270) Yb (Yotta – x 1.208.925.819.614.629.174.706.176) (280) 84 mf Files e file system Un file è l’astrazione informatica di un archivio di dati Il concetto di file è indipendente dal mezzo sul quale viene memorizzato (che ha caratteristiche proprie e propria organizzazione fisica) Un file system è composto da un insieme di file Il SO è responsabile delle seguenti attività riguardanti la gestione del file system: Creazione e cancellazione di file Creazione e cancellazione di directory Manipolazione di file e directory Codifica del file system sulla memoria secondaria mf Tipologie di files 85 mf Strutture di files Tre generi di files mf sequenza di byte sequenza di record albero delle directory Tipi di files File eseguibile File archivio 86 mf La gestione del file system La memoria secondaria è data da hard disk, dischi ottici, floppy, etc. Il SO (modulo File System) è responsabile delle attività riguardanti la gestione della memoria secondaria mf I livelli a cui opera il File System Livello logico (Sw) Organizzazione in directory Operazioni su files e directory (copia, creazione, cancellazione, diritti, …) Livello fisico (Hw) Allocazione e gestione dello spazio Ordinamento efficiente delle disk scheduling - defrag) richieste (disk defrag 87 mf La gestione del file system Il gestore del file system deve garantire la correttezza e la coerenza delle informazioni Nei sistemi multiutente, fornisce meccanismi di protezione per consentire agli utenti di proteggere i propri dati dall’accesso di altri utenti non autorizzati Le funzioni tipiche del gestore del file system sono: Fornire un meccanismo per l’identificazione dei file Fornire metodi opportuni di accesso ai dati Rendere trasparente la struttura fisica del supporto di memorizzazione Implementare meccanismi di protezione dei dati mf Costo al megabyte per l’hard disk, 1981–2000 88 mf mf Costo al megabyte del nastro magnetico, 1984–2000 Organizzazione logica del file system Quasi tutti i SO utilizzano un’organizzazione gerarchica del file system L’elemento utilizzato per raggruppare più file insieme è la directory Directory L’insieme gerarchico delle directory e dei file può essere rappresentato attraverso un grafo (un albero nei SO più datati) delle directory File Grafo delle directory 89 mf Il File System e come si memorizzano i dati nell’Hd Esempio: relazione1.doc: pag. 1, pag. 4, pag. 6 relazione2.doc: pag. 2, pag. 3, pag. 7 relazione3.doc: pag. 5, pag. 8 Dal punto di vista strutturale il sistema operativo è formato da un insieme di livelli, che formano la cosiddetta struttura a cipolla; ciascun livello fornisce un insieme di funzioni e di servizi a partire dalle funzioni e dai servizi forniti dal livello sottostante (si veda la figura 5.1). 1 98.12.11 15:29 B C:\Matteo\LIBROCONS-RIBA\cap1.doc <-- graal /usr/NFS/graal1/matte o/LIBRO-CONS-RIBA cap1.doc 98.12.11 15:29 B C:\Matteo\LIBRO 2 -CONSRIBA\cap2.doc <-graal /usr/NFS/graal1/matte o/LIBRO-CONS-RIBA cap2.doc 98.12.11 15:29 B C:\Matteo\LIBROCONS-RIBA\cap3.doc <-- graal /usr/NFS/graal1 I livelli più bassi e, in particolare il più basso, detto kernel, sono quelli più vicini all'hardware e dipendono quindi dalla specifica macchina; i livelli più alti, invece, sono più vicini agli utenti e ai programmi applicativi e sono abbastanza indipendenti dalle 4 3 Dal punto di vista strutturale il sistema operativo è formato da un insieme di livelli, che formano la cosiddetta struttura a cipolla; ciascun livello fornisce un insieme di funzioni e di servizi a partire dalle funzioni e dai servizi forniti dal livello sottostante (si veda la figura 5.1). 5 caratteristiche hardware dell'elaboratore. Ai diversi livelli corrispondono funzionalità diverse; ad esempio, i livelli bassi si occupano della gestione efficiente delle risorse di calcolo mentre quelli alti forniscono /matteo/LIBROCONS-RIBA cap3.doc 98.12.11 15:29 B C:\Matteo\LIBROCONS-RIBA\cap4.doc <-- graal /usr/NFS/graal1/matte o/LIBRO-CONS-RIBA cap4.doc 6 7 Dal punto di vista strutturale il sistema operativo è formato da un insieme di livelli, che formano la cosiddetta struttura a cipolla; ciascun livello fornisce un insieme di funzioni e di servizi a partire dalle funzioni e dai servizi forniti dal livello sottostante (si veda la figura 5.1). 8 9 10 11 Pagine bianche Struttura logica e organizzazione fisica mf Applicazioni Floppy da 3,5 pollici (A:) Elab_imm Photoshop.exe Elab_suoni Premiere.exe Elab_testi Winword.exe Narrativa-Fra Biblioteca Narrativa-Ing Narrativa-Ita libro1 libro2 libro1 libro2 libro3 libro1 libro2 libro3 Bianchi Utenti Pautasso Indice Rossi 90 mf Organizzazione fisica del File System Elenco Elenco file file ee directory directory directory floppy daElab_imm 3,5 pollici (A:) Applicazioni directory Elab_suoni Photoshop.exe Applicazionidirectory directory program Elab_imm ... ... ... Biblioteca directory ...... ... Premiere.exe program Elab_suoni directory Utenti directory ... ... Elab_testi directory Index file-Word ... mf Le directory (strutturazione del FS) Per poter accedere ai file in modo efficiente, il File System utilizza una struttura ausiliaria detta directory. Una directory può essere pensata come un file che contiene informazioni (posizione, attributi) sugli altri file. 91 mf Quando un file viene aperto il FS va a cercare la FAT che contiene le informazioni relative ai files le copia nella tabella opportuna in memoria principale. La FAT è generalmente associata ad una partizione del disco. mf Le directory e la FAT ovvero struttura del FS Strutturazione gerarchica delle directory Il sistema delle directory è organizzato in modo gerarchico, con una strutturazione ad albero. Nella FAT troviamo il valore degli attributi del file (nome, dimensioni, autorizzazioni, …) un puntatore ad una struttura che contiene gli attributi del file 92 Come i file stanno sul disco? mf mf Ci sono varie tecniche per la memorizzazione dei files su disco Allocazione contigua Ciascun file occupa un insieme di blocchi contigui sul disco. Per reperire tutto il file sono necessarie solo la posizione di inizio (block #) e la lunghezza (numero di blocchi). Spreco di spazio. Frammentazione esterna (problema dell’allocazione dinamica della memoria). I files non possono crescere (=> frammentazione interna). 93 mf Allocazione concatenata (linked) mf Ciascun file è una lista concatenata di blocchi su disco: i blocchi possono essere sparpagliati ovunque sul disco. Si alloca quanto è richiesto, e poi si concatenano i blocchi insieme. Allocazione concatenata File-allocation table (FAT) – allocazione dello spazio su disco usata da MS-DOS e OS/2. La FAT è una tabella con un elemento per ogni blocco disco ed è indirizzato dal numero di blocco. La FAT consente di avere i puntatori localizzati sul disco e non sparsi. Semplice – richiede solo l’indirizzo di inizio Sistema di gestione dello spazio libero – non si ha spazio perso 94 mf Allocazione indicizzata mf Colleziona tutti i puntatori insieme nel blocco di indice. Allocazione indicizzata Richiede una tabella di indice Si ha un accesso dinamico senza frammentazione esterna, ma c’è il sovraccarico del blocco di indice. Se si ha un file di dimensione massima 256K parole e con una dimensione di blocco di 512 parole, è necessario solo un blocco per l’indice. 95 mf mf Directory System Gerarchico La struttura del sistema operativo La gestione dei dispositivi di I/O 96 mf La gestione dei dispositivi di I/O La gestione dell’I/O richiede: Un’interfaccia comune per la gestione dei device driver Un insieme di driver per dispositivi hardware specifici Un sistema di gestione di buffer per il caching delle informazioni Il gestore dei dispositivi di I/O è il modulo del SO incaricato di assegnare i dispositivi ai task che ne fanno richiesta e di controllare i dispositivi stessi Da esso dipende la qualità e il tipo di periferiche riconosciute dal sistema Il gestore delle periferiche offre all’ all’utente una versione astratta delle periferiche hardware; l’l’utente ha a disposizione un insieme di procedure standard di alto livello per leggere/scrivere da/su una periferica che “percepisce” percepisce” come dedicata mf Device driver Il controllo dei dispositivi di I/O avviene attraverso speciali moduli software, detti device driver I device driver sono spesso realizzati dai produttori dei dispositivi stessi che ne conoscono le caratteristiche fisiche in maniera approfondita I device driver implementano le seguenti funzioni: 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 vogliano accedere contemporaneamente allo stesso dispositivo 97 mf mf La struttura del sistema operativo Interfaccia utente 98 mf L’interfaccia utente – 1 Tutti i SO implementano meccanismi per facilitare l’utilizzo del sistema da parte degli utenti L’insieme di tali meccanismi di accesso al computer prende il nome di interfaccia utente Serve per… …attivare un programma, terminare un programma, etc. …interagire con le componenti del sistema operativo (gestore dei processi, file system, etc.) mf L’interfaccia utente – 2 Interfaccia testuale: testuale Interprete dei comandi (shell shell) Esempio: MS– MS–DOS Interfaccia grafica (a finestre): L’output dei vari programmi viene visualizzato in maniera grafica all’interno di finestre L’utilizzo di grafica rende più intuitivo l’uso del calcolatore Esempio: WINDOWS Differenze: Cambia il “linguaggio” utilizzato, ma il concetto è lo stesso Vi sono però differenze a livello di espressività 99