Libreria MPI. (Message Passing Interface)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Libreria MPI. (Message Passing Interface)"

Transcript

1 Libreria MPI (Message Passing Interface)

2 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 (Università, 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 primitive da implementare, potenzialmente nel modo più efficiente desiderato Michele olajanni Libreria MPI 2/36

3 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

4 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

5 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

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 6/36

7 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

8 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

9 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

10 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

11 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

12 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

13 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 dest semplice Utili per applicazioni: librerie, topologie virtuali, ecc. Michele olajanni Libreria MPI 13/36

14 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

15 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

16 Modalità di comunicazione 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 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

17 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

18 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

19 SEN Non-locking Ritorna immediatamente. Modalità di blocking Il buffer del messaggio non deve essere sovrascritto subito 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 letto subito 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

20 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

21 Operazione di SEN 4 modalità di comunicazione (sincrona, standard, buffered, ready) 2 modalità di blocking (blocking, non blocking) 8 tipi di SEN Sintesi dei tipi di comunicazione mpi_[ -, i ] [ -, r, s, b ] send [ -, i ] = modalità di blocking locking significa che la SEN può ritenersi completata localmente (=buffer di uscita è libero) [ -, 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

22 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

23 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

24 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

25 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 è stato completato Michele olajanni Libreria MPI 25/36

26 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

27 Tipi di comunicazione non point-to to-point 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

28 omunicazioni ollettive in MPI P0 P1 roadcast P0 P1 P2 P2 P3 P3 P0 Scatter P0 P1 P1 P2 Gather P2 P3 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

29 Michele olajanni Libreria MPI 29/36 MPI_REUE MPI_REUE RNK G H F E T S R Q P M N O L K J I root MPI_REUE oeoiomoq

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

31 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

32 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

33 Tipologie 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

34 Topologie Virtuali: Esempio efinire una topologia virtuale mesh bi-dimensionale 4x3. 0 0,2 1 1,2 2 2,2 3 3,2 4 0,1 5 1,1 6 2,1 7 3,1 ndims=2; dims[1]=4; dims[2]=3; periods[1]=0; /*FLSE periods[2]=0; /*TRUE reorder=1; /*FLSE 8 0,0 9 1,0 10 2,0 FLSE=non ciclica*/ TRUE=ciclica*/ 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

35 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

36 Oltre MPI-1 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) Standard Message Passing Interface (MPI)

Libreria MPI. (Message Passing Interface) Standard Message Passing Interface (MPI) 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 03/04 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 2

Dettagli

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX)

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX) Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali

Dettagli

a) Uno stesso problema in minor tempo

a) Uno stesso problema in minor tempo Lezione 4 Dalla prima lezione: Obiettivi del calcolo parallelo: a) Risolvere uno stesso problema in minor tempo b) Risolvere un problema piu grande nello stesso tempo Esempio: previsioni meteorologiche

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

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

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. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare

Dettagli

Capitolo 10 - Strutture

Capitolo 10 - Strutture 1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la

Dettagli

Livelli del sottosistema di I/O

Livelli del sottosistema di I/O Input/Output 1 Livelli del sottosistema di I/O Software di I/O di livello utente Software di sistema indipendente dal dispositivo Driver dei dispositivi Gestori delle interruzioni Hardware Modo utente

Dettagli

Corso di Fondamenti di Informatica Classi di istruzioni 2

Corso di Fondamenti di Informatica Classi di istruzioni 2 Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04

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

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

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

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

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin Linguaggio C Tipi predefiniti Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Il concetto di tipo (reprise) Nome che indica

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

Input/Output. Livelli del sottosistema di I/O

Input/Output. Livelli del sottosistema di I/O Input/Output 1 Livelli del sottosistema di I/O Software di I/O di livello utente Software di sistema indipendente dal Di Driver dei didispositivi itii Gestori delle interruzioni Hardware utente kernel

Dettagli

Una interfaccia GA ad alcune routines di ScaLAPACK

Una interfaccia GA ad alcune routines di ScaLAPACK Una interfaccia GA ad alcune routines di ScaLAPACK Giuseppe Vitillaro Dipartimento di Chimica Universita degli Studi di Perugia e-mail: Perugia, 30 Maggio 1996 Global Array (GA) toolkit

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 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

Progetto II: Il linguaggio C e le chiamate di sistema sui processi

Progetto II: Il linguaggio C e le chiamate di sistema sui processi Progetto II: Il linguaggio C e le chiamate di sistema sui processi Scrivere un programma C psstat.c che svolga quanto segue: se invocato senza parametri deve stampare su standard output un istogramma orizzontale

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

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

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1 Applicazioni distribuite e sistemi ad oggetti distribuiti RPC RMI - Web Services 1 Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli

Dettagli

MPI in dettaglio. Chi ha definito MPI. Salvatore Orlando. CALCOLO PARALLELO - S. Orlando. CALCOLO PARALLELO - S. Orlando

MPI in dettaglio. Chi ha definito MPI. Salvatore Orlando. CALCOLO PARALLELO - S. Orlando. CALCOLO PARALLELO - S. Orlando MPI in dettaglio Salvatore Orlando 1 Chi ha definito MPI 2 Il modello Message-Passing Model Ad un processo è tradizionalmente associato con program counter & address space. Processi possono però avere

Dettagli

Programmazione (imperativa)

Programmazione (imperativa) Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00

Dettagli

Analisi Lessicale. File

Analisi Lessicale. File Analisi Lessicale Corso di Linguaggi di Programmazione Stefano Ferilli ferilli@di.uniba.it Università degli Studi di Bari A.A. 2002/2003 File var nome: file of tipo; reset(nome) read(nome, arg,, arg) rewrite(nome)

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

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

Indirizzi e tipi puntatore a

Indirizzi e tipi puntatore a Linguaggio C Indirizzi e tipi puntatore a Università degli Studi di Brescia Prof. Massimiliano Giacomin Indirizzo e tipo puntatore a TIPO Indirizzo NOME Valore Indirizzo 0101011110011001 1101011110011111

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

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

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

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 COMPITI DEL SOTTOSISTEMA DI I/O 1. Nascondere

Dettagli

Linguaggio C e sistema operativo

Linguaggio C e sistema operativo FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C e sistema operativo 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 19 Febbraio 2015 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi e

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 31 Luglio - 4 Agosto 2017

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 31 Luglio - 4 Agosto 2017 Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 31 Luglio - 4 Agosto 2017 www.u4learn.it Alessandro Bruno Introduzione al calcolo parallelo Approcci per il calcolo parallelo Programmazione

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C 12 10 8 INTRODUZIONE 6 4 ALLA PROGRAMMAZIONEColonna 1 Colonna 2 Colonna 3 in linguaggio C 2 0 Riga 1 Riga 2 Riga 3 Riga 4 di Mauro Casula { Scopi del seminario Essere chiaro ed esauriente; Spiegare nei

Dettagli

Prodotto Matrice - Vettore in MPI - III Strategia

Prodotto Matrice - Vettore in MPI - III Strategia Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Prodotto Matrice - Vettore in MPI - III Strategia Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio

Dettagli

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

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

Dettagli

Componenti di un sistema operativo

Componenti di un sistema operativo Componenti di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Componenti di un S.O. Gestione dei processi Gestione della memoria primaria Gestione della memoria secondaria

Dettagli

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

MODELLO AD AMBIENTE GLOBALE

MODELLO 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

Dettagli

Tempo di vita e scope delle variabili

Tempo di vita e scope delle variabili Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli