Sistema Operativo Il software può essere diviso in due grandi classi:

Slides:



Advertisements
Presentazioni simili
Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
Advertisements

Gestione della memoria centrale
Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire.
Gestione dei processi A. Ferrari.
Il Sistema Operativo.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
12. Il Sistema Operativo Ing. Simona Colucci
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
Sommario Il sistema operativo Introduzione
Il sistema operativo.
Struttura dei sistemi operativi (panoramica)
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Sistemi Operativi SCHEDULING DELLA CPU.
Sistemi Operativi GESTIONE DEI PROCESSI.
Il sistema operativo Vito Perrone
Il sistema operativo.
Seconda Università degli Studi di Napoli Facoltà di Economia Corso di Informatica Prof.ssa Zahora Pina.
Sistema Operativo (Software di base)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
1 Gestione del Processore (Scheduling). 2 Scheduling dei processi È l’attività mediante la quale il sistema operativo effettua delle scelte tra i processi,
Gestione del Processore (Scheduling)
Gestione del processore (Scheduler)
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Processi e Thread Scheduling (Schedulazione). 2 Scheduling Introduzione al problema dello Scheduling (1) Lo scheduler si occupa di decidere quale fra.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Informatica Generale Marzia Buscemi
Sistema Operativo Il software può essere diviso in due grandi classi:
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Il Sistema Operativo Processi e Risorse
LA MEMORIA CENTRALE. La memoria nella struttura generale del calcolatore MEMORIA CONTROLLO INGRESSO E USCITA ARITMETICA E LOGICA CPU Dispositivi esterni.
Giuseppe Andronico CCR-WS10 Santa Tecla, 18 Maggio 2010 Introduzione MPI & GPU.
IL PROCESSORE I MICROPROCESSORI INTEL Il microprocessore è un circuito integrato dotato di una struttura circuitale in grado di effettuare un determinato.
D. Talia - UNICAL 1. 1 Sistemi Operativi Domenico Talia Facoltà di Ingegneria Università della Calabria.
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
Sistemi Operativi : Gestione della Memoria Anno Scolastico 2012/2013 Un sistema operativo è un programma o un insieme di programmi che garantisce e permette.
Il Sistema Operativo. Sistema Operativo (Software di base) Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità.
IL SISTEMA OPERATIVO (seconda parte) PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI.
CONTROLLO DELLA CONCORRENZA
Basi di dati - Fondamenti
Corso di Elementi di Informatica
dCache Test effettuati al CNAF
Il Sistema Operativo Gestione dei Processi
I PROCESSI.
Il Sistema Operativo Ripasso
Applicazione web basata su web service e web socket
Sistema di Analisi e di Acquisizione
LE ARCHITETTURE NON VON NEUMANN
Microcontrollori e microprocessori
I microprocessori Il microprocessore è un circuito integrato costituito da silicio. Il microprocessore svolge fondamentalmente due funzioni: sovraintende.
Organizzazione fisica
12. Il Sistema Operativo Ing. Simona Colucci
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
SAS® OnDemand for Academics SAS Studio
analizzatore di protocollo
Il Sistema Operativo.
Processi e Thread Meccanismi di IPC (1).
Basi di dati - Fondamenti
Sistemi Operativi.
Scheduling in Linux (Kernel 2.4 e 2.6)
Processi e thread in Windows 2000
LOGICA DI FUNZIONAMENTO
LINUX: struttura generale
Excel 3 - le funzioni.
Parti interne del computer
Scheduling (Schedulazione)
Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
CLOUD.
Transcript della presentazione:

Sistema Operativo Il software può essere diviso in due grandi classi: i programmi di sistema, che gestiscono le funzionalità del sistema di calcolo i programmi applicativi, che risolvono i problemi degli utenti L’insieme dei programmi di sistema viene comunemente identificato con il nome di Sistema Operativo (SO) Definizione Un sistema operativo è un programma che controlla l’esecuzione dei programmi applicativi ed agisce come interfaccia fra le applicazioni e l’hardware del calcolatore

Scopo del sistema operativo Gestione EFFICIENTE delle risorse del sistema di elaborazione Creazione di un’interfaccia AGEVOLE tra l’uomo e la macchina

Il SO come macchina estesa – 1 Visione a strati delle componenti hardware/software che compongo un elaboratore

Il SO come macchina estesa – 2 Il SO può essere inteso come uno strumento che virtualizza le caratteristiche dell’hardware, offrendo all’utente la visione di una macchina astratta più potente e più semplice da utilizzare di quella fisicamente disponibile In questa visione, un SO… …nasconde a programmatori/utenti i dettagli dell’hardware e fornisce un’interfaccia conveniente e facile da usare …agisce come intermediario tra programmatore/utente e hardware Il S.O. fornisce quindi all’utente: Indipendenza dall’hardware Comodità d’uso Programmabilità a diversi livelli

Il sistema operativo ̶ 1 Il sistema operativo è uno strato software che opera direttamente sull’hardware... ...isola gli utenti dall’architettura sottostante e fornisce un insieme di funzionalità di alto livello ...permette lo svolgimento di operazioni quali la copia di un file o l’esecuzione di un programma; opera le azioni necessarie a caricare i programmi in memoria centrale, eseguirli, leggere e/o scrivere dati da/su memoria di massa e periferiche Il SO rende totalmente disponibile all’utente l’hardware del calcolatore

Il sistema operativo ̶ 2 Il SO può essere... ...monoutente (tipicamente nei PC), se l’intero sistema hw/sw è dedicato ad un singolo utente ...multiutente, quando diversi utenti condividono lo stesso sistema hw/sw; il SO nasconde a ciascun utente la presenza degli altri, dando l’impressione che il sistema (unità di elaborazione, memoria, periferiche, etc.) gli sia interamente dedicato Il SO è un insieme di programmi molto complesso ed articolato, soprattutto in contesto multiutente Per facilitarne il progetto, ed isolarne le varie componenti, il SO è organizzato per strati funzionali, con una struttura cosiddetta “a cipolla”

Il sistema operativo ̶ 3 Ciascuno strato funzionale realizza una macchina virtuale, che maschera le caratteristiche della macchina hardware e offre all’utente un insieme di funzionalità Struttura modulare: ciascun modulo esporta funzionalità verso l’esterno e mantiene al suo interno i propri meccanismi implementativi Ogni macchina virtuale “sembra” più potente della corrispondente macchina fisica, perché offre ai suoi utenti l’illusione di una macchina dedicata

Sistema operativo Le richieste dell'utente al SO, fatte digitando dei comandi nelle interfacce a carattere o selezionando oggetti con il mouse nelle interfacce grafiche (Graphic User Interface), sono intercettate dall'interprete dei comandi (shell), il quale attiva i moduli programma che agiscono nei componenti del nucleo (kernel). Questi attivano i dispositivi hardware quali il processore, la memoria, i controller di I/O, ecc., che svolgono la richiesta dell'utente.

Sistema operativo Programmi utente Interprete comandi attivazione programmi d’utente o di sistema File system controllo e gestione degli accessi a file Gestione delle periferiche gestione di ingresso/uscita da periferica Gestione della memoria allocazione e gestione della memoria Gestione dei processi (nucleo) gestione dei processi e delle interruzioni Macchina fisica E’ uno strato software che opera direttamente sull’hardware Isola gli utenti dai dettagli dell’hardware E’ organizzato a strati: Architettura a buccia di cipolla Ogni strato costituisce una macchina virtuale Kernel

Gestore dei processi È responsabile dell’esecuzione dei programmi da parte dell’unità di elaborazione In caso di SO multiutente, deve garantire l’esecuzione concorrente di processi multipli, decidendo a quale di essi assegnare l’accesso e l’uso dell’unità di elaborazione Gestisce gli interrupt provenienti dalle periferiche Lo strato del gestore dei processi offre agli strati superiori una macchina virtuale in cui ciascun programma opera come se avesse a disposizione un’unità di elaborazione dedicata

Gestore della memoria Alloca la memoria e la ripartisce fra i vari programmi che la richiedono Nei SO multiutente, è opportuno che molti programmi siano contemporaneamente presenti in memoria centrale, per ottenere un’esecuzione “simultanea” Lo strato del gestore di memoria offre agli strati superiori una macchina virtuale in cui ciascun programma opera come se avesse a disposizione una memoria dedicata

Driver di dispositivo Sono responsabili delle operazioni di ingresso/uscita che coinvolgono le periferiche Ciascun driver è un modulo software dedicato a “guidare” una periferica specifica: ne conosce (e ne occulta) le caratteristiche hardware Lo strato del gestore delle periferiche offre all’utente una versione astratta delle periferiche hardware; l’utente ha a disposizione un insieme di procedure standard di alto livello per leggere/scrivere da/su periferiche, che “percepisce” come dedicate

File system È responsabile della gestione dei file in memoria di massa; struttura i dati in file e li organizza in directory (cartelle nel linguaggio di MS Windows) Fornisce all’utente un insieme di funzioni di alto livello per operare su file e directory, mascherando le operazioni realmente effettuate per allocare la memoria e per accedervi in lettura/scrittura Tramite il file system, ciascun utente può organizzarsi la propria area di memoria e garantirne la protezione da accessi esterni Consente la condivisione dei file

Interprete dei comandi Consente all’utente di attivare i programmi Accede al programma, residente su memoria di massa, tramite il file system Alloca memoria e vi carica il programma (tramite il gestore della memoria) Attiva il processo (sfruttando le funzionalità del nucleo) Sfrutta l’organizzazione a strati del SO e può richiedere l’esecuzione di qualsiasi funzione implementata negli strati sottostanti

Ancora sul sistema operativo... I primi tre strati del SO, dedicati alla gestione dei processi, della memoria e delle periferiche, ne costituiscono il nucleo, o kernel L’obiettivo del SO consiste nell’ottimizzare le prestazioni del sistema informatico, determinando le politiche migliori di gestione delle risorse sotto il suo controllo Nei sistemi multiutente, ciascun utente risente della presenza degli altri in misura crescente con il carico complessivo del sistema, ovvero, al crescere del numero delle richieste di elaborazione, il sistema può diventare sovraccarico e fornire prestazioni percepibilmente scadenti

Gestione dei processi e dei processori gestione dell’avvicendamento dei processi in esecuzione sul processore (o sui processori). Gestione dei processori: gestione dell’assegnazione dei processori ai processi.

S.O. multi-tasking Obiettivo: sfruttare l’attesa per il compimento di operazioni di I/O (anche l’80-90% del tempo di elaborazione) Mentre il processo i attende per un’op. di I/O viene mandato in esecuzione il processo j.

Tempo Elapsed time: tempo trascorso tra l’inizio della vita del processo e la sua terminazione CPU time: tempo in cui il processo è stato realmente in esecuzione

Obiettivi Massimizzare l’uso della CPU. Massimizzare il numero di processi eseguiti nell’unità di tempo. Minimizzare il tempo di risposta.

Processi Concorrenti 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

La gestione dei processi  1 Processo — un programma in esecuzione Il processo è un oggetto dinamico, che evolve nel tempo, in contrapposizione al programma, un oggetto statico ed invariante nel tempo L’unità di elaborazione che esegue i processi prende il nome di processore La corrispondenza tra programma e processo non è necessariamente biunivoca: uno stesso programma eseguibile può essere associato a più processi, ciascuno dei quali svolge uno dei compiti richiesti dal programma

La gestione dei processi – 2 Il gestore dei processi è il modulo che si occupa del controllo, della sincronizzazione, dell’interruzione e della riattivazione dei programmi in esecuzione Il programma che si occupa della distribuzione del tempo di CPU tra i vari processi attivi, decidendone l’avvicendamento, è chiamato scheduler Nel caso di sistemi multiprocessore, lo scheduler si occupa anche di gestire la cooperazione tra le diverse CPU presenti nel sistema

Stato dei processi  1 Mentre viene eseguito, un processo cambia stato: New: Il processo viene creato Running: Il processo viene eseguito Waiting: Il processo è in attesa di un evento Ready: Il processo è in attesa di essere assegnato al processore Terminated: Il processo ha terminato la propria esecuzione

Stato dei processi  2 Nell’ipotesi di un unico processore, uno solo dei processi può essere in esecuzione ad un certo istante, cioè in stato di running Gli altri processi sono pronti (ready) o in attesa (waiting) I processi pronti possono venir eseguiti immediatamente: sarà lo scheduler della CPU, in base alla politica di gestione dei processi, a decidere quale dei processi pronti sarà il prossimo ad accedere alla CPU I processi in attesa attendono il verificarsi di un evento esterno (per esempio l’immissione di dati tramite un dispositivo di I/O) per passare in stato di pronto

Il ciclo di vita dei processi  1 Ogni nuovo processo entra nel sistema accedendo alla ready queue (new  ready), e va in esecuzione (ready  running) quando viene selezionato dallo scheduler Un processo attivo può essere arrestato per un interrupt esterno (running  ready) Un processo può anche essere sospeso  preempted  dal nucleo (running  ready), dopo un dato intervallo temporale, per garantire a tutti i processi un uso paritario della CPU: lo scheduler sceglie quale fra i processi pronti mandare in esecuzione

Il ciclo di vita dei processi  2 Anche un’interruzione interna può causare l’arresto di un processo (running  waiting) Viceversa, il verificarsi dell’evento atteso da un processo fa sì che esso passi dallo stato di attesa allo stato di pronto (waiting  ready) Infine, un processo in esecuzione può terminare regolarmente, o essere interrotto e terminato forzatamente dal nucleo (aborted ) per il verificarsi di un errore Ugualmente, lo scheduler seleziona un nuovo processo dalla ready queue

Cambiamento di contesto Contesto: insieme delle informazioni che caratterizzano lo stato di un processo Se il processo è fisicamente in esecuzione parte del contesto si trova nei registri della CPU (Program Counter, registri utente) Se il processo non è in esecuzione il contesto è in memoria. Cambiamento di contesto (context switch): operazione che avviene quando il sistema operativo decide di mandare in esecuzione un altro processo Il sistema operativo deve salvare tutte le informazioni necessarie a ripristinare esattamente lo stato del processo in esecuzione nel futuro.

Context Switch della CPU da processo a processo

Dispatcher Aggiorna la tabella dei processi (PCB) Divide il tempo in quanti (< 50 millisec.) Da’ un quanto ad ogni processo, uno alla volta Alla fine del quanto, segnale che passa la CPU ad un altro processo pronto Prima di passare al prossimo processo, la CPU esegue il programma di gestione delle interruzioni Aggiorna la tabella dei processi (PCB) Salva lo stato (registri, celle di M, ...) Sceglie un altro processo dalla tabella dei processi ……..

Transizioni tra stati di un processo In esecuzione richiesta di I/O schedulazione fine tempo oppure evento esterno pronti In attesa conclusione I/O Coda ordinata in attesa della CPU Insieme in attesa di eventi

Gestione informazione sui processi 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 la PCB contiene un certo numero di informazioni. La tabella dei processi è in ogni istante caricata interamente in RAM.

La tabella dei processi (PCB) Per ogni processo attivo: PID: Process Identifier Stato corrente (Execute, Ready, Blocked) Program Counter Contenuto dei registri CPU Priorità Stato della memoria

Processi I/O e CPU bound I processi utente si possono sospendere in attesa che un dispositivo esterno abbia completato un’operazione di I/O, rispetto alla frequenza con la quale invocano operazioni di l’I/O si possono definire due tipologie di processi: I/O bound: si sospendono frequentemente eseguendo brevi fasi di elaborazione (burst di CPU) tra un’operazione di I/O e l’altra. I processi interattivi sono tipicamente I/O bound. CPU bound: si sospendono raramente ed eseguono lunghe fasi (burst di CPU) di elaborazione. I processi non interattivi sono spesso CPU bound. La velocizzazione delle CPU tende a rendere più numerosi i casi di processi I/O bound, in quanto la velocità dei dispositivi non aumenta allo stesso ritmo.

Processi I/O e CPU bound I/O bound

Scheduling dei processi È l’attività mediante la quale il sistema operativo effettua delle scelte per ottimizzare l’esecuzione dei processi, riguardo : al caricamento in memoria centrale all’assegnazione del processore ai processi

Tre livelli di scheduling: Scheduling a breve termine Sceglie tra i processi pronti quello a cui assegnare il processore non preemptive scheduling preemptive scheduling (preemption = prelazione) Scheduling a medio termine (Swapping) trasferimento temporaneo in memoria secondaria di processi - quando la disponibilità di memoria principale è inferiore alla necessità dei processi esistenti (= esclusione/reinserimento nell’insieme dei processi schedulabili in coda) Scheduling a lungo termine Sceglie tra i lavori in arrivo quelli da ammettere per la prima volta tra i processi schedulabili - controlla il grado di multiprogrammazione per ottimizzarlo

Scheduling nei sistemi Batch Tre livelli di scheduling

Scheduling Lo scheduling è la funzionalità che determina, nel caso di più processi che competano per la CPU, quale tra essi andrà in esecuzione. La funzionalità che effettua la “messa in esecuzione” è detta scheduler. La politica (algoritmo) con il quale viene effettuata la scelta è detta politica di scheduling. Lo scheduling è una funzione di nucleo che viene attivata ogni volta che un evento richieda di valutare quale sia il processo “più conveniente” da mettere in esecuzione. La politica di scheduling seleziona il processo da mettere in esecuzione mentre il dispatcher assegna il processo alla CPU. Il dispatcher esegue la commutazione di contesto (context switch), il passaggio al modo utente e l’impostazione del PC. Il tempo utilizzato dal dispatcher per il cambiamento di contesto è definito overhead.

Criteri di Scheduling Obiettivi principali degli algoritmi di scheduling: Fairness (Equità) - processi della stesso tipo devono avere trattamenti simili ==> In particolare: evitare l’attesa indefinita Balance (Bilanciamento) - tutte le parti del sistema (CPU, dispositivi …) devono essere utilizate al massimo Throughput - massimizzare il numero di job completati in un intervallo di tempo Turnaround time - minimizzare il tempo di permanenza di un job nel sistema Tempo di risposta - minimizzare il tempo di riposta agli eventi Proporzionalità - assicurare un tempo di risposta proporzionale alla complessità dell’azione

Scheduling della CPU Le politiche di scheduling sono raggruppabili in due grandi categorie: 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: una volta che un processo ha ottenuto l’uso della CPU, è unico proprietario della risorsa finché non ne decide il rilascio

Politiche di Scheduling della CPU Roundrobin : la politica di scheduling più semplice, che consiste nel garantire la rotazione nell’esecuzione dei processi Lo scheduler assegna la CPU ad un processo per un quanto di tempo Quando il quanto di tempo termina, il processo in esecuzione viene interrotto e ritorna nella ready queue Per realizzare l’alternanza fra processi, lo scheduler gestisce la ready queue in modo tale da assegnare il processore al primo processo in coda che, quando esaurisce il suo quanto, viene posto alla fine della coda (FIFO) Alla fine della coda si inseriscono anche i processi che passano dallo stato di attesa allo stato di pronto

Politica Round Robin A passa in esecuzione Coda Pronti Primo E C A B D In Esecuzione Coda Pronti Primo A D B C E A passa in esecuzione A esaurisce il quanto di tempo

Scheduling con priorità Ogni processo ha una priorità Ogni volta va in esecuzione il processo a priorità più elevata Criteri di assegnazione della priorità ?? >> Per esempio: politica Shortest Job First (SJF) Punti chiave Priorità statica ==> Possibilità di attesa indefinita per i processi a priorità più bassa Priorità dinamica ==> strategia di assegnazione della priorità ? per esempio: priorità maggiore ai processi I/O bound

Scheduling con priorità Molte strategie per il calcolo dinamico della priorità: Priorità crescente nel tempo per i processi che rimangono in stato di pronto. Obiettivo: impedire attesa indefinita Incremento di priorità quando i processi vengono riattivati. Obiettivo: tempo di risposta Priorità legata alla percentuale f del quanto di tempo che è stato consumato l’ultima volta che il processo è andato in esecuzione (es. proporzionale a 1/ f ). Obiettivo: favorire processi I/O bound

Politica SJF Scheduling con politica Shortest Job First (SJF) ==> privilegia il job più corto Ipotesi: l’insieme dei job da schedulare è noto all’inizio si conosce il tempo di esecuzione T di ogni job Politica: i job sono schedulati in ordine di T crescente non c’è prerilascio Proprietà: SJF minimizza il tempo medio di turnaround

Scheduling della CPU Esempio: In un sistema che comporta problemi di sicurezza, alcuni eventi (come la segnalazione di guasti ai motori di un aereo) sono molto più importanti di altri (come la segnalazione di difetti al sistema di intrattenimento) Nella maggior parte delle applicazioni di elaborazione dati viene attribuita una priorità bassa ai cosiddetti processi batch, che non necessitano interazione con l’utente Problema: Starvation (blocco indefinito), i processi a bassa priorità potrebbero non venir mai eseguiti Soluzione: Aging (invecchiamento), aumento graduale della priorità dei processi che si trovano in attesa nel sistema da lungo tempo

Interruzioni interne  1 Nel corso della sua evoluzione, il processo in esecuzione può richiedere lo svolgimento di un’operazione di ingresso/uscita che coinvolge una periferica L’esecuzione del processo si interrompe ed il kernel del SO diviene attivo (si esegue un processo di sistema) La sospensione del processo in esecuzione si dice interruzione interna: il processo passa dallo stato ready allo stato waiting L’esigenza di sospendere il processo all’atto di una richiesta di un servizio di I/O risponde ad una logica di buona amministrazione delle risorse

Interruzioni interne  2 E’ notevole la differenza fra i tempi di esecuzione delle istruzioni in memoria centrale (dell’ordine delle decine di nanosecondi) ed i tempi di esecuzione delle istruzioni di I/O (qualche millisecondo per accesso alla memoria di massa, qualche secondo per comandi da terminale) La sospensione avviene in modo tale che il processo possa riprendere la propria attività, dopo l’interruzione, esattamente dallo stesso punto e con gli stessi dati Occorre salvare il contesto, cioè copiare il contenuto dei registri del processore in una zona particolare di memoria, il descrittore del processo Prima di riprendere l’esecuzione del processo interrotto, occorre eseguire l’operazione inversa, cioè ricopiare il contenuto del descrittore nei registri del processore, per ripristinare il contesto

Interruzioni interne  3 Dopo il salvataggio del contesto del processo interrotto, lo scheduler della CPU seleziona uno dei processi pronti e gli alloca il processore Molti processi possono essere nello stato di pronto allo stesso tempo Il contesto del processo selezionato, in base alla politica di scheduling, viene ripristinato, e la sua esecuzione può proseguire dall’istruzione successiva a quella che ne aveva provocato l’interruzione (quella puntata dal registro program counter ) L’operazione complessiva di interruzione di un processo, salvataggio del contesto, scelta di un nuovo processo dalla ready queue (coda dei processi pronti), e ripristino del suo contesto, prende il nome di cambiamento di contesto o context switch

Interruzioni esterne  1 Le interruzioni esterne sono eventi asincroni, cioè non regolati dal clock del processore: le operazioni dell’elaboratore si coordinano con il mondo esterno attraverso le periferiche Quando si verifica un’interruzione esterna, il kernel... ...salva il contesto del processo attivo, che passa dallo stato di esecuzione allo stato di pronto ...richiama un proprio modulo, il gestore delle interruzioni, che esegue le operazioni necessarie per far fronte alla particolare interruzione

Interruzioni esterne  2 Esempio: Se l’interruzione segnala la presenza di dati in ingresso da tastiera, a fronte di un’operazione di lettura richiesta dal processo P1, il gestore delle interruzioni... ...trasferisce i dati dal registro della periferica in memoria centrale ...provvede a modificare lo stato del processo P1, da waiting a ready Inoltre, al termine della gestione dell’interruzione, lo scheduler seleziona uno dei processi pronti (non necessariamente quello sospeso dall’interruzione appena servita) e lo manda in esecuzione

Sincronizzazione dei processi  1 I processi devono sincronizzarsi, devono cioè coordinare le loro attività La modalità più semplice di coordinamento consiste nell’esecuzione sequenziale : un processo termina invocando l’attivazione di un nuovo processo Tempo di utilizzo della CPU Tempo di attesa di eventi esterni C B A t T

Sincronizzazione dei processi  2 Tecniche di sincronizzazione più complesse nascono dall’esigenza dei processi di competere per alcune risorse, o di cooperare fra loro Esempio: Un processo che richiede un servizio di I/O può essere interrotto e la CPU passata a un altro programma Tempo di utilizzo della CPU Tempo di attesa di eventi esterni C B A t Tmulti-tasking Tmono-tasking

Sincronizzazione dei processi  3 Un esempio di competizione si verifica quando due processi vogliono accedere simultaneamente ad una risorsa, detta risorsa critica, sulla quale può operare un solo processo alla volta; nel caso di richieste contemporanee, uno solo dei processi richiedenti accede alla risorsa critica, mentre l’altro deve attendere il rilascio della risorsa per potervi accedere a sua volta Un esempio di coordinazione si ha quando due processi sono tali per cui ciascuno di essi ha bisogno dell’altro per poter evolvere; nel classico problema del produttore/consumatore, il primo processo produce dati (per esempio, acquisendoli da una periferica) mentre il secondo li utilizza (per esempio, svolgendo su di essi delle elaborazioni)

Sincronizzazione dei processi  4 La sincronizzazione dei processi, necessaria sia nel caso di competizione sia nel caso di cooperazione, avviene tramite due meccanismi fondamentali... ...l’uso di variabili condivise (dette semafori), per l’accesso a parti critiche di codice ...e la comunicazione esplicita fra processi (mediante scambio di messaggi) Esempio: L’accesso concorrente a dati condivisi può causare incoerenza nei dati Per garantire la coerenza dei dati occorrono meccanismi che assicurano l’esecuzione ordinata dei processi cooperanti

Sincronizzazione dei processi  5 Problema della sezione critica: n processi competono per utilizzare dati condivisi; ciascun processo è costituito da un segmento di codice, detto sezione critica, in cui accede ai dati e li modifica Ipotesi: Assicurarsi che, quando un processo esegue la sua sezione critica, a nessun altro processo sia concesso eseguire la propria L’esecuzione di sezioni critiche da parte di processi cooperanti è mutuamente esclusiva nel tempo Soluzione: progettare un protocollo di cooperazione fra processi Ogni processo deve chiedere il permesso di accesso alla sezione critica, tramite una entry section (il semaforo diviene “rosso” ad opera del processo che trova il “verde” e si accinge ad accedere ai dati) La sezione critica è seguita da una exit section (il semaforo “rosso” diviene “verde” ad opera del processo che ha terminato di utilizzare i dati condivisi); il rimanente codice è non critico

Gestione della memoria RAM: volatile, costosa e quindi di dimensione limitata  contiene i Programmi + Dati (Modello di Von Neumann) Processi della CPU in esecuzione in un certo intervallo di tempo utilizzando i registri Programma + Dati contenuti nella RAM Il sistema operativo deve gestire lo spostamento di Progr. + Dati tra RAM e CPU .

Gerarchia di memoria Si cerca di raggiungere un compromesso sfruttando la gerarchia di memoria Registri Cache Memoria Principale Dischi Magnetici Dischi Ottici Nastri Magnetici

Dispositivo di memoria Gerarchia di memoria Dispositivo di memoria Velocità di accesso Capacità Costo Volatilità Registri nanosecondi Kbyte Molto alto alta Cache decine di ns Mbyte €100/Mbyte Memoria principale 50-70 ns centinaia Mbyte €1/Mbyte Dischi magnetici 5-15 ms decine Gbyte €10/Gbyte bassa Dischi ottici 100 ms €5/Gbyte Nastri Fino a 1 s Fino a 1 Tbyte €1/Gbyte

Gestore della memoria La parte del SO che gestisce la memoria è il Gestore di Memoria i cui compiti sono: tenere traccia di quali parti di memoria sono in uso e quali non lo sono allocare la memoria ai processi che la necessitano e deallocarla gestire lo swapping tra la memoria principale e il disco quando la memoria principale non è sufficientemente grande per mantenere tutti i processi in definitiva cercare di sfruttare al meglio la gerarchia di memoria

Gestione della memoria centrale …è 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

Gestione della memoria centrale Premessa indispensabile per la gestione concorrente di molti processi è la presenza di molti programmi in memoria centrale (multiprogrammazione) La memoria centrale assume un ruolo simile all’unità di elaborazione: è una risorsa unica, spesso scarsa, da suddividere fra i vari processi/programmi Per allocare i programmi in memoria centrale è necessario rilocarli: Rilocare significa trasformare gli indirizzi logici, presenti nei programmi, in indirizzi fisici, corrispondenti alle locazioni di memoria dove il codice eseguibile viene effettivamente caricato D’altra parte, l’uso di indirizzi logici nei programmi è essenziale per consentirne il caricamento in differenti porzioni di memoria Problema: come allocare lo spazio in maniera ottimale

Allocazione a partizioni multiple Memoria Memoria 0000x 0000x Programma A Programma A Programma B Programma D Programma E Programma C Programma C Istante T1 Istante T2

Allocazione a partizioni multiple Memoria 0000x Programma A Programma D Programma F Programma E PROBLEMA !!!! FRAMMENTAZIONE Programma C

Tabella di mappa di pagina Paginazione Un importante meccanismo di “suddivisione” della memoria centrale, e delle entità in essa memorizzate, è quello della paginazione: La memoria centrale è considerata dal gestore della memoria come partizionata in pagine, ciascuna delle quali è un’area di memoria contigua, di dimensione prefissata Anche i programmi vengono partizionati in pagine ed allocati in un numero intero di pagine, non necessariamente contigue Tabella di mappa di pagina

Tabella di mappa di pagina Compito della Tabella di mappa di pagina è: - mettere in relazione le pagine di un programma e i blocchi di memoria - consentire al Sistema Operativo di sapere quali pagine sono realmente presenti in memoria e in quali blocchi sono memorizzate (paginazione dinamica) - generare un’interruzione quando un lavoro vuole accedere ad un indirizzo contenuto in una pagina non presente in memoria e quindi richiedere al Sistema Operativo di caricarla dal disco in memoria. 1) Se vi sono blocchi liberi, questa operazione consisterà nell'aggiornamento della tabella di mappa e nel caricamento effettivo nel blocco prescelto. 2) Se invece non vi sono blocchi disponibili, occorrerà scegliere tra le pagine presenti in memoria quale riportare sul disco, liberando così il relativo blocco di memoria.

Soluzione: Paginazione Memoria Memoria 0000x Programma A Programma D 0000x Programma A Programma B Programma E Programma F Programma D

Segmentazione Segmento: parte di un programma che svolge una determinata funzione logica. (funzioni, array, ecc) 1 3 2 4 Spazio utente (Programma) Spazio fisico di memoria Il gestore della memoria può utilizzare il partizionamento logico del programma per caricare segmenti di lunghezza variabile in maniera indipendente Segmenti logici Segmenti fisici NB: Mentre le pagine hanno lunghezza fissa, i segmenti, essendo logicamente suddivisi, hanno lunghezza variabile

La Segmentazione Definiamo segmento un insieme di istruzioni considerate come una unità logica ad esempio una routine, un array, un'area dati ecc. Uno spazio degli indirizzi di un programma si può quindi pensare composto da diversi segmenti di dimensioni variabili, ciascuno dei quali viene caricato in memoria all'occorrenza e collegato al resto del programma in modo dinamico (paginazione dinamica) ed utilizzato per l'esecuzione.

Paginazione e Segmentazione – la divisione in pagine eseguita dal S.O. – le pagine hanno dimensione fissa – le pagine possono contenere informazioni disomogenee (ad es. sia codice sia dati) – una pagina ha un indirizzo di memoria – dimensione tipica della pagina: 4 KB

Segmentazione e Paginazione – la divisione in segmenti spetta al programmatore. – i segmenti hanno dimensione variabile – un segmento contiene informazioni omogenee per tipo di accesso e permessi di condivisione (insieme di istruzioni) – un segmento ha un nome. – dimensione tipica di un segmento: 64KB - 1MB

Memoria Virtuale (swap) Segmentazione e paginazione non sono mutuamente esclusive: in molti SO vengono applicate contemporaneamente In entrambi i casi, il gestore della memoria offre al programma applicativo la visione di una memoria virtuale, che può essere maggiore di quella fisica Si possono gestire programmi caricandone effettivamente in memoria solo le pagine (o i segmenti) relative al codice attualmente in esecuzione Le pagine (o i segmenti) che non sono al momento caricate in memoria rimangono disponibili sulla memoria di massa, all’interno di opportuni file

La memoria virtuale Programma A-1 Programma B-1 Programma D 0000x Programma A-1 Programma B-1 Programma A-2 Programma A-3 Programma B-2 Swap Programma D

La memoria virtuale Programma A-2 Programma B-1 Programma D 0000x Programma A-2 Programma B-1 Swap Programma D Programma A-1 Programma A-3 Programma B-2

Memoria fisica e memoria virtuale Mem. virtuale o logica Decimale Mem. fisica 1 …... 2 1 3 2 4 5 128 Mega …... 4 Giga Il numero di indirizzi virtuali (o logici) è maggiore del numero di indirizzi fisici !!!

Indirizzi logici e fisici Se numero ind. logici = numero ind. fisici abbiamo una corrispondenza uno a uno Mem. virtuale Mem. fisica …... …... 148 148

Indirizzi logici e fisici - Poiché nella memoria virtuale: num. indirizzi logici > num. indirizzi fisici allora più indirizzi logici vengono tradotti in un unico indirizzo fisico Mem. virtuale 56 Mem. fisica …... 132 148 300 …...

Indirizzi logici e fisici Mem. virtuale 56 Mem. fisica 132 148 300 Istante T1 ... ... Mem. virtuale 56 Mem. fisica 132 148 300 Istante T2 ... ... N.B. Le celle con ind. logici tradotti in un unico ind. fisico non possono essere usate contemporaneamente.

Traduzione degli indirizzi La traduzione degli indirizzi logici in indirizzi fisici è effettuata dalla MMU (Memory Management Unit), componente HW nella CPU. CPU Ind. logici RAM MMU Ind. fisici Address BUS Data BUS Control BUS

Memoria di modo S ed U  1 Ai programmi che realizzano le funzioni proprie del SO, ed alle strutture dati da esso usate, devono essere assegnate opportune zone di memoria Inoltre, i processi di sistema possono usare l’intero set di istruzioni del calcolatore (talune non disponibili per i programmi utente), possono venire allocati in memoria in maniera ottimale, e devono essere protetti da errori causati da altri programmi La memoria viene suddivisa in memoria di modo S (supervisore) e memoria di modo U (utente) Nella porzione di modo S vengono caricati i processi del SO e vengono create le strutture dati da esso utilizzate Nella porzione di modo U vengono caricati i processi utente

Memoria di modo S ed U  2 Se il processore sta eseguendo un processo utente, lo si dice attivo in modo utente (modo U), se esegue un processo di sistema, cioè se è attivo il nucleo, lo si dice attivo in modo supervisore (modo S) Quando il processore è attivo in modo S può accedere a tutta la memoria (di modo U e di modo S) ed ha a disposizione un insieme più ricco di istruzioni Il processore attivo in modo U può accedere solo alle zone di memoria di modo U, ed in particolare a quelle riservate al solo processo in esecuzione La suddivione della memoria protegge il codice e le strutture dati che il SO usa per garantire una gestione delle risorse corretta ed efficiente Le istruzioni di codice utente non possono accedere a zone di memoria di modo S se non richiedendo l’intervento del SO

Il file system

Il file system  1 File: Spazio di indirizzi logici contigui; è un insieme di informazioni correlate e registrate nella memoria secondaria, a cui è stato assegnato un nome Dal punto di vista dell’utente... ...è la più piccola porzione di memoria secondaria indirizzabile logicamente e... ...i dati possono essere scritti nella memoria secondaria soltanto all’interno di un file Dal punto di vista del SO... ...i file vengono mappati su dispositivi fisici di memorizzazione non volatili

Il file system  2 Attributi del file: Nome: identificativo del file Locazione: puntatore al dispositivo ed alla posizione del file sul dispositivo Dimensione: dimensione attuale del file Protezione: parametri di controllo per l’accesso in lettura, scrittura ed esecuzione del file Ora, data, identificativo dell’utente: dati necessari a protezione e sicurezza del sistema, e per il controllo d’uso

Il file system  3 Il file system è responsabile della gestione dei file in memoria di massa struttura i dati in file... ...li organizza in directory (o cartelle) realizza inoltre un insieme di funzioni di alto livello per operare su file e directory Il file system garantisce una gestione dei file indipendente dalle caratteristiche fisiche dei dispositivi che costituiscono la memoria di massa: astrazione utile sia per l’utente sia per i programmi

La gestione dei file  1 Le infomazioni sui file sono conservate nella struttura di directory, che risiede sulla memoria secondaria Le directory hanno (nel caso più semplice) organizzazione ad albero; ciascuna directory può contenere file e sottodirectory Directory File Albero delle directory

Il file system di WINDOWS La gestione dei file  2 Ciascun file viene identificato da un pathname che include l’intero cammino, dalla radice dell’albero al file stesso Tutti i file e sottodirectory presenti nella stessa directory devono avere nomi distinti  ciascun pathname è unico Il file system di WINDOWS

La gestione dei file  3 Un utente che interagisce con il file system ha un proprio contesto, cioè una specifica posizione nel file system, corrispondente ad un nodo nell’albero Per default, all’atto del collegamento al sistema, il contesto dell’utente è costituito dalla sua home directory Il contesto può essere variato, muovendosi ovunque nell’albero delle directory (almeno in quelle accessibili all’utente)

La gestione dei file  4 Funzioni disponibili agli utenti del file system: Creazione di file (operazione normalmente eseguita da software applicativo, come editor e word processor) e directory Comandi per stabilire i parametri di protezione Lista del contenuto di una directory Comandi per cambiare il contesto Copia, ridenominazione e visualizzazione di file Cancellazione di file e rimozione di directory

La gestione delle periferiche

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

Driver di dispositivo I driver sono moduli software cui è affidato il compito di comunicare dati da e verso le periferiche Permettono l’accesso alle periferiche tramite “primitive di alto livello” 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 I driver vengono scritti specificamente per ciascun dispositivo e sono normalmente forniti dal costruttore