Appunti Di Sistemi Operativi. Prof. Flavio Cerini



Documenti analoghi
Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Il Sistema Operativo

Un sistema operativo è un insieme di programmi che consentono ad un utente di

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Gestione della memoria centrale

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo (1)

Il memory manager. Gestione della memoria centrale

Sistemi Operativi. 5 Gestione della memoria

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

Sistema operativo: Gestione della memoria

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Pronto Esecuzione Attesa Terminazione

Corso di Sistemi di Elaborazione delle informazioni

Dispensa di Informatica I.1

Sistemi Operativi (modulo di Informatica II) I processi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Architettura di un sistema di calcolo

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

La Gestione delle risorse Renato Agati

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

LA GESTIONE DELLA MEMORIA

FONDAMENTI di INFORMATICA L. Mezzalira

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

Sistemi Operativi Kernel

Coordinazione Distribuita

Il Software. Il software del PC. Il BIOS

Architettura di un calcolatore

Gestione della Memoria

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Infrastrutture Software

Informatica: il sistema operativo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Sistemi operativi. Esempi di sistemi operativi

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Le Infrastrutture Software ed il Sistema Operativo

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

I THREAD O PROCESSI LEGGERI Generalità

STRUTTURE DEI SISTEMI DI CALCOLO

Deadlock (stallo) Parte III. Deadlock

Soluzione dell esercizio del 2 Febbraio 2004

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Tecnologia di un Database Server (centralizzato) Gestione del buffer

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Lo scheduling. Tipici schedulatori

Corso di Informatica

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Fasi di creazione di un programma

Introduzione ai Sistemi Operativi

J. Assfalg Appunti di Sistemi Operativi

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

TEORIA DEI SISTEMI OPERATIVI

DMA Accesso Diretto alla Memoria

Corso di Programmazione Concorrente

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Il File System. Il file system

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Fondamenti di Informatica: Sistemi Operativi 1. Introduzione

Automazione Industriale (scheduling+mms) scheduling+mms.

Base di dati e sistemi informativi

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Introduzione al data base

Linguaggi di programmazione

Capitolo Silberschatz

Strutturazione logica dei dati: i file

Processi e Thread. Scheduling (Schedulazione)

TITLE Sistemi Operativi 1

Analisi e diagramma di Pareto

Esempio: aggiungere j

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

INFORMATICA 1 L. Mezzalira

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

SCHEDULATORI DI PROCESSO

Cosa è un foglio elettronico

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Architettura hardware

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

Appunti sulla Macchina di Turing. Macchina di Turing

Transcript:

Appunti Di Sistemi Operativi Prof. Flavio Cerini DEFINIZIONI PROGRAMMA : Insieme statico di istruzioni (entità passiva) che descrive le azioni da compiere ( un programma viene eseguito ) PROCESSO : Entità attiva che rappresenta l esecuzione di tali azioni ( un processo viene avanzato ). Il processo é il job associato alla risorsa che ha richiesto ( rappresenta l evoluzione dinamica di un programma ) JOB : Una richiesta elementare di utilizzo di una risorsa, presente all interno del programma in esecuzione. ( una singola istruzione ad alto livello contiene molte operazioni. Per la CPU l operazione elementare é il JOB PROCESSORE : Dispositivo che consente l evoluzione e il completamento di un processo ( in genere si intende la CPU ). In multiprogrammazione ogni utente ha l impressione di lavorare con un suo processore virtuale. NB : più processi possono essere associati allo stesso programma : ciascuno rappresenta l esecuzione dello stesso codice con dati diversi ). THREAD : Termine introdotto in tempi molto recenti ( verso la fine degli anni 80 ). Un thread rappresenta un segmento di istruzioni di un processo in esecuzione. Un processo é un insieme di thread che rappresentano il suo codice eseguibile. Un processo é composto come minimo da un thread, ma normalmente ad ogni processo ne vengono associati più di uno in base alle capacità di avanzamento concorrente di ciascuno. La dichiarazione e definizione di un thread può avvenire a livello software ( includendo nel programma opportune chiamate a procedure di sistema che gestiscono i thread ) oppure venire generati autonomamente dal S.O quando é in grado di individuare tra i compiti da eseguire quelli che possono essere resi concorrenti. Un processo multithreading in un certo istante ha più parti in esecuzione cioé più zone di programma che avanzano concorrentemente. Il vantaggio principale che si ottiene ricorrendo ai thread é la maggiore velocità di commutazione. Il processo é un entità più consistente di un thread Il thread viene infatti chiamato anche light process ( processo leggero ) Autore Flavio Cerini 1

Definizioni di sistema operativo : 1) Il S.O é il gestore delle risorse del calcolatore, cioé il software di base che serve all utente per lavorare con l hardware. 2) Un S.O può essere definito come un insieme di procedure manuali e automatiche che consentono all utente di un sistema di elaborazione di usarlo efficientemente. 3) Un S.O é un insieme di strumenti per lo sviluppo e l esercizio del software e delle comunicazioni per un dato sistema hardware nel rispetto dei seguenti principi a) Visione astratta delle risorse da parte degli utenti, cioé il più possibile indipendente dalle risorse hardware e dalla loro ubicazione nel sistema hardware b) Gestione corretta, sicura ed efficiente delle risorse 4) Un S.O é un insieme di programmi che assolvono al duplice compito di far vedere all utente una macchina virtuale semplificata e di gestire in maniera ottimizzata le risorse del sistema FUNZIONI SVOLTE DA UN SISTEMA OPERATIVO Le funzioni svolte da un S.O, pur diverse a seconda delle modalità di funzionamento del sistema sono comunque riconducibili ad alcune categorie ben definite. 1) Gestione delle risorse sia hardware ( tempo di cpu, spazio di memoria, dispositivi di I/O ecc ) che software ( file, strutture dati, ecc ). Il S.O assegna le risorse ai processi di utente in base a prefissate politiche. 2) Definizione di una macchina virtuale di più semplice uso da parte degli utenti, in grado di nascondere tutta una serie di particolarità del funzionamento del sistema legate alla struttura del HW ( es gestione interruzioni, utilizzo dei dispositivi di I/O ecc ). La macchina virtuale mette a disposizione dell utente apposite operazioni ( system calls ) che gli consentono di operare ad un livello di astrazione maggiore. Si noti che le due funzioni rappresentano due modi diversi, ma strettamente connessi, di rappresentare il ruolo di un sistema operativo. Autore Flavio Cerini 2

RISORSE DEL SISTEMA Un sistema di elaborazione si può considerare suddiviso in quattro gruppi di elementi ( risorse ) MEMORIA CENTRALE PROCESSORE DISPOSITIVO DI I/O MEMORIA DI MASSA struttura di Von Neumann : CPU MEMORIA CENTRALE INPUT /OUTPUT HD Memoria di massa (hard/disk) Le risorse non sono solo hardware ma anche software ( es file presenti in memoria). Il S.O sarà quindi composto di moduli software che si occupano di gestire una singola classe di risorse, garantendo le seguenti funzioni fondamentali : 1) Conoscere lo stato delle risorse di cui sono responsabili 2) Determinare la politica di allocazione della risorsa ( quale processo deve assumere una risorsa, quando e per quanto tempo ) 3) Allocare fisicamente la risorsa secondo la strategia prescelta 4) Deallocare la risorsa secondo la strategia prescelta CONCETTO DI RISORSA RISORSA : Qualsiasi elemento HW oppure SW che viene usato da un processo e che ne condiziona l avanzamento ( o la creazione ) Autore Flavio Cerini 3

PRIMA CLASSIFICAZIONE DEI S.O 1) S.O MONOPROGRAMMATI 2) S.O MULTIPROGRAMMATI 3) S.O DISTRIBUITI 1) S.O MONOPROGRAMMATI : S.O nei quali é possibile eseguire un solo programma per volta ; quindi tutte le risorse sono riservate a questo programma. Il S.O sarà abbastanza semplice, non ci sono problemi di competizione per l utilizzo delle risorse ( es S.O MS DOS ) problema : Risorse usate in modo poco efficiente con lunghi tempi di inattività 2) S.O MULTIPROGRAMMATI : Gestiscono sistemi di elaborazione in grado di far eseguire più programmi contemporaneamente. Si possono presentare due casi a) Un unico utente fa girare più programmi b) Più utenti lavorano sul loro programma che gira su un elaboratore centrale In questi ambienti é fondamentale gestire l assegnazione delle risorse. Gli utenti non devono attendere troppo Non si devono creare conflitti fra i processi Vantaggi : - Gestione contemporanea di più programmi indipendenti presenti nella memoria principale - Migliore utilizzazione delle risorse ( riduzione dei tempi morti ) Svantaggi : - Maggiore complessità del S.O - Algoritmi per la gestione delle risorse ( cpu, memoria, I/O ) Autore Flavio Cerini 4

- Protezione degli ambienti dei diversi programmi ( CPU 286 e successive ) Nei sistemi multiprogrammati si fa riferimento ai concetti di overlapping e interleaving Si faccia riferimento alla Fig Overlapping : Sovrapposizione temporale di processi Interleaving : alternanza temporale di processi PR2 PR1 overlapping interleaving Tempo di CPU SERVONO PIU CPU UNA SOLA CPU 3) S.O DISTRIBUITI Reti di calcolatori. Un S.O di questo genere deve fare in modo che ogni utente possa connettersi ad una parte qualsiasi del sistema nello stesso modo, come se tutto fosse immediatamente disponibile. Il S.O deve tener conto di molti elementi. La classificazione di cui si é parlato é trasparente per l utente. I comandi di dialogo, il lancio dei programmi, possono essere identici nei tre sistemi visti 4) S.O TIME SHARING Autore Flavio Cerini 5

Processore assegnato ad ogni processo per un quanto di tempo ( time slice ). Ogni utente ha l impressione di avere a disposizione tutto il sistema. CLASSIFICAZIONE DEI SISTEMI OPERATIVI L utente può utilizzare un sistema di elaborazione secondo due modalità fondamentali : A) BATCH ( a lotti ) : non c é interazione diretta con l utente. L obiettivo del S.O é l ottimizzazione dell uso delle risorse ( non esistono pregiudiziali verso la multiprogrammazione ) B) INTERATTIVO : l utente vede una propria macchina virtuale con la quale interagire mediante una serie di comandi Un sistema di elaborazione può essere specializzato dal sistema operativo per particolari applicazioni. S.O real time : generalmente sono sistemi dedicati al controllo di processi industriali. Sono molto importanti i brevi tempi di risposta. In particolare si parla di tempo reale stretto ( es processi industriali ) e tempo reale debole ( es prenotazione voli aerei ). S.O dedicati : previsti per sistemi di elaborazione che devono effettuare delle azioni ripetitive ( es controllo di processi industriali ). S.O transazionali : Sistemi interattivi che consentono solo accesso e modifica ad archivi di dati ( applicazioni bancarie ). Autore Flavio Cerini 6

STRUTTURA GERARCHICA DI UN SISTEMA OPERATIVO HARDWARE LIV 0 NUCLEO LIV 1 GESTIONE MEMORIA LIV 2 GESTIONE DELL I/O LIV 3 FILE SYSTEM LIV 4 PROGRAMMI UTILITA LIV 5 INTERPRETE COMANDI LIV 6 Scomposizione indicativa dei livelli di un S.O ( struttura a cipolla di un S.O ) Escluso il livello 0, ogni livello realizza le quattro funzioni fondamentali di gestione della risorsa ; con possibilità di accesso a tuuti i livelli inferiori secondo il concetto di macchina virtuale. Autore Flavio Cerini 7

FUNZIONI DEI LIVELLI Nucleo o Kernel 1) Conoscere lo stato del del processore e dei programmi in attesa ; il programma che si occupa di ciò é il traffic controller 2) Decidere chi può utilizzare il processore ( job scheduler ) nel caso di multiprogrammazione ( process scheduler ) 3) Allocare la risorsa secondo indicazioni definite in precedenza 4) Rilasciare il processore secondo indicazioni definite in precedenza GESTIONE DELLA MEMORIA CENTRALE 1) Conoscere lo stato della memoria, quali parti sono in uso e quali sono libere 2) In caso di multiprogrammazione, decidere chi dovrà avere spazio in memoria centrale, quando e quanto 3) Allocare la memoria secondo i criteri stabiliti 4) Rilasciare ( deallocare ) la memoria quando non serve più GESTIONE DELL I/O 1) Conoscere lo stato delle periferiche ( I/O traffic controller ) 2) Decidere le modalità di assegnazione delle periferiche ai programmi ( I/O scheduler ) 3) Allocare la risorsa e dare inizio all operazione di I/O 4) Rilasciare la periferica GESTIONE DELLA MEMORIA DI MASSA 1) Conoscere lo stato dei dispositivi di memoria di massa, il loro uso, il modo di accesso ( file system ) 2) Decidere chi potrà utilizzare le utility secondo le caratteristiche specifiche del prodotto. 3) Allocare la funzione utility ( es lanciare software relativo ) 4) Rilasciare la risorsa ( es chiudere la funzione ) INTERPRETE COMANDI 1) Conoscere lo stato dei moduli di sistema esistenti e disponibili per le chiamate dell utente 2) Decidere le tecniche di chiamata delle funzionalità di sistema Autore Flavio Cerini 8

3) Esaudire la chiamata 4) Rilasciare la risorsa NB non ci sono necessariamente 6 livelli gerarchici. In tutti i sistemi operativi moderni resta pero valido il concetto dei livelli virtuali e le loro assegnazioni ESEMPIO DOS HARDWARE LIV 0 BIOS LIV 1 DOS LIV 2 Bios : parte bassa de nucleo ( il colloquio con HW avviene tramite INT software ) Dos rappresenta una sintesi dei livelli di astrazione superiori visti precedentemente ( schema generale ). Il modulo IBMBIO ( parte inferiore che completa il nucleo e arriva alla gestione dell I/O. IBMDOS costituisce fondamentalmente il file system Il livello command del DOS é l interprete comandio STATI DI UN PROCESSO Esistono concettualmente due stati per un processo : esecuzione e bloccato a questi si aggiunge uno stato di pronto per motivi di limitazione di risorse ( CPU ). Un processo transita durante la suia vita tra questi stati. E compito del sistema operativo ( nucleo o kernel ) gestire la transizione CICLO DI VITA DI UN PROCESSO Autore Flavio Cerini 9

Supponiamo di trovarci in un ambiente multiprogrammato. Quando il job viene mandato in esecuzione ( mandando in esecuzione il programma ), siamo nello stato di lancio Al termine dell esecuzione siamo nello stato di terminato ( vedi Fig. ) 2 PRONTO 1 ACQUISIZIONE 6 4 3 LANCIO ATTESA OPP BLOCCO 5 ESECUZIONE 7 TERMINATO 1) ACQUISIZIONE : vengono analizzate tutte le singole richieste del job. Ogni richiesta é messa nella coda di attesa relativa e il programma viene caricato in memoria centrale. A questo punto il job scheduler controlla le richieste del singolo job e quando sono tutte esaudite tranne la CPU avviene il passaggio nello stato di pronto ( transizione 2 ) ( il S.O crea un processo job più risorsa richiesta ) 2) PRONTO : Coda di richieste della CPU ( gestita da process scheduler ). E la più importante da gestire. Una delle tecniche più usate é quella che assegna un intervallo di tempo fisso, senza priorità. Se alla fine del tempo, non ha terminato il lavoro, il processo si mette in fondo alla coda in attesa del prossimo turno. 3) ESECUZIONE : Il processo che in un certo istante é in cima alla coda, passa nello stato di esecuzione e Lavora col processore secondo le modalità definite dal gestore del processore. A questo punto si possono verificare alcune eventualità. Autore Flavio Cerini 10

a) Il processo ha finito il suo lavoro col processore prima dello scadere dell intervallo di tempo a sua disposizione b) Il processo non ha terminato il suo lavoro allo scadere dell intervallo a sua disposizione. c) Il processo deve bloccare temporaneamente il lavoro col processore perché ha bisogno, per poter continuare, di eventi di tipo diverso ( es letture opp operazioni di I/O ) a) In questo caso il processo passa tramite la freccia ( 7 ) nello stato di terminato rilasciando tutte le risorse in suo possesso b) Il processo é costretto a rilasciare il processore, ne ha comunque ancora bisogno, quindi tramite la freccia ( 4 ) torna a mettersi in coda per l uso del processore c) Tramite la freccia ( 5 ) passa nello stato di attesa dove resta congelato finché il modulo ( I/O traffic controller ) non gli consente di riprendere il lavoro facendolo passare nello stato di pronto ( 6 ) Esistono tre code ( acquisizione, pronto, attesa ) e il processo cicla fra pronto,esecuzione attesa. PROCESSI E RISORSE Un Job che acquisisce la propria risorsa diventa un processo. Il numero di risorse è limitato, quindi é compito del S.O garantire l avanzamento di tutti i processi senza che si generino sovrappposizioni e ambiguità. PROCESSI SEQUENZIALI Tutti i job vengono eseguiti nello stesso ordine in cui si trovano nel programma originale. Le risorse vengono acquisite secondo l ordine di richiesta. Il tempo di esecuzione complessivo è pari alla somma dei tempi di esecuzione dei vari job. Vantaggi : - SEMPLICITA DELLA SOLUZIONE - LINEARITA Svantaggi: - LUNGHI TEMPI DI INATTIVITA PER LE RISORSE -ATTESE DEI SINGOLI JOB prima di acquisire la loro risorsa e diventare sottoprocessi ( vedi Fig 1 ) Autore Flavio Cerini 11

J1 J2 J3 J4 J1 W J2 J3 W J4 t Fig.1 W = wait Si supponga di poter scomporre un processo in più job ( es : Li, Ei, Si ) che eseguono rispettivamente una lettura, eseguono una elaborazione e scrivono i risultati su di un supporto di memorizzazione. ( vedi Fig 2 ) L1 E1 S1 L2 E2 S2 L3 E3 S3 Fig 2 ESEMPIO DI PROCESSO Si può prevedere una organizzazione in processi non sequenziali. Per esempio si può eseguire l elaborazione E2 prima di S1 ma non prima di L2. Si deve tener conto di un diagramma delle precedenze. ( vedi Fig 3 ) Autore Flavio Cerini 12

L1 L2 E1 L3 E2 S1 L4 E3 S2 S3 Fig.3 DIAGRAMMA DELLE PRECEDENZE I processi non sequenziali,ordinati secondo dei diagrammi di precedenza, allargano il concetto di esecuzione sequenziale. Nel senso che certe operazioni, legate a risorse distinte, possono essere eseguite contemporaneamente con un evidente risparmio di tempo di esecuzione totale. PROGRAMMAZIONE PARALLELA Una tecnica che prevede la realizzazione di processi non sequenziali, si chiama PROGRAMMAZIONE PARALLELA e si può definire attraverso i seguenti costrutti linguistici : COROUTINE FORK / JOIN COBEGIN / COEND COROUTINE : Assomiglia molto al salto a procedura. La differenza sta nel fatto che non c è l obbligo di ritorno dalla procedura chiamante alla chiamata. L istruzione RESUME consente il passaggio da una COROUTINE ad un altra. Quando si incontra una istruzione di RESUME il controllo passa alla COROUTINE indicata e la precedente si blocca. NB : tale costrutto non realizza una vera programmazione parallela INTERLEAVING ma un Autore Flavio Cerini 13

( avanzamernto alternato) tra più processi. Ci si illude di lavorare in parallelo. ( vedi Fig 4) Fig 4 COSTRUTTO COROUTINE COROUTINE PR1; COROUTINE PR2 ; COROUTINE PR3 ; RESUME PR2 ; RESUME PR3 ; RESUME PR2 ; END. RESUME PR1 ; END. END. FORK / JOIN : Questo costrutto realizza una vera esecuzione parallela dei processi ed é presente in diversi S.O ( es UNIX ). L istruzione FORK produce l attivazione del processo indicato in modo parallelo rispetto al processo chiamante ; l esecuzione torna ad essere sequenziale quando il processo chiamante presenta l istruzione JOIN. A questo punto se il processo chiamato è terminato, il processo chiamante continua il suo lavoro ; se non è terminato, il chiamante attende il termine del processo chiamato. ( vedi Fig.5) Fig. 5 COSTRUTTO FORK / JOIN PROCESS PR1 ; PROCESS PR2 ; FORK PR2 ; END. JOIN PR2 ; END. Autore Flavio Cerini 14

Una tipica applicazione del costrutto FORK / JOIN riguarda le operazioni che coinvolgono periferiche distinte ( vedi Fig 6). Si può pensare di dover leggere dei dati da un file su disco e di dover fare dei calcoli statistici su di essi e dover riportare tutto su stampante Si può pensare di effettuare la lettura dei dati ed eseguire parallelamente i calcoli e la stampa dei dati letti, successivamente si possono stampare i risultati. Fig. 6 PR_A Leggi da disco FORK B PR_A PR_B PR_A PR_B stampa dati Leggi dati Stampa dati calcola risultati disaggregati FORK B Calcola risultati JOIN B END PR_A stampa risultati JOIN B Stampa risultati COBEGIN / COEND Tale costrutto prevede l esecuzione parallela di singole istruzioni. La sintassi generale é la seguente : program PR ; Istruzione I0; cobegin I1;I2;...;In; coend Autore Flavio Cerini 15

end NB: E possibile indicare le singole istruzioni che devono essere eseguite in modo parallelo. In questo caso si parla di parallelizzazione di singole istruzioni all interno di un unico processo e non di esecuzione contemporanea di parti di processi distinti. Il problema maggiore a questo punto è la SINCRONIZZAZIONE. E fondamentale la gestione della programmazione concorrente CONCORRENZA Quando si parla di concorrenza, si fa riferimento a processi che si trovano a competere ( a concorrere ) per aggiudicarsi una stessa risorsa. Con il termine programmi concorrenti si intendono dei processi che richiedono la stessa risorsa nello stesso istante. A volte la risorsa può essere condivisa tra tutti i richiedenti, ma nella maggior parte dei casi il sistema deve utilizzare delle tecniche e degli strumenti ( fondamentalmente software ) per regolare le assegnazioni. I processi concorrenti si possono trovare in una di queste relazioni : a) COOPERAZIONE b) COMPETIZIONE c) INTERFERENZA a) COOPERAZIONE (vedi Fig 7) : due processi si dicono in cooperazione se tra di loro c è un legame logico ; caso classico : PRODUTTORE-CONSUMATORE. Un processo P produce dei dati che vengono inseriti in un area di buffer ( BUFF), un secondo processo C legge i dati dall area buffer e li elabora ottenendo dei risultati. Ovviamente il processo C deve leggere da BUF solo dopo che P ha inserito dei dati. Tale operazione può essere ciclica ma deve essere ripetuta nell ordine giusto altrimenti le operazioni non avvengono correttamente. Sequenza giusta : PCPCPCPC....Sequenza errata : PPCC... Fig. 7 Processi PRODUTTORE e CONSUMATORE Autore Flavio Cerini 16

Generazione dati Lettura da BUFFER Scrittura in BUFFER Operazioni sui dati PRODUTTORE CONSUMATORE b) COMPETIZIONE : Due processi in competizione sono indipendenti da un punto di vista logico, sono invece dipendenti avendo la necessità di appropriarsi di una risorsa comune (con molteplicità limitata ) I tempi di completamento del lavoro possono dipendere sensibilmente da tale competizione. Un esempio può essere quello della mutua esclusione nella quale l acquisizione di una risorsa é esclusiva di un processo con conseguente attesa di tutti gli altri processi richiedenti. c) INTERFERENZA : Questo caso rappresenta una degenerazione della COMPETIZIONE. Ci troviamo in tale situazione quando il risultato dei processi dipende dalla sequenza temporale di utilizzo di certe risorse del sistema da parte di tutti i processi che le richiedono. Si deve fare in modo che i processi si aggiudichino la risorsa solo in istanti precisi,e non la rilascino in momenti critici del loro lavoro. Nessun processo deve togliere una risorsa ad un altro processo in modo incontrollato ( pensare ad ad una operazione di stampa interrotta da un altra operazione di stampa). Se le risorse sono acquisite in modo disordinato, può capitare che i processi lavorino su dati elaborati da altri e quindi facendo eseguire il programma più volte, gli utenti ottengano risultati sempre diversi. Gli erori di questo tipo sono difficili da identificare perché il lavoro é sintatticamente corretto. NB : si devono sincronizzare tutte le operazioni sulle risorse a rischio. Autore Flavio Cerini 17

IL NUCLEO ( kernel ) Il nucleo é il livello più vicino alla macchina ( hardware ). Le sue funzioni sono fondamentali per il funzionamento complessivo del sistema. Le funzionalità del nucleo sono richieste principalmente nei seguenti stati : PRONTO, ATTESA, ESECUZIONE. FUNZIONI PRINCIPALI SVOLTE DAL NUCLEO Implementazione della sincronizzazione, tramite funzioni primitive, per consentire le transizioni di stato dei job e dei processi Scelta del processo destinato a passare dalla coda di PRONTO allo stato di ESECUZIONE in base alla strategia scelta dal gestore del processore. Gestione delle interruzioni con salvataggio e ripristino dello stato della macchina. Il JOB-SCHEDULER sceglie il job che deve acquisire il processore tra quelli presenti nella coda di PRONTO : viene recuperato il valore del puntatore al processo in modo da identificarne l indirizzo reale. Il PROCESS-SCHEDULER applica la strategia di allocazione. La tecnica più semplice è quella FIFO ( rispetta l ordine di arrivo delle richieste ). INTERRUZIONI LEGATE AL SISTEMA OPERATIVO 1) I/O INTERRUPT : comando di I/O errato,canale o dispositivo non correttamente connesso 2) PROGRAM INTERRUPT: istruzione errata di CPU, overflow,violazione delle aree di memoria protette 3) SUPERVISOR CALL INTERRUPT : chiamata asincrona da un modulo supervisore di priorità superiore 4) EXTERNAL INTERRUPT : fine del tempo a disposizione, tasto di interruzione da da operatore ; 5) HARDWARE INTERRUPT : interruzione causata da guasto hardware I SEMAFORI Autore Flavio Cerini 18

Quando ci sono problemi di competizione, servono dei meccanismi di sincronizzazione. Non ci sarebbe nessun problema se ogni processo tenesse una risorsa per tutta la durata del lavoro, ma non sarebbe conveniente. La competizione, può essere relativa a certe zone di programma che vanno preservate da interruzioni indesiderate. Tali zone di programma vengono chiamate : ZONE CRITICHE ( esempi di zone critiche : non si può interrompere una operazione di stampa per eseguirne un altra ; non si può leggere un file mentre si sta modificando il suo contenuto ; oppure la scrittura in un area buffer prima che sia terminata la lettura del blocco di dati scritto nel buffer precedentemente. La tecnica principale per gestire una zona critica é basata sul principio del SEMAFORO. IL SEMAFORO :utilizza due procedure elementari ( primitive di sincronizzazione vedi Fig 8 ) Tali procedure utilizzano una variabile S il cui valore viene sempre controllato prima di accedere alla risorsa critica ( risorsa il cui uso può generare delle zone critiche). Se la variabile - semaforo ha il valore giusto, la risorsa può essere allocata e il processo può proseguire, in caso contrario, il processo si porrà in stato di attesa Fig. 8 Le primitive di semaforo P(S) V(S) False S = 1 True S : = 1 S: = 0 Autore Flavio Cerini 19

Il semaforo é rappresentato dalla variabile binaria S che negli schemi funge da parametro per le due procedure P(S) e V(S). Se la variabile S = 0 la risorsa critica é occupata e si deve attendere che venga rilasciata. Se S= 1 la risorsa può essere allocata. La procedura P(S) viene richiamata dal processo che richiede una risorsa, se S= 1 la risorsa é libera e viene allocata al processo richiedente e il semaforo viene impostato al valore 0. Se S = 0, la procedura ripete il controllo finché non trova il valore 1. La procedura V(S) viene richiamata da un processo che vuole rilasciare una risorsa in suo possesso. La Procedura pone S = 1 ed incarica il SO del rilascio della risorsa PRODUTTORE CONSUMATORE Si può risolvere con utilizzo di due semafori S1 e S2 ( vedi Fig 9 ) Si deve fare attenzione, oltre all accesso esclusivo alla risorsa, si deve anche fare in modo che non si legga dal buffer prima di aver terminato la scrittura. Si può considerare un semaforo S1 che controlla l accesso in scrittura e un semaforo S2 che controlla l accesso in lettura. Fig. 9 Scrittura - Lettura in un buffer Inizializzazione : S1: = 1 ; S2 : = 0 PRODUTTORE CONSUMATORE GENERAZIONE DATI P(S2) P(S1) SCRITTURA NEL BUFFER LETTURA DAL BUFFER V(S1) V(S2) OPERAZIONI SUI DATI Autore Flavio Cerini 20

L inizializzazione permette al processo produttore di accedere al buffer ( S1=1) e preclude la lettura (S2=0). Il processo produttore lavora, generando dei dati, S1 diventa 0 con l esecuzione di P(S1) alla fine si apre la possibilità di lettura bloccando la scrittura. Il processo Consumatore, ottenuto il permesso di accesso, legge dal buffer e, prima di iniziare la elaborazione dei dati acquisiti, libera l accesso in scrittura ( con procedura V(S1) ), in tal modo si risparmia tempo poichè mentre si fa elaborazione dati ne possono essere inseriti altri nel buffer SEMAFORO GENERALIZZATO Se il sistema deve gestire una risorsa che é oggetto di contesa, si può ricorrere alla tecnica del semaforo generalizzato. La variabile semaforo non é più binaria ma é un semplice contatore delle unità disponibili della risorsa. Se il valore della variabile é 0 nessuna unità della risorsa é disponibile, altrimenti é possibile effettuare un allocazione. Il numero massimo che può assumere la variabile semaforo coincide con il numero di unità presenti nel sistema. Nel caso di un produttore-consumatore con tre buffer, i due semafori hanno valore massimo tre. ( vedi Fig 10 ). Nel caso di quattro stampanti che consentono il lavoro di otto persone in multiutenza ; un semaforo generalizzato impostato al valore 4 regola l accesso ai dispositivi. Si utilizzano ancora le procedure P(S) e V(S) ( vedi Fig 11 ). La procedura P(S) contiene un test che controlla il valore del contatore ; se S > 0 ci sono ancora unità libere. L allocazione comporta un decremento del numero di unità disponibili. La procedura V(S), relativa al rilascio della risorsa, contiene l incremento del numero di unità disponibili. Le procedure P(S) e V(S) sono le operazioni di base per la gestione dei meccanismi di sincronizzazione degli accessi. Fig. 10 Semafori generalizzati P(S) V(S) False S >0 True S : = S + 1 S : = S - 1 Autore Flavio Cerini 21

PRINCIPI DI PROGRAMMAZIONE CONCORRENTE DEFINIZIONE DI STALLO ( nel gioco degli scacchi : nessuno dei giocatori da scacco matto ) : Un sistema di elaborazione si dice in condizione di STALLO se nessuno dei processi in corso riesce a portare a termine il suo lavoro. Supponiamo di avere due processi P1 e P2 ( vedi Fig 12 ). che lavorano rispettivamente con le risorse RISORSA_1 e RISORSA_2.Ad un certo istante il processo P1 ha bisogno di dati prodotti dalla RISORSA_2 e si mette in stato di attesa. Contemporaneamente il processo P2 necessita della RISORSA_1 e aspettando che si liberi si mette in stato di attesa. I due processi sono in attesa a tempo indeterminato. Fig 12 Processi in stato di stallo PROCESSO P1 RISORSA R1 RISORSA R2 PROCESSO P2 Le frecce che vanno dalla risorsa al processo indicano che la risorsa é assegnata al processo, mentre le frecce che vanno dal processo alla risorsa indicano che la risorsa é stata richiesta dal processo. Questo modo di rappresentare la relazione tra processi e risorse si chiama GRAFO DI ALLOCAZIONE delle risorse. Autore Flavio Cerini 22

IL PROBLEMA DELLO STALLO ( DEADLOCK ) Un problema fondamentale che deve affrontare un sistema operativo é quello relativo al controllo delle zone critiche ( contengono delle azioni indivisibili e le risorse richieste vengono rilasciate solo a fine esecuzione ). In questa situazione insorgere uno stato di DEADLOCK. Lo stato di deadlock si può presentare anche nel caso di superamento della molteplicità di una risorsa ( semaforo generalizzato ), cioé il numero massimo di processi che possono lavorare contemporaneamente con la risorsa stessa oppure il numero di esemplari presenti di una risorsa che non può essere condivisa. SITUAZIONI NELLE QUALI SI PUO GENERARE UN DEADLOCK Mutua esclusione ( nelle zone critiche le risorse vengono rilasciate solo a fine lavoro ) Superamento della molteplicità di una risorsa Allocazione parziale : il processo non impegna, all inizio del blocco critico, tutte le risorse di cui avrà bisogno ma le richiederà via via che serviranno Negazione del prerilascio forzato : il sistema non é abilitato a sottrarre forzatamente la risorsa al processo per evitare uno stallo Attesa circolare : esiste una lista di processi ognuno dei quali é in attesa di acquisire una risorsa che é in possesso del seguente. Il risultato é un deadlock del sistema. GESTIONE DEL PROBLEMA DELLO STALLO PREVENZIONE : Il sistema deve capire quando esistono le condizioni per la nascita di un deadlock. In effetti un eccessivo controllo produce un rallentamento del sistema forse non giustificato considerato che il DEADLOCK si verifica molto raramente. Autore Flavio Cerini 23

RICONOSCIMENTO : Il sistema deve riconoscere quando il sistema di elaborazione si trova in una situazione di stallo. Una volta effettuata la rilevazione si deve effettuare un recupero ( recovery ) dello stato del sistema subito prima dello stallo. Il riconoscimento e il recovery sono operazioni molto complesse PREVENZIONE : la prevenzione propone le seguenti tecniche : a) Allocazione globale delle risorse b) Allocazione gerarchica c) Algoritmo del banchiere a) Le risorse necessarie ad un processo gli vengono assegnate tutte insieme solo quando sono tutte libere ; in mancanza di tale situazione il sistema resta in attesa. In questo modo però qualche processo che ha urgenza di una risorsa può restare in attesa molto a lungo e si possono avere anche rallentamenti notevoli nell esecuzione di un processo. b) Si considera un ordine gerarchico delle risorse. Se un processo possiede una risorsa di un certo livello, può acquisire solo risorse di livello superiore. se deve acquisire una risorsa a livello inferiore, deve prima rilasciare quella che possiede e richiederla successivamente. c) Questo algoritmo consiste nello scegliere un allocazione che consente ad almeno un processo di poter lavorare e concludere. LA GESTIONE DELLA MEMORIA AMBIENTE MONOPROGRAMMATO ( monoprogrammazione ) In ambiente monoprogrammato é possibile far girare un solo programma per volta. Tutte le risorse sono dedicate all unico programma residente in memoria. Non esiste il problema della concorrenza e il S.O risulta abbastanza semplice. Abbastanza semplice risulta anche la gestione della memoria centrale. La memoria centrale é divisa in non più di tre aree : a) Area contenente i moduli software del S.O b) Area contenente il programma utente da eseguire c) Area differenza fra Area totale a disposizione dell utente e Area occupata dal programma caricato. Tale Area resta vuota e non utilizzabile. ALLOCAZIONE SINGOLA CONTIGUA ( vedi Fig. 13 ) Autore Flavio Cerini 24