Libreria MPI. (Message Passing Interface) Standard Message Passing Interface (MPI)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Libreria MPI. (Message Passing Interface) Standard Message Passing Interface (MPI)"

Transcript

1 Libreria MPI (Message Passing Interface) Standard Message Passing Interface (MPI) Il primo standard de jure per i linguaggi paralleli a scambio di messaggi (definisce le specifiche sintattiche e semantiche, e non l implementazione) Messo a punto in una serie di riunioni tenutesi tra novembre 1992 e gennaio ommissione MPI ostituita da membri provenienti da 40 istituti diversi (Univers ità, Istituti di cerca, Industrie, Enti governativi) SOPI - Rendere portabile il software parallelo - Fornire agli sviluppatori di software un unico standard ben definito per lo codifica di software parallelo - Fornire ai costruttori di architetture un unico insieme di prim itive da implementare, possibilmente nel modo più efficiente per ciascuna architettura Michele olajanni Libreria MPI 2/36

2 Standard Message Passing Interface (MPI) Non si è voluto creare un sovra-insieme di tutte le primitive esistenti nei diversi ambienti di programmazione già implementati, anche se Sono stati creati dei comitati per ciascuna categoria di primitive in cui le scelte venivano effettuate a maggioranza lcune peculiarità Possibilità di definire Gruppi di processi Possibilità di effettuare comunicazioni tra Gruppi di processi Possibilità di definire un insieme di contesti per le comunicazioni Elevata flessibilità nella selettività della ricezione di un messaggio Vasto insieme di routine per effettuare comunicazioni ed operazioni globali (scatter, gather, reduce, scan) Supporti per la realizzazione di librerie modulari Michele olajanni Libreria MPI 3/36 La libreria MPI è grande o piccola? MPI è grande funzioni! - E il PL/1 o l da dello scambio di messaggi? No: 1) Il numero elevato di funzioni deriva dalla combinazione di un numero ridotto di concetti ortogonali 2) Molte delle funzionalità possono essere ignorate fino a che non servono esplicitamente Michele olajanni Libreria MPI 4/36

3 La libreria MPI è grande o piccola? MPI è piccola 6 funzioni fondamentali possono essere utilizzate per scrivere molti programmi paralleli: MPI_INT Inizializza l ambiente MPI MPI_OMM_SIZE etermina quanti processi vi sono MPI_OMM_RNK etermina il numero (rank) di processo MPI_SEN Invia un messaggio MPI_REV Ricevi un messaggio MPI_FINLIZE Termina l ambiente MPI MPI è della dimensione che serve Oltre alle 6 funzioni,le altre funzioni possono aggiungere: Flessibilità (tipi di dati) Efficienza (comunicazioni non bloccanti) Modularità (gruppi, comunicatori) onvenienza (operazioni/comunicazioni collettive, topologie virtuali) Michele olajanni Libreria MPI 5/36 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 6/36

4 Struttura programma MPI #include <mpi.h> main (int argc, char**argv) { MPI_init (&argc, &argv); /* orpo del programma */ MPI_finalize(); exit (0); } Michele olajanni Libreria MPI 7/36 MPI consente il modello SPM ESEMPIO Nodo 0 Nodo 1 Nodo 2 Nodo 3 ( ) Programma SPM.. begin < esegui ( )>; ( ) ( ) ( ) ( ) if (nodo==0) <esegui ( )>; else <esegui ( )>; if (nodo==0) <esegui ( )>; end HOST ( ) I 2 costrutti fondamentali del modello SPM: identificativo del processo costrutto condizionale Michele olajanni Libreria MPI 8/36

5 I costrutti MPI di base per la programmazione ommunicator (OMM) 1. Gruppo di processi che può comunicare 2. I comunicatori non sono partizioni dell insieme dei processi (pertanto un processo può appartenere a più comunicatori) 3. omunicatore predefinito: MPI_OMM_WORL (=tutti i processi) Rank 1. Identificatore numerico (da 0 a N) di un processo all interno di un comunicatore 2. Un processo può avere un diverso rank per ogni comunicatore cui appartiene 3. Uso: MPI_OMM_RNK(comm, &rank) Size 1. Numero di processi all interno di un comunicatore 2. Uso: MPI_OMM_SIZE( comm, &size) Risultati delle rispettive funzioni Michele olajanni Libreria MPI 9/36 Esempio programma MPI di tipo SPM Stampare una volta il numero di processi attivi ed il numero di rank dei processi pari. ltrimenti stampare rank di processi dispari. #include <mpi.h> main (int argc, char **argv) { } int numproc, myid; MPI_init (&argc, &argv) ; MPI_comm_size (MPI_OMM_WORL, &numproc) ; MPI_comm_rank (MPI_OMM_WORL, &myid) ; if (myid == 0) printf ( numero processi = %d \n, numproc); if (( myid%2) == 0 ) printf ( rank processo = %d\n, myid); else printf ( rank processo dispari \n ); MPI_Finalize ( ); exit (0 ); Michele olajanni Libreria MPI 10/36

6 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 11/36 Informazione del messaggio MESSGGIO = TI TRSMESSI + INFORMZIONI PER L TRSMISSIONE SEN Processo mittente Processi/o destinatari/o Locazione/i di memoria dei dati da trasmettere Tipo di dato da trasmettere Quantità di dati da trasmettere REEIVE Locazione di memoria dei dati da ricevere Quantità di dati che possono essere ricevuti SEN/REEIVE Identificatore (tag) del messaggio Modalità di comunicazione Michele olajanni Libreria MPI 12/36

7 omunicazioni MPI Librerie precedenti SEN (tag, buffer, lenght, dest) Novità MPI uffer del messaggio descritto indipendentemente dalla rappresentazione [Eterogeneità] Superamento del (uffer, lenght) Separazione delle famiglie di messaggi [ontestualizzazione ] superamento del tag semplice Utili per applicazioni tipo: programmi complessi (reali), librerie, ecc. Separazione dei processi [Raggruppamento] Superamento del destsemplice Utili per applicazioni: librerie, topologie virtuali, ecc. Michele olajanni Libreria MPI 13/36 SEN in MPI MPI_Send (buf, count, datatype, dest, tag, comm) uf = buffer (nome della variabile o del vettore) ount = numero elementi di tipo datatype atatype = tipo di dato del linguaggio (,300,MPI_REL) = vettore di 300 numeri reali, [indipendentemente dalla lunghezza o dal formato della rappresentazione floating point] est= numero del processo destinatario, relativo al gruppo/contesto identificato da comm Tag= identificativo del messaggio omm= identifica un gruppo di processi e un contesto di comunicazione (Le nozioni di gruppo e contesto sono combinati in un unico oggetto chiamato OMUNITORE, che risulta essere un argomento della maggior parte di comunicazioni point-to-point e collettive) Michele olajanni Libreria MPI 14/36

8 atatype fondamentali di MPI (linguaggio ) MPI atatype MPI_HR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNE_HR MPI_UNSIGNE_SHORT MPI_UNSIGNE MPI_UNSIGNE_LONG MPI_FLOT MPI_ OULE MPI_LONG_OULE MPI_YTE MPI_PKE datatype Signed char Signed short int Signed int Signed long int unsigned char unsigned short int unsigned int unsigned long int Float ouble Long double Necessari per il calcolo parallelo su piattaforme eterogenee Michele olajanni Libreria MPI 15/36 Ottica globale Sincrona (il mittente sa se il messaggio è arrivato o meno, es. fax) sincrona (il mittente non sa se il messaggio è arrivato o meno, es. lettera) Ottica locale (buffer di trasmissione) loccante Restituisce il controllo al processo che ha invocato la primitiva di comunicazione solo quando la primitiva di comunicazione è stata completata (=il buffer di uscita è stato svuotato). TTENZIONE: LONTE SINRON! Non loccante Modalità di comunicazione Restituisce il controllo al processo che ha invocato la primitiva di comunicazione quando la primitiva di comunicazione è stata eseguita (senza controllo sull effettivo completamento, da poter effettuare in seguito). Il processo invocante può nel frattempo passare ad eseguire altre operazioni. In MPI vi sono diverse combinazioni possibili tra SEN/REEIVE sincrone e asincrone, bloccanti e non bloccanti Michele olajanni Libreria MPI 16/36

9 ompletamento delle comunicazioni Una comunicazione è completata localmente su di un processo se il processo ha completato tutta la sua parte di operazioni relative alla comunicazione (fino allo svuotamento del buffer di uscita) al punto di vista dell esecuzione del programma, completare localmente una comunicazione significa che il processo può eseguire l istruzione successiva alla SEN o REEIVE (possibilmente un altra SEN) Una comunicazione è completata globalmente se tutti i processi coinvolti hanno completato tutte le rispettive operazioni relative alla comunicazione Una comunicazione è completata globalmente se e solo se è completata localmente su tutti i processi coinvolti Michele olajanni Libreria MPI 17/36 Tipica esecuzione di una comunicazione Processo SEN F1() Sistema operativo Processo REEIVE F2() Sistema operativo Hardware buffer di uscita buffer di ingresso Hardware Nodo MITTENTE Nodo ESTINTRIO Rete di Interconnessione Michele olajanni Libreria MPI 18/36

10 SEN Non-locking Ritorna immediatamente. Modalità di blocking Il buffer del messaggio non deve essere sovrascrittosubito dopo il ritorno al processo chiamante, ma si deve controllare che la SEN sia completata localmente. SEN locking Ritorna quando la SEN è completata localmente. Il buffer del messaggio può essere sovrascritto subito dopo il ritorno al processo chiamante. REEIVE Non-locking Ritorna immediatamente. Il buffer del messaggio non deve essere lettosubito dopo il ritorno al processo chiamante, ma si deve controllare che la REEIVE sia completata localmente. REEIVE locking Ritorna quando la REEIVE è completata localmente. Il buffer del messaggio può essere letto subito dopo il ritorno. Michele olajanni Libreria MPI 19/36 Modalità di comunicazione punto-punto La modalità di una comunicazione punto-punto specifica quanto un operazione di SEN può iniziare a trasmettere e quando può ritenersi completata. MPI prevede 4 modalità: Modalità SINRON La SEN può iniziare (a trasmettere) anche se la REEIVE corrispondente non è iniziata. Tuttavia, la SEN è completata solo quando si ha garanzia che il processo destinatario ha eseguito e completato la REEIVE. Modalità UFFERE Simile alla modalità sincrona per l inizio della SEN. Tuttavia, il completamento è sempre indipendente dall esecuzione della REEIVE. (Il messaggio può essere bufferizzato per garantire il funzionamento) Modalità STNR La SEN può iniziare (a trasmettere) anche se la REEIVE corrispondente non è iniziata. La semantica del completamento è sincrona o buffered. Modalità REY La SEN può iniziare (a trasmettere) assumendo che la corrispondente REEIVE è iniziata. Tuttavia, il completamento è sempre indipendente dall esecuzione della REEIVE. Michele olajanni Libreria MPI 20/36

11 Operazione di SEN Sintesi dei tipi di comunicazione 4 modalità di comunicazione (sincrona, standard, buffered, ready) 2 modalità di blocking (blocking, non blocking) locking significa che la SEN può ritenersi completata localmente 8 tipi di SEN (=buffer di uscita è libero) mpi_[ -, i ] [ -, r, s, b ] send [ -, i ] = modalità di blocking [ -, r, s, b ] = modalità di comunicazione Operazione di REEIVE 1 modalità di comunicazione 2 modalità di blocking 2 tipi di REEIVE mpi_[ -, i ] recv [ -, i ] = modalità di blocking Una qualsiasi operazione di receive può essere utilizzata per ricevere messaggi da una qualsiasi SEN Michele olajanni Libreria MPI 21/36 Modalità di omunicazione/locking Problema: osa fare quando il processo destinatario non è in grado di ricevere subito il messaggio? Modalità STNR [il messaggio vene copiato in un buffer interno; il processo mittente continua dopo il completamento della copia] MPI_SEN ( ) Modalità UFFERE [il messaggio viene copiato in un buffer esterno ed il processo mittente si blocca finché il buffer non può essere riutilizzato] MPI_SEN ( ) MPI_UFFER_TTH ( ) MPI_UFFER_ETH ( ) Modalità SINRON [il processo mittente si blocca finché il messaggio non è stato ricevuto dal processo destinatario] MPI_SSEN ( ) Modalità REY [si assume che il processo destinatario abbia già eseguito una REEIVE] MPI_RSEN ( ) a usare con attenzione, possibilmente in combinazione con MPI_WIT oppure MPI_TEST Michele olajanni Libreria MPI 22/36

12 Receive locking RE (buffer, lenght, tag) MPI_Recv (buf, count, datatype, source, tag, comm, status) buf= buffer dove inserire il messaggio ricevuto count= numero di elementi del buffer di tipo datatype datatype= tipo di dato del messaggio source= numero del processo mittente, relativo al gruppo/contesto comm (MPI_NY_SOURE ricevi il primo msg in arrivo da source) tag=identificativo del messaggio comm= identifica un gruppo di processi e un contesto di comunicazione (default: MPI_OMM_WORL un contesto costituito da tutti i processi) status= in è una variabile di tipo struct dove: status.mpi_soure contiene il rank del mittente status.mpi_tg contiene il tag del messaggio status.mpi_get_ount contiene il numero di item ricevuti Michele olajanni Libreria MPI 23/36 Sincronizzazione tra processi ue possibilità per la sincronizzazione dei processi: Uso di comunicazioni sincrone (es., MPI_ssend) Uso di primitive esplicite della libreria MPI (es., MPI_barrier) Michele olajanni Libreria MPI 24/36

13 ompletamenti multipli MPI_waitall Si blocca finché tutti i processi in una determinata lista non sono stati completati MPI_waitany Si blocca finché un processo di una determinata lista è stato completato MPI_waitsome Si blocca finché almeno un processo di una determinata lista è s tato completato Michele olajanni Libreria MPI 25/36 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 26/36

14 Tipi di comunicazione collettive in MPI One-to-Many (multicast) One-to-ll (broadcast) Many(ll)-to-One (gather) Many-to-Many ll-to-ll Michele olajanni Libreria MPI 27/36 omunicazioni ollettive in MPI P0 P1 roadcast P0 P1 P2 P2 P3 P3 P0 P1 Scatter P0 P1 P2 P3 Gather P2 P3 P0 P1 ll gather P0 P1 P2 P2 P3 P3 P0 P ll to ll P0 P P P P P Michele olajanni Libreria MPI 28/36

15 Michele olajanni Libreria MPI 29/36 MPI_REUE RNK G H F E T S Q R P M N O L K J I root MPI_REUE oeoiomoq Michele olajanni Libreria MPI 30/36 MPI_LLREUE G H F E T S Q R P M N O L K J I MPI_LLREUE Nota: non c è ROOT nelle operazioni MPI_LLXXX oeoiomoq RNK

16 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 31/36 Operazioni collettive arrier (sincronizzazione) ata Movement (comunicazioni collettive) roadcast Scatter Gather ollective omputations» Reduce (computazioni collettive) NOT Minimum, Maximum Sum Logical OR, N, etc. User-defined differenza di altre librerie message-passing, in MPI le comunicazioni collettive non hanno bisogno di esplicitare la receive. Tutti i processi eseguono: MPI_ST (buf, count, datatype, source, comm) Es., MPI_ST (&n, 1, MPI_INT, 0, MPI_OMM_WORL) Michele olajanni Libreria MPI 32/36

17 Topologie Virtuali Possibilità di concettualizzare l organizzazione fisica della rete di interconessione (topology) dei processi secondo un determinato pattern di comunicazione (application topology) iverse topologie possibili: Griglia logica Grafi regolari MPI_RT_RETE( ) Topologie definite dall utente Le topologie virtuali forniscono una metodologia ad alto livello per gestire gruppi di processi senza trattare con essi direttamente. Michele olajanni Libreria MPI 33/36 Topologie Virtuali: Esempio efinire una topologia virtuale mesh bi-dimensionale 4x3. 0 0,0 1 0,1 2 0,2 3 0,3 4 0,1 5 1,1 6 2,1 7 3,1 ndims=2; 8 0,0 dims[1]=4; dims[2]=3; periods[1]=0; /*FLSE=non ciclica*/ periods[2]=0; /*TRUE=ciclica*/ reorder=1; 9 1,0 10 2,0 /*FLSE= dati già distribuiti*/ /*Il process rank non cambia*/ /*TRUE= dati non distribuiti*/ /*MPI può modificare il process rank per /*tener conto della topologia virtuale*/ omunicatore di partenza 11 3,0 Nuovo comunicatore MPI_RT_RETE(MPI_OMM_WORL. ndims, dims, periods, reorder, ommunicator2) Michele olajanni Libreria MPI 34/36

18 lcune home page su MPI: ltre informazioni su MPI ftp://unix.hensa.ac.uk/parallel/standards/mpi MPI Standard ocument: MPI Frequently sked Questions: Implementazione EP di MPI: MPI: The omplete Reference Michele olajanni Libreria MPI 35/36 Oltre MPI-1 Generalizzare la nozione di processo - gestione dell attivazione/disattivazione dinamica di processi - processi lightweight (threads) Generalizzare la nozione di message-passing - remote signal (interrupt -driven receive) - active message (remote memory copying) Parallel I/O - operazioni di I/O asincrone - nuovi datatype - gestire la non uniformità nell accesso a dispositivi esterni MPI-2: Extensions to the Message Passing Interface, July 1997 Michele olajanni Libreria MPI 36/36

Libreria MPI. (Message Passing Interface)

Libreria MPI. (Message Passing Interface) Libreria MPI (Message Passing Interface) Standard Message Passing Interface (MPI) Il primo standard de jure per i linguaggi paralleli a scambio di messaggi (definisce le specifiche sintattiche e semantiche,

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 1 Message Passing Interface MPI www.mcs.anl.gov./research/projects/mpi/

Dettagli

Laboratorio di Calcolo Parallelo

Laboratorio di Calcolo Parallelo Laboratorio di Calcolo Parallelo Lezione : Aspetti avanzati ed esempi in MPI Francesco Versaci & Alberto Bertoldo Università di Padova 6 maggio 009 Francesco Versaci (Università di Padova) Laboratorio

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 MPI : Message Passing Interface MPI

Dettagli

Non blocking. Contro. La programmazione di uno scambio messaggi con funzioni di comunicazione non blocking e' (leggermente) piu' complicata

Non blocking. Contro. La programmazione di uno scambio messaggi con funzioni di comunicazione non blocking e' (leggermente) piu' complicata Non blocking Una comunicazione non blocking e' tipicamente costituita da tre fasi successive: L inizio della operazione di send/receive del messaggio Lo svolgimento di un attivita' che non implichi l accesso

Dettagli

Comunicazione. 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 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

Dettagli

Calcolo Parallelo con MPI (2 parte)

Calcolo Parallelo con MPI (2 parte) 2 Calcolo Parallelo con MPI (2 parte) Approfondimento sulle comunicazioni point-to-point Pattern di comunicazione point-to-point: sendrecv Synchronous Send Buffered Send La comunicazione non-blocking Laboratorio

Dettagli

Introduzione a MPI Algoritmi e Calcolo Parallelo. Daniele Loiacono

Introduzione a MPI Algoritmi e Calcolo Parallelo. Daniele Loiacono Introduzione a MPI Algoritmi e Calcolo Parallelo Riferimenti! Tutorial on MPI Lawrence Livermore National Laboratory https://computing.llnl.gov/tutorials/mpi/ Cos è MPI? q MPI (Message Passing Interface)

Dettagli

MPI è una libreria che comprende:

MPI è una libreria che comprende: 1 Le funzioni di MPI MPI è una libreria che comprende: Funzioni per definire l ambiente Funzioni per comunicazioni uno a uno Funzioni percomunicazioni collettive Funzioni peroperazioni collettive 2 1 3

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 MPI : Message Passing Interface MPI

Dettagli

Programmazione di base

Programmazione di base 1 0.1 INTRODUZIONE Al giorno d oggi il calcolo parallelo consiste nell esecuzione contemporanea del codice su più processori al fine di aumentare le prestazioni del sistema. In questo modo si superano

Dettagli

Modelli di programmazione parallela

Modelli di programmazione parallela Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici

Dettagli

Calcolo parallelo con MPI (2ª parte)

Calcolo parallelo con MPI (2ª parte) Calcolo parallelo con MPI (2ª parte) Approfondimento sulle comunicazioni point-to-point La comunicazione non blocking Laboratorio n 3 MPI virtual topologies Laboratorio n 4 2 Modalità di comunicazione

Dettagli

A.d'Alessio. Calcolo Parallelo. Esempi di topologie

A.d'Alessio. Calcolo Parallelo. Esempi di topologie Message Passing Interface MPI Le topologie 1 Esempi di topologie Anello Griglia Toro L utilizzo di una topologia per la progettazione di un algoritmo in ambiente MIMD è spesso legata alla geometria intrinseca

Dettagli

Il Modello a scambio di messaggi

Il Modello a scambio di messaggi Il Modello a scambio di messaggi 1 Interazione nel modello a scambio di messaggi Se la macchina concorrente e` organizzata secondo il modello a scambio di messaggi: PROCESSO=PROCESSO PESANTE non vi è memoria

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

Il modello a scambio di messaggio

Il modello a scambio di messaggio Il modello a scambio di messaggio Ciascun processo evolve in un proprio ambiente che non può essere modificato direttamente da altri processi. Quindi non esiste memoria condivisa e le risorse sono tutte

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Dettagli

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:

Dettagli

Calcolo parallelo con MPI (2ª parte)

Calcolo parallelo con MPI (2ª parte) Calcolo parallelo con MPI (2ª parte) Approfondimento sulle comunicazioni point-to-point La comunicazione non blocking Laboratorio n 3 MPI virtual topologies Laboratorio n 4 2 Modalità di comunicazione

Dettagli

Calcolo parallelo. Una sola CPU (o un solo core), per quanto potenti, non sono sufficienti o richiederebbero tempi lunghissimi

Calcolo parallelo. Una sola CPU (o un solo core), per quanto potenti, non sono sufficienti o richiederebbero tempi lunghissimi Calcolo parallelo Ci sono problemi di fisica, come le previsioni meteorologiche o alcune applicazioni grafiche, che richiedono un enorme potenza di calcolo Una sola CPU (o un solo core), per quanto potenti,

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 28 giugno 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine

Dettagli

Primi Programmi con MPI 1

Primi Programmi con MPI 1 Il cluster che usiamo: spaci Esercitazione: Primi Programmi con MPI http://www.na.icar.cnr.it/grid/#spacina Spacina è un cluster HP XC 6000 / Linux a 64 nodi biprocessore. La configurazione hardware dei

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Ambienti di Programmazione per il Software di Base

Ambienti di Programmazione per il Software di Base Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Presentazione del corso

Presentazione del corso Cosa è il calcolo parallelo Serie di Fibonacci Serie geometrica Presentazione del corso Calcolo parallelo: MPI Introduzione alla comunicazione point-to-point Le sei funzioni di base Laboratorio 1 Introduzione

Dettagli

MPI. MPI e' il risultato di un notevole sforzo di numerosi individui e gruppi in un periodo di 2 anni, tra il 1992 ed il 1994

MPI. MPI e' il risultato di un notevole sforzo di numerosi individui e gruppi in un periodo di 2 anni, tra il 1992 ed il 1994 MPI e' acronimo di Message Passing Interface Rigorosamente MPI non è una libreria ma uno standard per gli sviluppatori e gli utenti, che dovrebbe essere seguito da una libreria per lo scambio di messaggi

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Esercitazione 3 Programmazione Concorrente nel linguaggio go. 13 Novembre 2017

Esercitazione 3 Programmazione Concorrente nel linguaggio go. 13 Novembre 2017 Esercitazione 3 Programmazione Concorrente nel linguaggio go 13 Novembre 2017 1 Concorrenza in go 2 creazione goroutine Sintassi : Esempio go func IsReady(what string, minutes int64)

Dettagli

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Introduzione alla programmazione. Alice Pavarani

Introduzione alla programmazione. Alice Pavarani Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello

Dettagli

MPI: MESSAGE PASSING INTERFACE

MPI: MESSAGE PASSING INTERFACE MPI: MESSAGE PASSING INTERFACE Lorenzo Simionato lorenzo@simionato.org Dicembre 2008 Questo documento vuol essere una brevissima introduzione ad MPI. Per un approfondimento dettagliato, si rimanda invece

Dettagli

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli

Struttura dei programmi e Variabili

Struttura dei programmi e Variabili Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

I Fondamenti del Linguaggio

I Fondamenti del Linguaggio Linguaggio C I Fondamenti del Linguaggio Linguaggio di Programmazione Linguaggio formale per la descrizione di programmi per calcolatori Sintassi vicina al linguaggio umano Se non ci fossero, bisognerebbe

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012 Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni

Dettagli

Ingresso ed Uscita in C. Informatica 1 / 15

Ingresso ed Uscita in C. Informatica 1 / 15 Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Message Passing Interface (MPI) e Parallel Virtual Machine (PVM)

Message Passing Interface (MPI) e Parallel Virtual Machine (PVM) Università degli Studi di Bologna Dipartimento di Elettronica Informatica e Sistemistica Message Passing Interface (MPI) e Parallel Virtual Machine (PVM) Introduzione Message passing: esplicita comunicazione

Dettagli

Il Modello a scambio di messaggi

Il Modello a scambio di messaggi Il Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto typedef struct{ origine; destinazione; contenuto;

Dettagli

Processi. Franco Maria Nardini

Processi. Franco Maria Nardini Processi Franco Maria Nardini La funzione main il kernel gestisce l avvio del vostro codice C (attraverso una funzione exec) routine speciale di start-up che prepara l ambiente di esecuzione per il main

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Dettagli

Esercitazioni 13 e 14

Esercitazioni 13 e 14 Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazioni 13 e 14 Comunicazione tra processi (IPC) Meccanismo per la comunicazione

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 3: Istruzioni ed operatori booleani. Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Soluzioni agli esercizi Istruzioni (statement) semplici e di controllo

Dettagli

Implementazione di DFA in C

Implementazione di DFA in C Implementazione di DFA in C Dispensa di Laboratorio di Linguaggi di Programmazione Sommario Corrado Mencar, Pasquale Lops, Stefano Ferilli Questa dispensa fornisce le linee guida per l implementazione,

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto type messaggio = record origine:. ; destinazione:. ;

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento

Dettagli

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

1 PANORAMICA SUL LINGUAGGIO C

1 PANORAMICA SUL LINGUAGGIO C 1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato

Dettagli

Principles of Concurrent Programming

Principles of Concurrent Programming Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi

Dettagli

La Programmazione. Cos è la programmazione? Concetti preliminari

La Programmazione. Cos è la programmazione? Concetti preliminari La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione

Dettagli

Burocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio

Burocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio Burocrazia: Università degli Studi di Ferrara Laurea triennale in Matematica Corso di Programmazione Primi passi con il linguaggio C Filippo Mantovani 1 Ottobre 009 Per ora nessun cambio di orario e/o

Dettagli

Informatica (A-K) 12. Linguaggio C -3

Informatica (A-K) 12. Linguaggio C -3 Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i

Dettagli

Programma della 1 sessione di laboratorio

Programma della 1 sessione di laboratorio Programma della 1 sessione di laboratorio Familiarizzare con l ambiente MPI Hello World in MPI (Esercizio 1) Esercizi da svolgere Send/Receive di un intero e di un array di float (Esercizio 2) Calcolo

Dettagli

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura

Dettagli

Introduzione alla Programmazione Concorrente

Introduzione alla Programmazione Concorrente Introduzione alla Programmazione Concorrente 1 Algoritmo, programma, processo Algoritmo: Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma: Descrizione di un

Dettagli

2 Operatori matematici e costrutto if

2 Operatori matematici e costrutto if Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione delle operazioni tra numeri e del costrutto condizionale if. Si introducono anche le due funzioni

Dettagli

Introduzione al Multithreading

Introduzione al Multithreading Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui

Dettagli

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O Gestione e organizzazione dei dischi COMPITI

Dettagli

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni

Dettagli

Chiamata di procedura remota

Chiamata di procedura remota Con gli strumenti gia` visti, si puo` realizzare come segue: lato chiamante: send asincrona immediatamente seguita da una receive lato chiamato: una receive seguita, al termine dell azione richiesta, da

Dettagli

Introduzione al C. Lez. 1 Elementi

Introduzione al C. Lez. 1 Elementi Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing

Dettagli

Sistemi Operativi (M. Cesati)

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

Dettagli

il tipo di parallelismo dipende dal grado di cooperazione

il tipo di parallelismo dipende dal grado di cooperazione Thread Settembre 2009 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio d informazione) necessario tra attività svolte in parallelo processo macchina virtuale

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

14/12/2018 Informatici e di Telecomunicazioni

14/12/2018 Informatici e di Telecomunicazioni Informatici e di Telecomunicazioni 14 dicembre 2018 Parte I Classe V A INF ISIS E.Fermi Prof. Federico Santolini 1 (c) Primitive del servizio di trasporto (1/3) Premessa E utile ribadire che il livello

Dettagli

Boost.MPI Library Algoritmi e Calcolo Parallelo. Daniele Loiacono

Boost.MPI Library Algoritmi e Calcolo Parallelo. Daniele Loiacono Boost.MPI Library Algoritmi e Calcolo Parallelo Riferimenti! Boost homepage http://www.boost.org/! Tutorial on Boost.MPI http://www.boost.org/doc/libs/1_52_0/doc/html/mpi/ tutorial.html! Tutorial on Boost.Serialization

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento

Dettagli

Processi parte IV. Processi parte IV

Processi parte IV. Processi parte IV Processi parte IV Processi parte IV Grafi di precedenza Sincronizzazione dei processi Unix mediante: fork-join cobegin-coend semafori Grafi di precedenza Un grafo di precedenza è un grafo diretto aciclico

Dettagli

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

C espressioni condizionali

C espressioni condizionali C espressioni condizionali Esiste un particolare operatore, detto operatore condizionale, che rappresenta un istruzione if else. estremamente compattata?: Supponiamo di voler inserire nella variabile intera

Dettagli

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri Funzioni (Passaggio dei parametri per riferimento) Passaggio dei parametri Per passaggio dei parametri si intende l associazione fra parametri attuali e parametri formali che avviene al momento della chiamata

Dettagli

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività

Dettagli

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA COMPITI DEL SOTTOSISTEMA DI I/O ARGOMENTI

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA COMPITI DEL SOTTOSISTEMA DI I/O ARGOMENTI GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un di I/O 1. Nascondere al programmatore i dettagli delle interfacce

Dettagli

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali

Dettagli

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con

Dettagli

Il linguaggio C Variabili e tipi di dato primitivi

Il linguaggio C Variabili e tipi di dato primitivi Il linguaggio C Variabili e tipi di dato primitivi main() { /*definizioni variabili: */ char y= a ; /*codice(a)=97*/ int x,x,y; unsigned int Z; float SUM; double r; /* parte istruzioni: */ X=27; Y=4; Z

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli