* Costrutto linguistico che incapsula la sincronizzazione di mutua esclusione all interno della definizione della risorsa (Brinch Hansen, Hoare)
|
|
- Taddeo Venturini
- 8 anni fa
- Visualizzazioni
Transcript
1 1
2 * Costrutto linguistico che incapsula la sincronizzazione di mutua esclusione all interno della definizione della risorsa (Brinch Hansen, Hoare) * Associa ad una struttura dati un insieme di procedure * Il compilatore verifica che: - nessun altra operazione sia consentita - un solo processo alla volta sia attivo entro il monitor * Esempio di dichiarazione e di chiamata di monitor (Brinch Hansen): type Esempio=monitor;... var...; (* variabili locali *) var N1:Esempio; Procedure entry Nome proc1(var...); (* chiamata di una procedura del begin... end; monitor *) procedure entry Nome_proc2(var...); N1.Nome_proc1(...); begin... end; procedure Nome_proc(var...); begin... end; begin (* inizializzazione variabili locali *) end; 2
3 * Le variabili locali descrivono lo stato della struttura dati * Nome_proc1... Nome_procN sono le uniche operazioni che possono accedere alla struttura dati * Le strutture dati comuni alle procedure sono permanenti (tra successive esecuzioni delle procedure del monitor) * Oltre alle procedure entry possono essere definite nel monitor altre procedure utilizzabili dalle procedure entry * Fasi di controllo dell uso di una risorsa non condivisibile tra processi concorrenti con monitor: - controllo che un solo processo alla volta acceda alle strutture dati comuni: solo una procedura del monitor e attiva simultaneamente - controllo della sincronizzazione tra i processi mediante l uso di una condizione logica 3
4 * Variabili condition (Hoare): - controllo della sincronizzazione: il processo puo usare una risorsa se una condizione logica e vera, altrimenti e sospeso - usa un nuovo tipo di variabili, var x, y: condition; - operazioni su una variabile condition: wait e signal. * processo in attesa sulla variabile x: x.wait. Risveglio di un processo sospeso su x: x.signal * x.wait sospende il processo che la esegue finche un altro processo non esegue x.signal * Regole di simcronizzazione: cosa succede dopo una signal su una variabile condizione su cui sono sospesi diversi processi? Quale processo avanza? - proposta di Hoare: il processo appena svegliato va in esecuzione - proposta di Brinch Hansen: il processo che chiama la signal deve uscire subito dal monitor (si puo fare semplicemente usando signal come ultima istruzione del monitor). L avanzamento e deciso dallo scheduler. 4
5 * esempio: produttore/ consumatore in Concurrent Pascal con i monitor type buffer_circolare=monitor; var buffer:array[0..n-1] of messaggio; testa, coda: 0..N-1; cont:0..n; non_pieno, non_vuoto: condition; procedure entry enter(x:messaggio); begin if cont=n then non_pieno.wait; buffer[coda]:=x; coda:=(coda+1) mod N; cont:=cont+1; non_vuoto.signal; end; procedure entry remove(var x:messaggio); begin if cont=0 then non_vuoto.wait; c:=buffer[testa]; testa:=(testa+1) mod N; cont:=cont-1; non_pieno.signal; end; begin cont:=0; testa:=0; coda:=0; end; end; var dati: buffer_circolare; procedure Produttore; procedure Consumatore; var a:messaggio; var b:messaggio; begin begin while true do while true do begin begin produce(a); dati.enter(a); dati.remove(b); consuma(b); end; end; end; end; 5
6 * esempio: produttore/ consumatore in ADA con i monitor monitor produttore_consumatore is B:array(0..N-1) of Integer; In_ptr; Out_ptr: integer:=0; Count:integer:=0; Not_full, Not_empty: condition; Procedure Enter(I: in integer) is Begin If Count=N then wait(not_full); endif; B(In_ptr):=I; In_ptr:=(In_ptr+1) mod N; Signal(Not_empty); end Enter procedure Remove(I: out Integer) is begin if Count=0 then wait(not_empty); endif; I:=B(Out_ptr); Out_ptr:=(Out_ptr+1) mod N; Signal(Not_full); end Remove; end produttore_consumatore; task body Produttore is task body Consumatore is I:Integer; I:Integer; begin begin loop loop Produce(I); Remove(I); Enter(I); Consume(I); end loop; end loop; end Produttore; end Consumatore; 6
7 * Emulazione di semafori con i monitor in ADA monitor Emulazione_Semafori is S:Integer:=S0; Not_zero: condition; Procedure Sem_Down is Begin If S=0 then wait(not_zero); end if; S:=S-1; end Sem_Down; Procedure Sem_Up is Begin S:=S+1; Signal(Not_zero); end Sem_Up; end Emulazione_Semafori * Emulazione di monitor con i semafori: molto piu difficile. E necessario: - un semaforo S per la mutua esclusione delle procedure del monitor - un semaforo C_Semaphore per ogni variabile condizione wait(c) C_count:=C_count+1; signal(c) if(c_count>0) then Up(S); Up(C_Semaphore); Down(C_Semaphore); end if; Down(S); Up(S); C_count:=C_count+1; * Problemi con i monitor: - hanno bisogno di un linguaggio che li metta a disposizione - inoltre, i monitor sono stati progettati per sistemi con memoria comune; non funzionano in ambiente distribuito Modelli a scambio di messaggi 7
8 * Due processi comunicano attraverso un canale (astrazione logica) * Sono necessari degli strumenti linguistici per specificare la sorgente e la destinazione dei messaggi * Comunicazione simmetrica: i due processi si specificano a vicenda. Esempio: comunicazione tipo pipeline P1 P2 Pn-1 Pn * Comunicazione asimmetrica: solo il mittente specifica il destinatario. Esempio: comunicazione tipo cliente-servitore * Schema Client-Server: - Processo come gestore di una risorsa - Il cliente invia una richiesta di servizio al server - Il server soddisfa le varie richieste una alla volta * Costrutti linguistici: Send, Receive 8
9 * Tipi di Send: * Send asincrona: il processo continua l esecuzione dopo la Send (Send non e un punto di sincronizzazione) - puo essere richiesto uno scambio di messaggi di sincronizzazione - e necessaria la bufferizzazione dei messaggi - se il buffer e pieno: - il mittente si sospende - la Send solleva una eccezione al mittente * Send sincrona: il processo si blocca in attesa che il messaggio sia stato ricevuto (Send e un punto di sincronizzazione) - non e necessaria la bufferizzazione - scrittura e verifica dei programmi facilitata * Send tipo chiamata di procedura remota - il cliente e strutturato mediante una sequenza Send/Receive - Send sincrona: la sincronizzazione con il ricevente continua finche non viene inviata la risposta - Send: punto di sincronizzazione 9
10 * Tipi di Receive: * Receive di tipo bloccante: il ricevente si sospende finche non viene inviato un messaggio * Receive di tipo non bloccante: verifica lo stato del canale e restituisce un messaggio o una eccezione di canale vuoto -svantaggio: bisogna fare uso di attesa attiva * Esempi di primitive asincrone: send(processo_ricevente, messaggio); /* inserisce messaggio nella coda di ingresso del processo ricevente ed esce */ receive(processo_mittente, messaggio); /* analizza la coda di ingresso del processo che la esegue: se vuota si blocca, altrimenti estrae el primo messaggio */ 10
11 * Esempio di utilizzo delle primitive: Produttore/Consumatore con N messaggi Produttore { do{ Produce(&messaggio); receive(consumatore, &m); /* aspetta l arrivo di un messaggio vuoto */ send(consumatore, messaggio); }while(true); } Consumatore { for(i=0; i<n; i++) send(produttore, m); /* spedisce N messaggi vuoti */ do{ receive(produttore, &messaggio); send(produttore, m); /* invia un messaggio vuoto */ consuma(messaggio); }while(true); } * Esempio di algoritmo per il problema del produttore/consumatore con un buffer server con comunicazioni asincrone Produttore 1 dati dati Consumatore 1 Produttore N dati Buffer Server pronto dati Consumatore M 11
12 Process Buffer_Server { do{ receive(mittente, messaggio); if (il messaggio e un segnale di pronto) { if (coda dati vuota) aggiungi mittente nella coda dei consumatori pronti; else preleva un messaggio dalla coda dei dati pronti per essere per essere inviati; send(mittente,messaggio); } else /* il messaggio e un dato */ { if(coda di consumatori vuota) inserisci i dati nella coda dei dati pronti per essere inviati; else { preleva un consumatore pronto dalla coda dei consumatori pronti; send(consumatore, messaggio); } }while(true); Process cosumatore_j { do { send(buffer_server, pronto ); receive(mittente, &messaggio); consuma(messaggio); }while(true); } Process produttore_i { do{ produci(&dati); send(buffer_server,dati); }while(true); } 12
13 * Variante dello scambio di messaggi: - basato su una nuova struttura dati: Mailbox - coda di messaggi usata da piu mittenti e piu destinatari - una mailbox piena sospende i processi mittenti - ogni destinatario e caratterizzato da un numero di porta * Variante dello scambio di messaggi: - basato su una comunicazione pipeline - essenzialmente una mailbox con un mittente e un destinatario 13
14 1) Concurrent Pascal (Brinch Hansen 77) * Formato da tre tipi di moduli ( o tipi di sistema) - Processo (struttura dati privata piu programma sequenziale) - Classe (tipi di dati astratti cui puo accedere un solo processo) - Monitor * Ogni tipo di sistema e allocato staticamente in fase di caricamento (non c e allocazione dinamica di memoria) * I tipi di sistema sono globali, ma la visibilita e controllata dai diritti d accesso 2) Modula (Wirth 77) * Applicazioni in tempo reale * Meccanismo di base per l incapsulamento e la protezione delle informazioni: Module (unita di programma al cui interno possono essere definiti costanti, tipi, variabili, procedure) * Visibilita : tramite una define_list (oggetti locali -> visibili all esterno) tramite una use_list (oggetti esterni -> visibili all interno) * I processi non possono essere creati dinamicamente * Interface module: corrisponde al monitor 14
15 3) Modula-2 (Wirth 82) * Fornisce il meccanismo delle coroutines 4) Mesa (Xeroc 79) * Programmazione di sistemi * Moduli di programma e moduli di definizione (interfacce) * Liste di import/export (visibilita ed incapsulamento di informazioni) * Consente di definire procedure come tipi di dati * Aritmetica dei puntatori * Gestione di eventi * Gestione di coroutines ( port ) * Creazione dinamica di procesi ( fork ) * Monitor, con broadcast per svegliare tutti i processi in attesa e risveglio automatico dopo un time-out 15
16 5) Pascal-plus (Welsh 79) * Proces * Monitor * Envelope (corrisponde alla classe del Concurrent Pascal o al module di Modula) * Regole di visibilia : un identificatore puo essere esportato se preceduto da * * Esempio di envelope: envelope Nome(..vars..);... (* variabili locali e procedure *) begin I; (* inizializzazione *) ***; (* istruzione di separazione *) S; (* rilascio della risorsa gestita da envelope *) 16
17 * Programmazione distribuita: Elaborazione congiunta e coordinata eseguita da piu processi fisicamente distribuiti che si scambiano messaggi * In un sistema fisicamente distribuito, i messaggi sono scambiati attraverso canali di comunicazione. Il formato dei messaggi e definito dai protocolli * Comunicazione nei sistemi ditribuiti - comunicazione sincrona: * se il ricevitore non e pronto, il trasmettitore si blocca e viceversa. * RENDEZ-VOUS: sincronizzazione tra due processi tramite comunicazione - comunicazione asincrona: * il trasmettitore invia messaggi quand e pronto * Buffering: richiesto dalla comunicazione asincrona * Direzione del flusso dei dati: - sistemi asincroni: usano un flusso in una sola direzione - sistemi sincroni: possono avere flusso dei dati in una o due direzioni 17
18 * Creazione di processi: - statica: tutti i processi esistono quando inizia l esecuzione * vantaggi: predicibilita della esecuzione; implementazione piu efficiente * svantaggi: incapacita di adattarsi alle richieste computazionali - dinamica: alcuni processi sono creati durante l esecuzione * vantaggi: flessibilita sul numero dei processi * uso dinamico delle risorse * bilanciamento del carico computazionale tra i processi 18
19 Cenni di ADA * Identificatori, case insensitive, commenti (--...) * Esempio di programma in ADA procedure Esempio is g: integer:=0; -- variabili globali procedure incr(p: in integer) is -- in, out, in out l: integer; -- variabile locale begin l:=p+1; g:=l+g; end incr; function Square(i: in integer) return integer is begin return i*i; end Square; begin g:=g*5; incr(7); g=square(g); ens Esempio; * tipi predefiniti: integer, float, character, boolean, string * statement: if-then-elsif-else-endif, loop-endloop, while C loop-endloop, for in loop - endloop, exit... * tipi definiti dall utente: enumerativi, array, record, puntatori, task 19
20 * tasking in ADA: primitive linguistiche per la programmazione concorrente - comunicazione sincrona: i processi concorrenti si distinguono tra task accettori e task chiamanti. - i task accettori hanno delle porte di ingresso (entry point) e dei punti di sincronizzazione ( accept ) - un task chiamante chiama un entry point dell accettore - modello asimmetrico: due task devono raggiungere insieme un punto di incontro per comunicare --> Rendez-Voous - il punto di incontro si trova nel task accettore - il task chiamante deve coniscere l identita dell accettore, e il punto di rendez-vous (entry) - il task accettore non e tenuto a conoscere l identita del chiamante 20
21 * schema di Rendez-Vous task Esempio_accettore is entry Aggiungi(I:in integer); entry Rimuovi(I: out integer); end Esempio_accettore; task body Esempio_accettore is begin accept Aggiungi(I: in Integer) do --- end Aggiungi; end Esempio_accettore; task Chiamante Esempio.Aggiungi(I:integer); * sincronizzazione tra task comunicanti: - Se il task chiamante chiama l entry point prima che l accettore raggiunga l accept, si sospende e accetta - Se viceversa l accettore arriva all istruzione accept, si sospende e aspetta che il chiamante chiami l entry point * un task accettore puo avere molti accepts, * molti task chiamanti possono chiamare l entry: vengono messi in coda FIFO 21
22 * Packages in ADA - Package: un insieme di dati e dichiarazioni di procedure complete e messe in libreria - Esempio: package text_io: with text_io; procedure Main_program is begin text_io, Put_line( Buon Giorno ); end Main_program; * Sommario di Ada - istruzioni di controllo derivate dal Pascal - struttura delle procedure derivata dal Pascal - uso di package per funzioni di libreria - supporto di programmazione concorrente con i task - tipi definiti dall utente - gestione delle eccezioni - Packages di semafori binari e contatori - Monitor - creazione dinamica di processi 22
23 1) OCCAM (Inmos 88) - modello di programmazione concorrente basato sul meccanismo Rendez-vous - ogni istruzione e un processo: il programmatore indica esplicitamente i processi sequenziali e quelli paralleli 2) LINDA (gelenter 85-89) - basato su sequenze tipicizzate di dati: Tuple Space (TS) - TS e assimilabile ad una sequenza di procedure 3) PLITS (Programming Language in the Sky) (Feldmann 79) - primitive asincrone: messaggi memorizzati in code FIFO - tipo message: record di slot (nome, valore) - costrutto di base: modulo. Un programma e un insieme di moduli 23
24 4) CSP (Communicating Sequential Processes) (Hoare 78) - specifica di processo : <id processo>::<corpo del processo> - specifica di concorrenza nel corpo del processo: [<processo1>//<processo2>//...//<processon>]; - primitive di invio e ricezione di messaggi: <destinatario>!<espressione> <sorgente>?<variabile> - processi e canali statici - uso del nome dei processi per denotare un canale 5) DP (Distributed Processes) (Brinch Hansen 78) - primo esempio di linguaggio basato su chiamate a procedura remota - applicazioni in tempo reale (piu processori privi di memoria comune) - programma in tempo reale: insieme di processi distribuiti che iniziano contemporaneamente e continuano fino alla fine del sistema - schema di processo: Process None; <variabili locali>; <procedure locali>; <procedure globali>; begin --- end; - interazioni tra processi mediante chiamate a procedure remote 24
25 4) CHILL (Ccitt HIgh Level Language) (Helf 81) - linguaggio di uso generale orientato ad applicazioni in tempo reale - modello a memoria comune - scambio di messaggi - creazione ( start P ), attivazione e terminazione ( stop P ) dinamica di processi - condivisione di codice tra processi - interazioni tra processi anche tramite variabili globali 5) SR (Syncronizing Resources) (Andrews 81) - procedure remote - costrutto port per denotare i canali - comunicazione asincrona - variabili globali 6) Gypsy (Good 79) - applicazioni dedicate su architetture mono e multi CPU - comunicazione tramite messaggi asincroni 7) Starmode (Cook 80) - ispirato a DP - basato sul costrutto module 25
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
DettagliMODELLO AD AMBIENTE GLOBALE
MODELLI DI INTERAZIONE TRA PROCESSI Modello ad ambiente globale ( global environment ) Modello a scambio di messaggi ( message passing ) MODELLO AD AMBIENTE GLOBALE Il sistema è visto come un insieme di
DettagliModello a scambio di messaggi
PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto Modello a scambio di messaggi type messaggio = record origine: ; destinazione: ; contenuto:
DettagliEsempio 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
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 19 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 18 Maggio 2010 idea: sfruttare i
DettagliIl 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
DettagliSISTEMI 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?
DettagliCAPITOLO 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:
DettagliIl 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
DettagliIl 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
DettagliPronto 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
DettagliCAPITOLO 24 I MONITOR
EFFETTO DELLE PRIMITIVE - signal E wait SUI SEMAFORI CAPITOLO 24 I MONITOR I semafori sono un mezzo efficace per la gestione della mutua esclusione in ambienti con processi concorrenti, ma spesso è difficile
DettagliRealizzazione 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
DettagliFONDAMENTI 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
DettagliIl 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
DettagliIntroduzione alle applicazioni di rete
Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza
DettagliJava 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
DettagliMonitor. 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
DettagliCAPITOLO 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
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliSistemi Operativi Esercizi Sincronizzazione
Sistemi Operativi Esercizi Sincronizzazione Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Esercizi Sincronizzazione Sistemi Operativi - Claudio Palazzi 14 Semafori (1) Semafori: variabili intere contano
DettagliComunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione
I semestre 04/05 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1
DettagliCon 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
DettagliComunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI
Comunicazione La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Concettualmente la comunicazione point to point e' molto semplice: Un processo invia un
DettagliCenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it
Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliSommario. G. Piscitelli
Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione
DettagliCapitolo 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
DettagliComputazione 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:
DettagliSistemi Operativi (modulo di Informatica II)
Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità
DettagliMeccanismi di sincronizzazione: Semafori e Monitor
Meccanismi di sincronizzazione: Semafori e Monitor 1 Introduzione Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura
DettagliSend/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.
Implementazione delle primitive di comunicazione Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Struttura dati canale {
DettagliMODELLO 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
DettagliCoordinazione 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,
DettagliTipi 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
DettagliProcedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM
Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione
DettagliProgetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012
Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliInter Process Communication. Laboratorio Software 2008-2009 C. Brandolese
Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione
DettagliComunicazione 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
DettagliComunicazione 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
DettagliUniversità 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
DettagliIntroduzione ai tipi di dato astratti: applicazione alle liste
Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione
DettagliSistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory
FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File
DettagliIntroduzione ai Metodi Formali
Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di
DettagliLa 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
DettagliI 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
DettagliDescrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
DettagliIntroduzione. 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,
DettagliGESTIONE 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
DettagliDI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1
DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica
DettagliFasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
DettagliScheduling 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
DettagliSistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08
Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione Concetto di processo
DettagliIntroduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale
Introduzione Meccanismi di sincronizzazione: Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura di programmi
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliEsercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata
Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliMATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c
Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione
DettagliSistemi 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
DettagliAccess Control List (I parte)
- Laboratorio di Servizi di Telecomunicazioni Access Control List (I parte) Indice Cosa sono le ACL? Interfacce Inbound & Outbound Wildcard mask Configurare una ACL standard ACL extended Named ACL Posizionamento
DettagliCALCOLATORI 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
DettagliSistemi 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
DettagliMECCANISMI 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
DettagliPer 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
DettagliI 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)?
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliA. Carullo Introduzione a Visual Basic. Introduzione a
Introduzione a Visual Basic 1 Indice degli argomenti trattati Cos è Visual Basic? L ambiente di sviluppo Visual Basic I passi per la creazione di un progetto VB Operazioni più comuni in un progetto VB
DettagliIl 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
DettagliLezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DettagliEVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO
EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi
DettagliOggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
Dettagliprogam ponteasensounicoalaternato ; type dir = ( nord, sud );
Esercizio di Sincronizzazione Tra Processi: Ponte a Senso Unico Alternato Un ponte contiene una sola csia di traffico consentendo così l'accesso a macchine provenienti da una sola direzione per volta,
DettagliLa 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
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliLe reti. Introduzione al concetto di rete. Classificazioni in base a
Le reti Introduzione al concetto di rete Classificazioni in base a Software di rete OSI e TCP/IP Definizione di rete Vantaggi delle reti Reti ad architettura centralizzata e distribuita Sistemi aperti
DettagliUDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing
a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Dettagli1. 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
DettagliObiettivi d esame PHP Developer Fundamentals on MySQL Environment
Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web
Dettagli1 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
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliARCHITETTURA 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
DettagliSistemi 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
DettagliSistema 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
Dettagli2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.
ESERCIZIARIO Risposte ai quesiti: 2.1 Non sono necessarie modifiche. Il nuovo protocollo utilizzerà i servizi forniti da uno dei protocolli di livello trasporto. 2.2 Il server deve essere sempre in esecuzione
DettagliSincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.
Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,
DettagliINFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno
INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno UD 3.1b: Costrutti di un Algoritmo Dispense 1.2 I Costrutti di base 13 apr 2010
DettagliSequence Diagram e Collaboration Diagram
Sequence Diagram e Collaboration Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Sommario Interaction
DettagliIntroduzione a Classi e Oggetti
Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto
DettagliRichiesta pagina PHP (es: index.php)
PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con
DettagliJava threads (2) Programmazione Concorrente
Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and
DettagliFunzioni 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
DettagliOrganizzazione Monolitica
Principali componenti di un sistema Applicazioni utente Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del processore / Scheduler(s) Gestore della memoria Gestore delle periferiche/
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX
Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata
DettagliScuola Superiore Sant Anna. Progetto parte Unix. AA 2008-2009: Distributed File Repository
Scuola Superiore Sant Anna Progetto parte Unix AA 2008-2009: Distributed File Repository Distributed File Repository Descrizione del sistema da realizzare Progettare e implementare un server che mantiene
DettagliMANUALE D'USO DEL PROGRAMMA IMMOBIPHONE
1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma
DettagliT 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
DettagliProtocolli applicativi: FTP
Protocolli applicativi: FTP FTP: File Transfer Protocol. Implementa un meccanismo per il trasferimento di file tra due host. Prevede l accesso interattivo al file system remoto; Prevede un autenticazione
Dettagli