Processi programma processo processo Stati di un processo Attesa di caricamento new Pronto ( ready ) Esecuzione running Waiting ( in Attesa )

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Processi programma processo processo Stati di un processo Attesa di caricamento new Pronto ( ready ) Esecuzione running Waiting ( in Attesa )"

Transcript

1 Processi Un processo è l insieme delle azioni compiute dal processore per eseguire un programma. Si può semplificare dicendo che "un processo è un programma in esecuzione". Per meglio definire un processo analizziamone la differenza con il programma. Un programma è costituito dalle istruzioni scritte dal programmatore e tradotte in linguaggio macchina e viene visto come un insieme di bit presenti sul disco rigido che non cambia nel tempo e non modifica lo stato della macchina. Un processo invece modifica lo stato della memoria e dei registri. In generale potremo dire che: Un processo è un entità dinamica il cui stato è determinato dai valori assunti dal registro Program Counter, dai registri generali, dallo stato della memoria, dallo stack e dall SR; Un processo ha una traccia d esecuzione, che può essere definita come la sequenza degli stati assunti dal processore durante l avanzamento dei processi. Ad un processo sono associati il codice, l area dati, i registri e le altre risorse ad esso assegnate. Stati di un processo Un processo, dopo la sua creazione ed attivazione, può trovarsi in diversi stati di avanzamento: Attesa di caricamento ( new ) è stata richiesta l esecuzione del programma memorizzato su disco e attende di essere caricato in memoria centrale; vi possono essere più processi in attesa di caricamento. Pronto ( ready ) il processo è in memoria centrale ed attende che gli venga assegnata la CPU; vi possono essere più processi in stato di pronto. Esecuzione ( running ) la CPU esegue il processo; vi è un solo processo in esecuzione Waiting ( in Attesa ) il processo ha richiesto una operazione di I/O e ne attende il completamento; più processi in attesa; spesso le operazioni di I/O vengono eseguite dai processori di I/O in parallelismo effettivo con la CPU Terminazione ( terminated ) il processo ha terminato l esecuzione può rilasciare le risorse utilizzate. Descrittore del processo Ogni processo ha associato un proprio descrittore di processo ( o PCB. Process Control Block) che viene creato in fase di "creazione" del processo e mantenuto in memoria centrale, in un area riservata al sistema operativo, per tutta la durata del processo. Tale descrittore contiene: PID ( Process Identification), un numero progressivo che identifica il processo, assegnato dal SO al momento della creazione del processo; PPID ( Parent Process Identification ) cioè il PID del processo padre cioè il processo che l ha generato;

2 puntatore alla lista dei processi figli ; stato del processo ; priorità; limiti della memoria centrale utilizzata; puntatore alla lista delle risorse in uso; copia del contesto del processo ( PC, IR, MAR, MDR, registri generali, ). Quando un processo rilascia la CPU nel suo PCB viene salvato il contesto. Quando a un processo viene assegnata la CPU la copia dei registri contenuta nel suo PCB viene copiata nei registri fisici della CPU. Ciò consente al processo di riprendere l esecuzione dal punto in cui era stata sospesa, dall istruzione puntata dal PC al momento della sospensione. Per Creare un processo occorre assegnare un area di memoria centrale, copiare il programma in tale area, creare il suo PCB, porre il processo in stato di "pronto". Per Terminare un processo occorre liberare la memoria centrale allocata, rilasciare tutte le risorse da esso utilizzate, aggiornare il PCB del processo che l ha creato. Thread Come abbiamo visto un processo è generato da un programma in esecuzione. Un programma eseguito su un processore può dare origine a più processi. Ogni processo è descritto da un PCB ( Process Control Block ) che viene generato in fase di "creazione" del processo e mantenuto in memoria centrale. I programmi tradizionali sono pensati per essere eseguiti in sequenza. Un thread ( o processo leggero ) è una sequenza di istruzioni di un programma in esecuzione, cioè il flusso di esecuzione di un processo viene scomposto in più flussi concorrenti. Per esemplificare un theread è una parte di programma che può eseguire operazioni in modo autonomo rispetto al resto. Esempi di thread sono: - Correttore ortografico di word che esegue il controllo contemporaneamente alla nostra scrittura; - Un client FTP che scarica più file contemporamneamente; - I giocatori di un gioco 3D che combattono con noi. Il thread designa un percorso di esecuzione parallela ( execution path ) ed è la minima unità di esecuzione che un S.O. può gestire in modo indipendente. Ogni thread condivide con altri thread :

3 il codice eseguibile area dei dati globali area di memoria allocata dinamicamente tabella dei descrittori dei file Ogni thread ha non condivide con altri thread : dati propri stack ( variabili locali ) il contenuto del Program counter il set di registri Questi ultimi indispensabili per permettere una execution path indipendente per ogni thread. Con i thread si ottiene un miglioramento delle prestazioni complessive del sistema, ma esso deve avere più di una CPU o come nei sistemi moderni CPU multicore. Bisogna fare attenzione a parallelizzare l esecuzione, infatti se la mole dei dati da elaborare non è grande, vi è il concreto rischio che il tempo necessario al S.O. per creare e sincronizzare thread sia superiore a quello necessario all elaborazione sequenziali dei dati. Elaborazione sequenziale e concorrente Con elaborazione sequenziale si intende l esecuzione di un programma in cui le azioni eseguite sono totalemente ordinate. Con programmazione concorrente si indicano tecniche e strumenti impiegati per descrivere attività o processi che si intendono eseguire parallelamente in un sistema di calcolo ( processi paralleli ). Il parallelismo vero si ha soltanto nel caso di sistemei multipocessore o multicore. Nei sistemi monoprocessore il parallelismo è solo virtuale e il loro avanzamento parallelo dipende dal tempo che gli viene assegnato dalle politiche di schedulazione del S.O. Due processi si dicono concorrenti se la prima operazione di uno di essi ha inizio prima del completamento dell ultima operazione dell altro. La concorrenza Come abbiamo già detto l elaborazione non sequenziale o elaborazione parallela o concorrente si può ottenere in due modi Con elaboratori dotati di più CPU o multicore Con sistemi con un'unica CPU in multiprogrammazione Per poter codificare programmi non sequenziali è necessari avere linguaggi non sequenziali dotati cioè di particolari istruzioni adatte a trattare la programmazione parallela. Un programma concorrente si basa sulla scomposizione sequenziale, cioè il programmatore deve individuare le attività parallelizzabili e descriverle in termini di sequenze di istruzioni di un linguaggio concorrente. L istruzione fork è una istruzione concorrente che serve a generare un processo ( figlio ) che viene eseguito in parallelo al processo che lo ha generato ( processo padre ). L istruzione join viene eseguita quando il processo figlio è terminato e si sincronizza con il processo padre.

4 L istruzione cobegin e coend sono istruzioni che permettono di indicare il punto in cui N thread iniziano e finiscono contemporaneamente l esecuzione. Risorse e condivisione Una risorsa, sia essa hardware ( memoria, disco, cpu, ) o software ( file, PCB, ), è una qualche cosa necessaria al processo per avanzare verso lo stato di terminato. Una risorsa può essere assegnata: in modo statico per tutta la durata del processo; in modo dinamico viene assegnata, usata e rilasciata dopo l utilizzo da parte del processo; una risorsa è detta prerilasciabile se il S.O. può costringere il processo a rilasciarla. La CPU è un esempio di questo tipo di risorsa. Il nucleo (o Kernel) del sistema operativo si occupa, della gestione della CPU, scheduling della CPU e dell avanzamento dei processi. La gestione delle altre risorse è effettuata da appositi gestori delle risorse quali il gestore della memoria centrale, il gestore delle periferiche, e il gestore delle informazioni (o File System). Due processi si dicono disgiunti se sono completamente indipendenti l uno dall altro, interagenti se accedono a risorse comuni. L interazione fra processi può essere : cooperazione (diretta) due processi per avanzare si scambiano messaggi; competizione (indiretta) due processi competono per l accesso ad una stessa risorsa.

5 Comunicazione fra processi Sappiamo che due processi possono interagire in cooperazione o concorrenza per utilizzare delle risorse che gli consentiranno di avanzare dallo stato di new a quello di terminated. A prescindere dall hardware vi sono due modi per realizzare l interazione modello a memoria comune ( utilizza l ambiente globale ) modello a scambio di messaggi ( utilizza l ambiente locale ) Il primo utilizzato in ambienti hardware in cui esiste un unica memoria, il secondo in ambienti di calcolo distribuito. Nel modello a memoria comune vi possono essere problemi per l accesso alla memoria da parte di due o più processi che ne potrebbero richiederne contemporaneamente l attribuzione. Mutua esclusione In genere una risorsa riusabile e non prerilasciabile può essere assegnata ad un solo processo per volta, in mutua esclusione cioè se un processo P ha la risorsa R, nessun altro può utilizzarla finché P non la rilascia, garantendo un tempo di attesa finito ed evitando situazioni di stallo ( o deadlock ). La mutua esclusione va garantita, pena il verificarsi di errori non controllabili. Stallo ( deadlock ) Lo stallo si ha quando due o più processi che posseggono risorse e, per avanzare necessitano di ulteriori risorse possedute da altri processi che non le possono rilasciare. L avere più programmi che competono per l uso delle risorse può causare situazioni di stallo (deadlock), situazioni nelle quali i processi non possono più avanzare. Le condizioni per le quali si può verificare lo stallo sono: necessità di garantire la mutua esclusione; attesa di risorse aggiuntive ( i processi richiedono le risorse una alla volta e non tutte insieme ); non prerilascio delle risorse ottenute; verificarsi di una situazione di "attesa circolare". Ad esempio il processo P1 ha in uso la risorsa R1che rilascerà solo dopo aver ottenuto la risorsar2; P2 ha in uso R2 che rilascerà solo dopo aver ottenuto R1: STALLO! Per ovviare allo stallo ci sono alcune diverse tecniche: la prevenzione dello stallo ( deadlock prevention ) consiste nell invalidare una o più condizioni di stallo (ad esempio si obbligano i processi a chiedere le risorse tutte insieme); in genere si previene l attesa circolare con l allocazione gerarchica delle risorse. la Fuga dallo stallo ( deadlock avoidance ) permette di rifiutare la richiesta di risorsa che causa (o potrebbe causare ) stallo; il Riconoscimento e recupero dello stallo ( deadlock detection and recovery ) non previene lo stallo, ma riconosce quando esso avviene (ad esempio esaminando

6 periodicamente il grafo di allocazione delle risorse ) e lo elimina ( ad esempio forzando uno dei processi a terminare ). Competizione tra processi ( interazione indiretta ) Primitive Lock e UnLock ( attesa attiva ) Per garantire la mutua esclusione ad una risorsa si associa un semaforo binario ( un bit ) che può valere 1 "semaforo verde", cioè risorsa libera 0 "semaforo rosso", risorsa occupata. La richiesta della risorsa viene fatta con la primitiva Lock che verifica il semaforo: se il semaforo è a 0 lo pone a 1 ed assegna la risorsa al processo, altrimenti resta in attesa che il semaforo diventi 0 ( verificandolo ad intervalli regolari ). Questo meccanismo, che prevede il test ripetuto del semaforo ( attesa attiva ) garantisce la mutua esclusione. Le primitive disable() e enable() servono rispettivamente a mascherare ( disabilitare ) e abilitare le interruzioni ( flag IF della PSW ) per evitare che il flusso dell esecuzione delle istruzioni delle primitive Lock() e Unlock() venga interrotto provocando così conseguenze imprevedibili. Nel processo P che utilizza la risorsa R a cui è associato il semaforo s avremo : Lock ( s ); // questa è la porzione di codice in cui viene usata la risorsa R // a cui è associato il semaforo s ( detta sezione critica ) UnLock ( s ); Cioè la lock() dovrà precedere la sezone critica alla fine della quale dovremo inserire la chiamata alla funzione unlock() che provvererà al rilascio della risorsa cioè a mettere a verde il semaforo. Questo sistema ha due gravi inconvenienti: 1. attesa attiva : la Lock() impegna inutilmente il processore a scapito di altri processi; 2. rinvio indefinito: un processo può attendere indefinitamente il semaforo verde anche se questo evento si è verificato infinite volte. Infatti se il semaforo diventa verde prima che venga riesaminato ed un altro processo chiede la risorsa, la ottiene, rimettendo il semaforo a rosso; quando si va a testare il semaforo lo si trova ancora rosso, ma nel frattempo la risorsa è stata data ad un alto processo; in teoria questo potrebbe verificarsi per un tempo indefinito. Le funzioni primitive P() e V() ( attesa passiva ) Con questo meccanismo a ciasuna risorsa viene associata semaforo s Q(s) una coda destinata a contenere i PID dei processi che l hanno richiesta.

7 La richiesta della risorsa viene fatta con la primitiva P() che testa il semaforo: se il semaforo è a 1 ( verde ) lo pone a 0 ( rosso ) ed assegna la risorsa al processo, altrimenti pone il PID del processo nella coda di attesa e pone in attesat il processo. Il rilascio della risorsa viene fatto con la primitiva V() che controlla se la coda di attesa è vuota: se si pone il semaforo a verde, altrimenti lo lascia a rosso ed assegna la risorsa al primo processo della coda. Questo meccanismo di attesa passiva garantisce sia la mutua esclusione che l attesa finita. Le primitive P() e V() sono conosciute anche come wait () e signal (). Cooperazione tra processi ( interazione diretta ) Nel modello ad ambiente locale un processo può accedere solo alla sua memoria ed essa non può essere modificata da altri processi. Non avendo memoria in comune l unico strumento di comunicazione e sincronizzazione fra i processi è lo scambio di messaggi. In questo modello ogni processo può accedere esclusivamente alle risorse allocate nella propria memoria locale e ogni risorsa del sistema è accessibile a un solo processo ( server ) che può operare su di essa, eseguire le operazioni richieste dai processi applicativi ( processi client ) che ne hanno bisogno. Client e server comunicano tramite lo scambio di messaggi. Client e server comunicano tramite un mezzo trasmissivo che da un punto di vista logico viene detto canale. Le principali caratterisstiche del canale sono : monodirezionale o bidirezionale comunicazione sincrona o asincrona Nella comunicazione asincrona il mittente dopo l invio del messaggio procede nell esecuzione senza attendere una risposta. Nella comunicazione sincrona mittente e destinatario sevono essere ambedue pronti a trasmettere / ricevere il messaggio cioè vi deve essere un randez-vous ( incontro ) fra i due. Il randez-vous può essere : randez-vous semplice Il mittente invia un messaggio e si sospende in attesa che il destinatario si a pronto ad eseguire l operazione richiesta randez-vous esteso Il destinatario una volta ricevuto il messaggio deve rispondere al mittente e quindi il mittente ricevuta la conferma, rimane in attesa che il destinatario esegua l operazione richiesta Per la comunicazione asincrona esistono delle funzioni primitive che sono send() e receive() ma prima di utilizzarle va definito il canale con l istruzione port <tipo> <identificatore>; ad esempio port int canale1; Per trasmettere send (<messaggio>) to <port>; ad esempio send ( 777 ) to canale1 Per ricevere

8 receive (<variabile>) from <port> ad esempio receive ( dato ) from canale1 Il problema del produttore-consumatore Il problema del produttore-consumatore è un esempio di sincronizzazione tra processi. Il problema descrive due processi, uno produttore ed uno consumatore, che condividono un buffer comune, di dimensione fissata. Compito del produttore è generare dati e depositarli nel buffer in continuo. Contemporaneamente, il consumatore utilizzerà i dati prodotti, rimuovendoli di volta in volta dal buffer. Il problema è assicurare che il produttore non depositi nuovi dati se il buffer è pieno, e che il consumatore prenda dati se il buffer è vuoto. Sincronizzare vuol dire che la "produzione" di un messaggio da parte del processo trasmittente deve avere sempre lo stesso tempo del "consumo" da parte del processo ricevente. La sincronizzazione viene fatta tramite : La funzione P ( semaforo ) che mette a rosso semaforo La funzione V ( semaforo ) che mette a verde semaforo Il semaforo prelevato inizializzato a verde, utilizzato dal consumatore per segnalare lo svuotamento del buffer; Il semaforo depositato inizializzato a rosso, utilizzato dal produttore per segnalare la presenza nel buffer di nuovi dati. Il produttore, dopo aver depositato un dato nel buffer, non può scrivere nel buffer sino a quando il consumatore non ha prelevato il dato e, analogamente, il consumatore non può usare più volte il dato inserito nel buffer. Per queste ragioni l accesso al buffer avviene in mutua esclusione.

9 Esercitazioni Per poter lavorare con i thread con il Wxdev C++ dovremo installare la libreria Pthreads ( POSIX Threads ) costituita da 60 funzioni suddivise in tre classi : Funzioni per gestire thread ( creare, distruggere, aspettare un thread ) Funzioni per la gestione della mutua esclusione ( Mutex ) : init, destroy, lock, unlock,... Condition variable: costrutti e funzioni per la comunicazione tra thread che condividono un mutex per aspettare o segnalare il verificarsi di eventi: init, destroy, wait, timed wait,... Pthreads: convenzioni Nomi tipi: pthread_object_t Nomi funzioni: pthread_object_action Costanti/Macro: PTHREAD_PURPOSE Se le funzioni portano ha termine con successo il proprio compito generalmente ritornano il valore 0, 1 in caso contrario. Pthreads: installazione Se in Strumenti Package Manager del Wxdev C++ è presente l icona : vuol dire che la libreria dei thread è installata per cui le istruzioni che seguono sono inutili. Scarica da La libreria per la gestione dei thread pacchettizzata per WxDev C++. Se hai installato WxDev C++ fai direttamente Aprilo con.. come mostrato in figura Viene così richiamato direttamente il Package Manager del WxDev C++

10 Per verificare la corretta installazione in WxDev C++ Strumenti - Package Manager E viene visualizzata la finestra seguente : Controllare la presenza di Pthreads-w32. Dopo aver installato la libreria Creare un nuovo progetto in Dev C++

11 Scegliere dal menù Progetto Opzioni del Progetto Opzioni addizionali riga comando Aggiungi libreria selezionare C:/Program Files (x86)/dev-cpp/lib/libpthreadgc2.a OK NOTA Verificare in quale cartellla sono stati inseriti i tre Header: pthread.h sched.h semaphore.h ed eventualmente aggiungerne in Strumenti Opzioni di compilazione Cartelle Include C++ il path. Ora siamo pronti per la compilazione del progetto Identificatore di un thread Come un processo, anche un thread ha un proprio ID ( tid ), ma a differenza del pid, il tid ha senso solo all interno del processo a cui il thread appartiene. pthread_t pthread_self ( void ); // per conoscere il proprio tid pthread_t pthread_equal ( pthread_t tid1, pthread_t tid2 ); // per confrontare due tid Creazione di un thread int pthread_create ( pthread_t *tid, pthread_attr_t *attr, void *(*funzione)(void *), void *arg ); // per creare un thread I parametri sono: tid : il tid del thread creato attr: per impostare gli attributi del thread ( NULL di default ) funzione: funzione eseguita dal thread creato arg: argomento di ingresso per funzione Una volta creato, un thread può creare altri thread; non c è gerarchia o dipendenza implicita tra thread. Esempio: #include <pthread.h> #include <iostream> #include <windows.h> using namespace std; void * thread1( void *arg ) { // primo thread int i; cout << "x"; Sleep ( 500 ); // ritardo per rallentare l'esecuzione cout << "y"; Sleep ( 500 ); cout << "z"; Sleep ( 500 ); return NULL;

12 void * thread2( void *arg ) { // secondo thread int i; cout << "a"; Sleep ( 500 ); cout << "b"; Sleep ( 500 ); cout << "c"; Sleep ( 500 ); return NULL; int main ( void ) { // programma principale che richiama i due thread pthread_t tid1; pthread_t tid2; while(1) // ciclo infinito che esegue in continuazione i due thread { pthread_create ( &tid1, NULL, &thread1, NULL ); // creazione del primo thread pthread_create ( &tid2, NULL, &thread2, NULL ); // creazione del secondo thread pthread_join ( tid1, NULL ); // attende il termine del 1^ thread pthread_join ( tid2, NULL ); // attende il termine del 2^ thread cout << "\n"; return 0; Terminazione di un thread Un thread può terminare perché: L intero processo viene terminato con una chiamata alle funzioni exit() o exec() Il thread termina l esecuzione della sua routine Il thread chiama pthread_exit() La funzione int pthread_exit( void * rval_ptr ); viene usata per terminare thread e non causa la chiusura di file aperti dal thread che la chiama. Un thread può esser cancellato da un altro thread tramite pthread_cancel(). Sincronizzazione dei processi mediante semafori Come abbiamo già visto per evitare che due processi usino la stessa risorsa contemporaneamente è necessario implementare il meccanismo della mutua esclusione attraverso l utilizzo : di un semaforo ( variabile binaria ) associato alla risorsa delle due funzioni lock() e unlock() ( meglio la P()e la V() ) le cui chiamate vengono inserite rispettivamente prima e dopo la sezione critica ( frazione di codice in cui viene utilizzata la risorsa a cui è assiciato il semaforo ) del codice. In sostanza dobbiamo fare in modo che le due sezioni critiche dei due processi non vengano eseguite contemporaneamente. Nella libreria pthread il semaforo è detto mutex e che naturalmente presenta due stati: aperto o verde o 1 ( unlocked ) o chiuso o rosso o 0 ( locked ) E evidente che solo un thread alla volta può possedere il mutex cioè ottiene il lock. Per definire un mutex utilizzeremo: pthread_mutex_t nomesemaforo = PTHREAD_MUTEX_INITIALIZER;

13 Per bloccare la sezione critica del processo che usa la risorsa a cui è associato il mutex, cioè la funzione che abbiamo chiamato P() dovremo usare: int pthread_mutex_lock ( pthread_mutex_t * nomesemaforo ); int pthread_mutex_trylock ( pthread_mutex_t * nomesemaforo ); La prima è bloccante la seconda no ( utile per evitare lo stallo ) Il parametro della funzione è il puntatore al mutex da bloccare Il valore di ritorno è un intero che se uguale a 0 indica il successo. La trylock() restituisce EBUSY se il mutex è occupato. Per mettere a verde il mutex utilizzeremo int pthread_mutex_unlock ( pthread_mutex_t * nomesemaforo ); int pthread_mutex_destroy ( pthread_mutex_t * nomesemaforo ); La prima funzione sbolocca il mutex soltanto, la seconda lo distrugge. Il parametro della funzione è il puntatore al mutex da sbloccare / distruggere Il valore di ritorno è un intero che se uguale a 0 indica il successo. Esempio Prendiamo in considerazione l esempio precedente l output si presentava così: xabyzc xaybzc cioè l output del 1^ thread si mescolava con quello del secondo. L uso di un semaforo ( mutex ) associato alla risorsa monitor, come mostrato di seguito, elimina l inconveniente.. pthread_mutex_t monitor =PTHREAD_MUTEX_INITIALIZER; // definisco semaforo di nome monitor void * thread1( void *arg ) { // primo thread int i; pthread_mutex_lock ( &monitor ); // semaforo occupato quindi risorsa ad uso esclusivo del thread cout << "x"; cout << "y"; cout << "z"; Sleep ( 500 ); pthread_mutex_unlock ( &monitor ); // semaforo libero return NULL; void * thread2( void *arg ) { // secondo thread int i; pthread_mutex_lock ( &monitor ); // semaforo occupato quindi risorsa ad uso esclusivo del thread cout << "a"; cout << "b"; cout << "c"; Sleep ( 500 ); pthread_mutex_unlock ( &monitor ); // semaforo libero return NULL;

14 Esempio del problema del produttore consumatore #include <pthread.h> #include <iostream> #include <windows.h> using namespace std; int m; pthread_mutex_t prelevato, depositato; // variabile condivisa // dichiaro semafori void *produttore ( void * ) { int conta = 0; while ( conta < 10 ) { pthread_mutex_lock( &prelevato ); // P(prelevato) m = ++conta; // produci un numero progressivo cout << "Prodotto " << m << '\n'; pthread_mutex_unlock(&depositato); // V(depositato) per il consumatore pthread_exit(0); void *consumatore ( void *) { int conta = 0; while ( conta < 10 ) { pthread_mutex_lock( &depositato ); conta = m; cout << "Consumato: " << conta << '\n'; pthread_mutex_unlock( &prelevato ); pthread_exit(0); // P(depositato) aspetta il dato // consuma il numero progressivo // V(prelevato) per il produttore int main() { pthread_t produci, consuma; //dichiaro le variabili relative ai thread pthread_mutex_init ( &prelevato, NULL ); // semaforo prelevato a verde pthread_mutex_init ( &depositato, 0 ); // semaforo depositato a rosso pthread_create ( &produci, NULL, produttore, NULL ); // creo il produttore pthread_create ( &consuma, NULL, consumatore,null ); // creo il consumatore pthread_join ( produci, NULL ); pthread_join ( consuma, NULL ); pthread_mutex_destroy ( &prelevato ); pthread_mutex_destroy ( &depositato ); system ( "PAUSE"); return 0; // attesa del termine dei figli // distruzione dei semafori

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

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) I processi Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto

Dettagli

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di

Dettagli

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

Dettagli

Il descrittore di processo (PCB)

Il descrittore di processo (PCB) Il descrittore di processo (PC) Il S.O. gestisce i processi associando a ciascuno di essi un struttura dati di tipo record detta descrittore di processo o Process Control lock (PC) Il PC contiene tutte

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

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

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

I THREAD O PROCESSI LEGGERI Generalità

I THREAD O PROCESSI LEGGERI Generalità I THREAD O PROCESSI LEGGERI Generalità Thread: segmento di codice (funzione) Ogni processo ha un proprio SPAZIO DI INDIRIZZAMENTO (area di memoria) Tutti i thread genereti dallo stesso processo condividono

Dettagli

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria October 10, 2009 Sincronizzazione - 1 1 Esercizio 1: Sincronizzazione - 1 Qual è il problema

Dettagli

Monitor. Introduzione. Struttura di un TDA Monitor

Monitor. Introduzione. Struttura di un TDA Monitor Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

I thread nel sistema operativo LINUX: Linuxthreads

I thread nel sistema operativo LINUX: Linuxthreads I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int

Dettagli

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007 2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?

Dettagli

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli

La Gestione delle risorse Renato Agati

La Gestione delle risorse Renato Agati Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File

Dettagli

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

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi 1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi Il processo E' un programma in esecuzione Tipi di processo Stati di un processo 1 indipendenti

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

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

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

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

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

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

Il problema del produttore e del consumatore. Cooperazione tra processi

Il problema del produttore e del consumatore. Cooperazione tra processi Il problema del produttore e del consumatore Cooperazione tra processi Risorsa consumabile I processi disgiunti possono interferire tra loro a causa dell'uso di risorse permanenti, ma ognuno di essi ignora

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Deadlock e Starvation

Deadlock e Starvation DTI / ISIN / Titolo principale della presentazione 1 Deadlock e Starvation Amos Brocco, Ricercatore, DTI / ISIN 3 aprile 2012 Condivisione di risorse In un sistema si trovano delle risorse che possono

Dettagli

Capitolo 7: Sincronizzazione

Capitolo 7: Sincronizzazione Capitolo 7: Sincronizzazione Il problema della sincronizzazione. Il problema della sezione critica. Hardware per la sincronizzazione. Semafori. Problemi classici di sincronizzazione. Monitor (cenni). 7.1

Dettagli

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Modello dei processi. Riedizione delle slide della Prof. Di Stefano Modello dei processi Riedizione delle slide della Prof. Di Stefano 1 Processi Modello di Processi asincroni comunicanti Process Scheduling Operazioni sui Processi Cooperazione tra Processi Interprocess

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

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

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Sistemi Operativi Kernel

Sistemi Operativi Kernel Approfondimento Sistemi Operativi Kernel Kernel del Sistema Operativo Kernel (nocciolo, nucleo) Contiene i programmi per la gestione delle funzioni base del calcolatore Kernel suddiviso in moduli. Ogni

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

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

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

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

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

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

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

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

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007 2007 SISTEMI OPERATIVI Deadlock (blocco critico) Domande di verifica Luca Orrù Centro Multimediale Montiferru 04/06/2007 Deadlock (blocco critico) 1. Si descriva il deadlock e le condizioni sotto cui si

Dettagli

CONTROLLO DI GESTIONE DELLO STUDIO

CONTROLLO DI GESTIONE DELLO STUDIO CONTROLLO DI GESTIONE DELLO STUDIO Con il controllo di gestione dello studio il commercialista può meglio controllare le attività svolte dai propri collaboratori dello studio nei confronti dei clienti

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry, o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 Vicenza, 3 giugno 2015 Gentile cliente, si ricorda che a partire dall aggiornamento PROFIS 2011.1 è stato automatizzato

Dettagli

Informatica: il sistema operativo

Informatica: il sistema operativo pierpaolo.vittorini@cc.univaq.it Università degli Studi dell Aquila Facoltà di Medicina e Chirurgia 6 ottobre 2006 Il software Il software è l insieme dei programmi che operano sul calcolatore Software

Dettagli

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

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore. I processi Cos è un processo? Un processo è una attività, controllata da un programma, che si svolge su un processore. Il programma è una entità statica che descrive la sequenza di istruzioni che devono

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

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

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09 SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

LA SINCRONIZZAZIONE TRA PROCESSI

LA SINCRONIZZAZIONE TRA PROCESSI LA SINCRONIZZAZIONE TRA PROCESSI E' più complesso scrivere programmi concorrenti rispetto a programmi sequenziali in quanto non basta essere sicuri della correttezza dei singoli moduli ma è necessario

Dettagli

Posix Threads: l evoluzione dei processi UNIX

Posix Threads: l evoluzione dei processi UNIX Posix Threads: l evoluzione dei processi UNIX Raffaele Quitadamo, PhD in Computer Science Università di Modena e Reggio Emilia quitadamo.raffaele@unimore.it Sommario Pthreads vs Unix processes L API per

Dettagli

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A.

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A. Mul&programmazione Ges&one dei processi A. Ferrari Tu9 i Sistemi Opera&vi moderni sono in grado di eseguire contemporaneamente più di un programma Il numero di programmi in esecuzione è superiore al numero

Dettagli

Esempio: aggiungere j

Esempio: aggiungere j Esempio: aggiungere j Eccezioni e interruzioni Il progetto del controllo del processore si complica a causa della necessità di considerare, durante l esecuzione delle istruzioni, il verificarsi di eventi

Dettagli

Processi. Laboratorio Software 2008-2009 C. Brandolese

Processi. Laboratorio Software 2008-2009 C. Brandolese Processi Laboratorio Software 2008-2009 Introduzione I calcolatori svolgono operazioni simultaneamente Esempio Compilazione di un programma Invio di un file ad una stampante Visualizzazione di una pagina

Dettagli

Sistemi Operativi L-A. Esercizi 14 Giugno 2007. Esercizio monitor

Sistemi Operativi L-A. Esercizi 14 Giugno 2007. Esercizio monitor Sistemi Operativi L-A Esercizi 14 Giugno 2007 Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione

Dettagli

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

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

SISTEMI OPERATIVI THREAD. Giorgio Giacinto 2013. Sistemi Opera=vi

SISTEMI OPERATIVI THREAD. Giorgio Giacinto 2013. Sistemi Opera=vi SISTEMI OPERATIVI THREAD 2 Mo*vazioni» Un programma complesso può eseguire in modo concorrente più funzioni agraverso la creazione e ges=one di processi figli agraverso il meccanismo dei thread» La creazione

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Sistemi Operativi. Lezione 7 Comunicazione tra processi

Sistemi Operativi. Lezione 7 Comunicazione tra processi Lezione 7 Comunicazione tra processi Introduzione La soluzione sw al problema della mutua esclusione è abbastanza complessa Algoritmo di Peterson La soluzione hw mediante disabilitazione degli interrupt

Dettagli

Capitolo 1 Installazione del programma

Capitolo 1 Installazione del programma Capitolo 1 Installazione del programma Requisiti Hardware e Software Per effettuare l installazione del software Linea Qualità ISO, il computer deve presentare una configurazione minima così composta:

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Manuale Terminal Manager 2.0

Manuale Terminal Manager 2.0 Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

I Thread. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Thread. Laboratorio Software 2008-2009 M. Grotto R. Farina I Thread M. Grotto R. Farina Sommario 1. I Thread Introduzione 2. Creazione e terminazione Utilizzo Scheduling dei processi 3. Comunicazione 4. Attributi Passaggio di parametri Funzioni utili Descrizione

Dettagli

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1 + Programmazione concorrente in Java 1 + Introduzione al multithreading 2 La scomposizione in oggetti consente di separare un programma in sottosezioni indipendenti. Oggetto = metodi + attributi finalizzati

Dettagli

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Threading T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Caratteristiche principali dei thread Consentono di eseguire elaborazioni simultanee in un programma scritto in C#. Possono essere

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, > Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale Calcolatori Elettronici La memoria gerarchica La memoria virtuale Come usare la memoria secondaria oltre che per conservare permanentemente dati e programmi Idea Tenere parte del codice in mem princ e

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico

Dettagli

CAPITOLO 27 SCAMBIO DI MESSAGGI

CAPITOLO 27 SCAMBIO DI MESSAGGI CAPITOLO 27 SCAMBIO DI MESSAGGI SCAMBIO DI MESSAGGI Sia che si guardi al microkernel, sia a SMP, sia ai sistemi distribuiti, Quando i processi interagiscono fra loro, devono soddisfare due requisiti fondamentali:

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

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

Un sistema operativo è un insieme di programmi che consentono ad un utente di INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli

Dettagli

Monitor pthreads. Esercizio

Monitor pthreads. Esercizio Monitor pthreads Esercizio Esercizio monitor Una società di noleggio di automobili offre ai propri clienti tre tipi di automobili: piccole, medie, grandi. Ogni tipo di auto è disponibile in numero limitato

Dettagli

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

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

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

IL SISTEMA OPERATIVO

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO... è l insieme dei programmi che rende agevole l uso dell hardware, mascherando le caratteristiche delle risorse fisiche (interfaccia) gestisce le risorse fisiche ottimizzandone l

Dettagli

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Il Software e Il Sistema Operativo Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Cosa Impareremo Programmi e Processi Struttura del Sistema Operativo Sviluppo di Programmi I files e la loro

Dettagli

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Esempio produttori consumatori. Primitive asincrone

Esempio produttori consumatori. Primitive asincrone Primitive asincrone Send non bloccante: il processo mittente, non appena inviato il messaggio, prosegue la sua esecuzione. Il supporto a tempo di esecuzione deve fornire un meccanismo di accodamento dei

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione SISTEMI OPERATIVI (parte prima - gestione dei processi) Tra i compiti di un sistema operativo sicuramente troviamo i seguenti: Gestione dei processi Gestione della memoria Gestione del file-system Ci occuperemo

Dettagli