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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 MPI in dettaglio Salvatore Orlando 1 Chi ha definito MPI 2

2 Il modello Message-Passing Model Ad un processo è tradizionalmente associato con program counter & address space. Processi possono però avere threads multipli (program counters & private stacks) che condividobo un singolo address space Le versioni correnti di MPI supportano la comunicazione tra processi, non tra thread Interprocess communication (message-passing) combina Sincronizzazione Movimento di dati dall address space di un processo (mittente), all address space di un altro processo (destinatario) Process 0 Process 1 Send(data) Receive(data) 3 Operazioni One-Sided di comunicazione MPI-2 permette anche operazioni One-Side tra processi remote memory read & writes Solo un processo deve esplicitamente partecipare. Vantaggio comunicazione e sincronizzazione sono disaccoppiate Process 0 Process 1 Put(data) (memory) (memory) Get(data) 4

3 Un semplice programma MPI #include <mpi.h> #include <stdio.h> int main( int argc, char *argv[] ) { MPI_Init( &argc, &argv ); printf( "Hello, world!\n" ); MPI_Finalize(); return 0; } 5 Compilare un programma MPI Con MPICH possiamo semplicemente compilare programmi in C usando il comando: mpicc È uno script che invoca cc/gcc con i parametri corretti, risolvendo i problemi dovuti INCLUDE (es. mpi.h) LIB (es. mpi.a) Con MPICH è possibile linkare speciali librerie, e instrumentare così il codice per analizzare le prestazioni mpicc o myprog -mpitrace myprog.c 6

4 Eseguire un programma MPI Lo standard MPI-1 non specifica come eseguire un programma MPI In generale, eseguire il programma MPI dipende dalla specifica implementazione della libreria Potrebbe richiedere vari scripts, argomenti, e/o variabili di ambiente Con MPICH si usa mpirun [-np<num>] [-machinefile <nomefile>] <execfile> -np <num> : specifica grado di parallelismo -machinefile <nomefile> : lista di IP address o domain name dei calcolatori del cluster 7 Scoprire a run-time informazioni sull ambiente Ogni processo può avere necessità di chiedere : Quanti processi partecipano in questa computazione? Chi sono io? MPI fornisce funzioni per rispondere a questi quesiti: MPI_Comm_size() restituisce il numero di processi MPI_Comm_rank restituisce il rank, un numero tra 0 e size-1, che identifica il processo chiamante 8

5 Un Hello.c migliore #include <mpi.h> #include <stdio.h> int main( int argc, char *argv[] ) { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "I am %d of %d\n", rank, size ); MPI_Finalize(); return 0; } 9 Comunicatori: Gruppi e Contesti I processi MPI possono essere organizzati in gruppi Ogni messaggio è inviato in un gruppo, ma all interno di uno specifico contesto Il msg deve anche essere ricevuto nello stesso contesto Gruppo e Contesto insieme formano Un comunicatore Nota: per lo stesso gruppo potremmo così avere comunicatori diversi Un processo è identificato dal suo rank nel gruppo associato con un comunicatore MPI_COMM_WORLD Comunicatore di default 10

6 MPI Datatypes I dati in un messaggio da inviare/ricevere descritti da una tripla: address, count, datatype Un MPI datatype è definito ricorsivamente come: Predefinito, corrispondente a un datatype di base del linguaggio ospite (es., MPI_INT, MPI_DOUBLE_PRECISION) Un array contiguo di MPI datatypes Un block di datatypes con stride Un struttura arbitraria di datatypes Ad esempio, è possibile costruire datatypes come Un array di coppie (int, float) Una riga di una matrice, memorizzata però per colonne (stride fisso) 11 Perché sono necessari i Datatypes? Un implementazione MPI può così permettere comunicazioni tra processi allocati su macchine eterogenee, i cui datatype elementari hanno diversa rappresentazione in memoria hanno lunghezze differenti Con i datatype si possono specificare layout application-oriented dei dati Questo riduce copie memory-to-memory nell implementazione 12

7 MPI Tags I messaggi sono inviati accompagnati con un tag intero user-defined Questo serve al processo ricevente per identificare il messaggio I messaggi possono essere selezionati dal ricevente specificando il tag I messaggi possono non essere scelti dal ricevente sulla base del tag Specificando MPI_ANY_TAG come tag nella receive. I tag sono considerati come message type in alcuni sistemi messagepassing, ma non in MPI MPI li chiama semplicemente tag per evitare confusione con i datatypes. 13 Tag e Contesti E noto che la separazione dei messaggi da adottare per la comunicazione all interno di specifico contesti può essere realizzata usando i tag, ma Questo richiede che eventuali librerie usate siano a conoscenza dei tag usati dal programma chiamante o da altre librerie In ogni caso, avremmo problemi con i wild card per i tag (ANY_TAG) I contesti in MPI sono differenti dai tag Non sono permessi wild card Sono allocati dinamicamente e univocamente dal sistema quando ad esempio una libraria stabilisce di usare un comunicatore per i suoi scopi Usa MPI_Comm_split per creare nuovi contesti (communicatori) 14

8 Uso dei comunicatori: vantaggi Subroutine Sub1() e Sub2(), corrispondenti a librerie MPI diverse Nota: subroutine chiamate da tutti i processi (codice SPMD) Funzionamento corretto: 15 Uso dei comunicatori: vantaggi Usando lo stesso comunicatore, a causa dell uso di ANY_TAG, il funzionamento potrebbe essere scorretto: 16

9 MPI Basic (Blocking) Send MPI_SEND (start, count, datatype, dest, tag, comm) Comunicazione standard, Asincrona/Buffered/Bloccante Il buffer del messaggio è descritto da start, count, datatype Il processo destinazione è specificato da dest, che è il rank del processo target nel comunicatore specificato da comm. Quando la funzione ritorna, i dati sono già stati consegnati al sistema e il buffer può essere riusato Il messaggio può non essere stato ricevuto dal processo ricevente 17 MPI Basic (Blocking) Receive MPI_RECV(start, count, datatype, source, tag, comm, status) Comunicazione standard, Asincrona/Buffered/Bloccante Attende fino a quando un matching message (rispetto a comm, source e tag) è ricevuto dal sistema, e copiato nel buffer utente (start, count, datatype) source è il rank nel comunicatore specificato da comm, oppure MPI_ANY_SOURCE. tag è il tag atteso e associato al messaggio, oppure MPI_ANY_TAG status è un parametro in output, e conterrà informazioni sulla comunicazione Si possono ricevere meno di count occorrenze di un datatype, ma riceverne di più è un errore 18

10 Status Status è una struttura dati allocata nello user s program, che conterrà informazioni sulla receive appena conclusa: int recvd_tag, recvd_from, recvd_count; MPI_Status status; MPI_Recv(..., MPI_ANY_SOURCE, MPI_ANY_TAG,..., &status ) recvd_tag = status.mpi_tag; recvd_from = status.mpi_source; MPI_Get_count( &status, datatype, &recvd_count ); 19 Calcolo PI greco Equivalentemente possiamo calcolare 1 1 y x ARCTAN(1) = π/4 ARCTAN(0) = 0 x 1 E noto che l area del cerchio è r 2 π, per cui l area del semicerchio con r=1 è: π/4 Curva cerchio (teorema di Pitagora): x 2 + y 2 = 1 y = (1-x 2 ) L area del semicerchio corrisponde al calcolo del 1seguente integrale: X Possiamo calcolarlo numericamente. Maggiore è il numero di intervalli in cui suddividiamo [0..1], maggiore è la precisione del calcolo dell integrale 20

11 Esempio: PI greco in C (1) #include <mpi.h> #include <math.h> int main(int argc, char *argv[]) { int done = 0, n, myid, numprocs, i, rc; double PI25DT = ; double mypi, pi, h, sum, x, a; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid == 0) { printf("enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); 21 Esempio: PI greco in C (2) } if (n!= 0) { h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double) i - 0.5); sum += 4.0 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT)); } MPI_Finalize(); return 0; 22

12 Codici unsafe e deadlock Anche usando primitive asincrone (bufferizzate), si può generare un deadlock: Supporre di voler inviare un messaggio molto grande dal processo 0 al processo 1 se la memoria di sistema (buffer) sul ricevente è insufficiente, la send deve attendere che l utente fornisca spazio di memoria (attraverso una receive) Possibile deadlock: Process 0 Process 1 Send(1) Recv(1) Send(0) Recv(0) Questo codice è chiamato unsafe, poiché il suo funzionamento dipende dalla disponibiltà di buffer di sistema 23 Alcune soluzioni al problema del codice unsafe Ordinare le operazioni più attentamente: Process 0 Send(1) Recv(1) Process 1 Recv(0) Send(0) Usare primitive non-blocking: Process 0 Isend(1) Irecv(1) Waitall Process 1 Isend(0) Irecv(0) Waitall 24

13 Estensioni a MPI(1): MPI-2 Oltre alle comunicazioni one-sided Dynamic Process Management Startup dinamico dei processi Determina dinamicamente le connessioni I/O parallelo Bindings anche per C++/ Fortran-90 problemi legati a linguaggi diversi e alla rappresentazione dei tipi semplici e strutturati 25 MPICH MPICH è un implementazione portabile di MPI 1 con alcune nuove primitive MPI-2 Funziona su MPPs, Grid, cluster, e NOWs o Clumps eterogenei Per compilare, decomprimere in /usr/local configure make bisogna poi sistemare PATH e MANPATH Per compilare, eseguire e analizzare le prestazioni mpicc o myprog myprog.c mpirun -np 10 myprog 26

14 MPICH (compilazione) Esistono quindi diversi script per compilare e linkare (librerie e path relativi, path degli include sono specificati dagli script) C (mpicc) C++ (mpicc) Fortran 77 (mpif77) Fortran 90 Script di compilazione permettono diverse opzioni: -mpilog Costruisce eseguibile che genera MPE log files. -mpitrace Costruisce eseguibile che genera tracce di esecuzione -mpianim Costruisce eseguibile che genera animazione real-time -show Mostra solo i comandi che verranno eseguiti Possibile linkare altre librerie mpicc -o foo foo.o -lm 27 MPICH (esecuzione) mpirun [mpirun_options...] <progname> [options...] Alcune mpirun_options: -machinefile <machine-file name> Take the list of possible machines to run on from the file <machine-file name>. This is a list of all available machines; use -np <np> to request a specific number of machines. -np <np> specify the number of processors to run on -nolocal don t run on the local machine -t Testing - do not actually run, just print what would be executed In un cluster di workstation i processi di un job parallelo sono fatti partire individualmente su ciascuna workstation Se il parametro machifile non è specificato, mpich cerca una lista di default: machines.<arch> nella directory di istallazione (es.: /usr/local/mpich2.2.21). 28

15 MPICH (machinefile) E possibile costruire un file delle workstation (machinefile) personale Esempio di machinefile: mercury venus earth mars:2 jupiter:4 che specifica l esistenza di 3 macchine con processore singolo (mercury, venus, and earth), una macchina con 2 processori (mars), e una con 15 (jupiter). Eseguendo: mpirun -np 9... con il file di sopra, verranno creati 1 processo su mercury, venus, e earth 2 su mars 4 su jupiter Se fossero necessari 10 o più processi, mpirun ripartirebbe dall inizio del file, creando processi aggiuntivi su mercury, venus, ecc. 29 MPICH (machinefile e rsh/ssh) Deve essere possibile lanciare un processo/comando tramite rsh/ssh su ogni macchina compresa nel <machinefile> Senza digitare la password ogni volta Con garanzia di sicurezza rsh Meno sicuro Un host permette il login remoto ad un insieme di utenti@host listati in un file (.rhosts) Quindi il login è permesso sulla base di un IP e di un user name ssh Più sicuro Basato sul meccanismo delle chiavi pubbliche/private L host su cui vogliamo collegarci in remoto (server) deve possedere la chiave pubblica dell utente@host (client) Il client dimostra la propria identità firmando con la propria chiave privata un messaggio challenge Il server verifica il challenge grazie al possesso della relativa chiave pubblica Sicurezza garantita dalla protezione della chiave privata 30

16 rsh Per costruire un cluster composto dalle macchine p0.dsi.unive.it p1.dsi.unive.it p3.dsi.unive.it ponete nella vostra home condivisa il file.rhosts così costruito: p0.dsi.unive.it username p1.dsi.unive.it username p3.dsi.unive.it username Una generica macchina py.dsi.unive.it accetterà l esecuzione locale di una richiesta remota, proveniente dalla macchina px.dsi.unive.it e con utente pippo, solo se nel file.rhosts presente nella home di pippo su py.dsi.unive.it apparirà la riga: px.dsi.unive.it pippo NOTA: con MPICH, è il comando mpirun ad aver bisogno di usare rsh per lo spawn dei vari task del programma SPMD. Quindi, se compiliamo e lanciamo mpirun sempre da px.dsi.unive.it, basterà includere in tutti i file. rhosts del cluster l unica riga di sopra 31 MPICH (machinefile e rsh) Potete controllare la corretta configurazione di rsh e.rhosts, ovvero se dalla una macchina p0 è possibile lanciare job sulla macchina p2 effettuando il comando > rsh p2.dsi.unive.it ls che invoca un ls remoto sulla home directory. MPICH mette anche a disposizione un tool > tstmachines -v -machinefile=<miofile> per controllare il corretto funzionamento di rsh su tutte le workstation del machinefile. 32

17 SSH Sulle macchine del laboratorio, rsh è stato disabilitato In verità, con il meccanismo dei link simbolici, quando si invoca rsh si sta in realtà invocando ssh MPI (ma anche PVM) usano ssh per l esecuzione remota di processi/comandi Usando SSH, il meccanismo di autenticazione senza password non è basato sul file.rhosts è necessario generare la coppia di chiavi privata e pubblica 33 SSH senza password Digitare ssh-keygen -t rsa digitare sempre <Invio> alla richiesta di password, senza inserire nulla In questo modo però la chiave privata non sarà protetta da passphase Questo comando genera in $HOME:/.ssh i file id_rsa (chiave privata) e id_rsa.pub (chiave publica) Copiare il file $HOME:/.ssh/id_rsa.pub in $HOME:/.ssh/authorized_keys Poiché la home è condivisa, basta questo per permettere l invio di comandi remoti tra tutte le macchine del laboratorio Eseguire i test suggeriti per rsh Suggerimento: Conservare in modo sicuro la chiave privata $HOME:/.ssh/id_rsa Ad esempio rimuovendola se necessario 34

18 Alcuni semplici esercizi Compila e esegui il programma cpi dpkg -L mpich (per verificare i file istallati) cp R /usr/share/doc/mpich/examples/pi mpi_examples cd mpi_examples; make cpi Modifica il programma cpi in modo da usare send/receive invece di bcast/reduce Scrivere un programma che invia un messaggio lungo un anello: Processo 0 legge una linea dallo stdin Processo 0 invia la linea a Processo 1, che l invia al Processo 2, etc. L ultimo processi la invia indietro al Processo 0, che lo stampa. Usa MPI_Wtime per prendere i tempi (man MPI_Wtime) Calcola banda di trasmissione e overhead di trasmissione tra 2 processi Ping-pong: il primo processo invia e riceve, il secondo rimbalza i messaggi ricevuti Calcolare con MPI_Wtime il tempo impiegato sul primo processo, dividendo il tempo per il numero Byte trasmessi Cosa succede all aumentare del size dei messaggi? 35

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

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

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

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

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

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

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

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

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

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

Somma di un array di N numeri in MPI

Somma di un array di N numeri in MPI Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Somma di un array di N numeri in MPI Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio Candidati

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

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

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

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

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

Esercizi MPI. Algoritmi e Calcolo Parallelo. Daniele Loiacono

Esercizi MPI. Algoritmi e Calcolo Parallelo. Daniele Loiacono Esercizi MPI Algoritmi e Calcolo Parallelo Esercizio 1 2 Implementare in MPI una soluzione parallela del seguente algoritmo per approssimare PI cin >> npoints; count = 0; for(j=0, j

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

Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. gestire gli accessi alle risorse. gestire l eterogeneita

Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. gestire gli accessi alle risorse. gestire l eterogeneita Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito gestire gli accessi alle risorse gestire l eterogeneita gestire la dinamicita http://icl.cs.utk.edu/netsolve A. Murli

Dettagli

Esercizi Calcolo Parallelo Algoritmi, Strutture Dati e Calcolo Parallelo. Daniele Loiacono

Esercizi Calcolo Parallelo Algoritmi, Strutture Dati e Calcolo Parallelo. Daniele Loiacono Esercizi Calcolo Parallelo Algoritmi, Strutture Dati e Calcolo Parallelo MPI Esercizio 1 3 Implementare in MPI una soluzione parallela del seguente algoritmo per approssimare PI scanf( %d,npoints); count

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

Si digita login e password e si clicca su accedi. Si apre la finestra di collegamento:

Si digita login e password e si clicca su accedi. Si apre la finestra di collegamento: Corso di Laurea Specialistica Ingegneria Informatica Laboratorio di Calcolo Parallelo Prof. Alessandra d Alessio GUIDA AL LABORATORIO DI CALCOLO PARALLELO Il progetto SCoPE (www.scope.unina.it) ha messo

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

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

Linguaggio di Riferimento: C

Linguaggio di Riferimento: C Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall

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

File System Unix. Generalità

File System Unix. Generalità File System Unix Generalità File System: Caratteristiche Struttura gerarchica Files senza struttura (byte strems) Protezione da accessi non autorizzati Semplicità di struttura "On a UNIX system, everything

Dettagli

Introduzione Generalitá sull uso degli array Array allocabili Funzioni intrinseche. Array. Fondamenti di Informatica T (A-K) AA

Introduzione Generalitá sull uso degli array Array allocabili Funzioni intrinseche. Array. Fondamenti di Informatica T (A-K) AA allocabili AA 2013-2014 allocabili Introduzione Un array rappresenta un gruppo di variabili (o costanti) dello stesso tipo, a cui si fa riferimento con un singolo nome. Si definisce anche vettore un array

Dettagli

Passare argomenti al programma

Passare argomenti al programma Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2 1 Editor di testi Sono disponibili numerosi

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

AA 2016/2017. MPI: concetti di base

AA 2016/2017. MPI: concetti di base Corso di Laurea Magistrale in Informatica Dipartimento di Scienze Fisiche, Informatiche e Matematiche Titolare del corso: prof. Marko Bertogna (marko.bertogna@unimore.it) AA 2016/2017 MPI: concetti di

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

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2008-2009 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2 1 L editor di testi Emacs/XEmacs (opzionale)

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

Titolo presentazione

Titolo presentazione Titolo presentazione Programmazione C: Esercizi su stringhe, funzionisottotitolo di libreria e matrici Milano, XX mese 20XX Informatica ed Elementi di Informatica Medica Agenda Argomenti e valore di ritorno

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

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

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) { JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int

Dettagli

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il

Dettagli

Prodotto Matrice - Vettore in MPI II Strategia

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

Dettagli

Sistemi Operativi (M. Cesati)

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

Dettagli

Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover

Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente la loro esistenza deve essere prevista e dichiarata a priori Questo può rappresentare un problema

Dettagli

Linea di comando. Compilazione. Aprire una shell di DOS tramite:

Linea di comando. Compilazione. Aprire una shell di DOS tramite: Linea di comando Aprire una shell di DOS tramite: Start MS VisualStudio 2005 Visual Studio Tools E una normale shell di DOS con aggiunte al path ed alle variabili d ambiented Digitare cl /? per vedere

Dettagli

Università degli Studi di Napoli Parthenope. Corso di Calcolo Parallelo e Distribuito. Virginia Bellino Matr. 108/1570

Università degli Studi di Napoli Parthenope. Corso di Calcolo Parallelo e Distribuito. Virginia Bellino Matr. 108/1570 Università degli Studi di Napoli Parthenope Corso di Calcolo Parallelo e Distribuito Virginia Bellino Matr. 108/1570 Virginia Bellino Progetto 1 Corso di Calcolo Parallelo e Distribuito 2 Indice Individuazione

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

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

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

Esercitazione 1 la shell

Esercitazione 1 la shell Esercitazione 1 la shell Obiettivi Prendere confidenza con i comandi per la gestione del file system Utilizzare gli strumenti visti a lezione per creare tre semplici script bash File system 1/2 1. Verificare

Dettagli

Dichiarazioni e tipi predefiniti nel linguaggio C

Dichiarazioni e tipi predefiniti nel linguaggio C Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:

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

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

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

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

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

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 4 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Approfondimento su make http://http://capone.mtsu.edu/csdept/facilitiesandresources/make.htm

Dettagli

Uso del terminale in ambiente UNIX

Uso del terminale in ambiente UNIX Uso del terminale in ambiente UNIX Non sempre è disponibile un interfaccia grafica sui computer su cui si lavora In questo caso l interazione con il calcolatore avviene attraverso l interfaccia a riga

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 1 Funzioni per il

Dettagli

ENEA GRID. Corso di introduzione all'uso ed all'amministrazione. Autore: Alessandro Secco alessandro.secco@nice-italy.com

ENEA GRID. Corso di introduzione all'uso ed all'amministrazione. Autore: Alessandro Secco alessandro.secco@nice-italy.com ENEA GRID Corso di introduzione all'uso ed all'amministrazione Autore: Alessandro Secco alessandro.secco@nice-italy.com 1 Lezione 4 Riepilogo lezione 3 LSF: Job environment LSF: Lancio di un job multi-caso

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

Dettagli

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

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

Lo strato di applicazione in Internet

Lo strato di applicazione in Internet Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,

Dettagli

Cenni su LSF. Utilizzo dell Infrastruttura Cresco. Ing. Fiorenzo Ambrosino, PhD DTE-ICT-HPC. Frascati 5 Aprile 2017

Cenni su LSF. Utilizzo dell Infrastruttura Cresco. Ing. Fiorenzo Ambrosino, PhD DTE-ICT-HPC. Frascati 5 Aprile 2017 Cenni su LSF Utilizzo dell Infrastruttura Cresco Ing. Fiorenzo Ambrosino, PhD DTE-ICT-HPC Frascati 5 Aprile 2017 5/4/2017 1 Informazioni utili su CRESCO Comandi Base di LSF Code, sottomissione, monitoring

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

TECN.PROG.SIST.INF. I Socket Roberta Gerboni 2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

Lezione 5: Introduzione alla programmazione in C

Lezione 5: Introduzione alla programmazione in C Lezione 5: Introduzione alla programmazione in C Laboratorio di Elementi di Architettura e Sistemi Operativi 4 Aprile 2012 Introduzione al C C vs. Java Java: linguaggio ad oggetti C: linguaggio procedurale

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

Sistemi Operativi (M. Cesati)

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

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

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

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define Primo passo: il preprocessor Source code Preprocessor Pre-processed source code Compiler Libraries Linker Executable code 1 Il preprocessore Il preprocessore compie delle manipolazioni sul codice del programma.

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

Laboratorio 1. 20/21 febbraio 2019

Laboratorio 1. 20/21 febbraio 2019 Laboratorio 1. 20/21 febbraio 2019 Attivitá Professionalizzante A.A. 2018/19 Premessa Si lavora a coppie, sui PC del laboratorio. Al termine degli esercizi, ogni copia scrive un breve report e me lo invia

Dettagli

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: 1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate

Dettagli

Sistemi Operativi (M. Cesati)

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

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

ENEA GRID. CRESCO: Corso di introduzione. Autore: Alessandro Secco alessandro.secco@nice-italy.com

ENEA GRID. CRESCO: Corso di introduzione. Autore: Alessandro Secco alessandro.secco@nice-italy.com ENEA GRID CRESCO: Corso di introduzione Autore: Alessandro Secco alessandro.secco@nice-italy.com 1 Lezione 1 Introduzione Architettura Connessione Lancio di job Riferimenti 2 Introduzione 3 Introduzione

Dettagli

La connessione ai database MySQL tramite script PHP versione 5.5

La connessione ai database MySQL tramite script PHP versione 5.5 La connessione ai database MySQL tramite script PHP versione 5.5 Php è un linguaggio di scripting che estende le funzionalità del server Web, mentre MySQL è un programma server che si occupa della gestione

Dettagli

Shell BASH. Variabili Redirezione

Shell BASH. Variabili Redirezione Shell BASH Variabili Redirezione Variabili Scrittura/definizione: a=3 (senza spazi) Lettura: ${a} o semplicemente $a Esempi: > a=3 > echo $a 3 > echo $aa > echo ${a}a 3a > a=ciao pippo bash: pippo: command

Dettagli

Sistemi Operativi (M. Cesati)

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

Dettagli

Nozioni Base di Linux

Nozioni Base di Linux Nozioni Base di Linux Shahram Rahatlou http://www.roma1.infn.it/people/rahatlou/labcalc/ Laboratorio di Calcolo Lezione 2 Hardware Sistema Operativo Software Routine e programmi di base per interagire

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

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux caratteristiche

Dettagli

Le direttive del Preprocessore

Le direttive del Preprocessore Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza

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 10 Martedì 7-11-2017 Thread a livello kernel Modello da uno a uno La

Dettagli

Laboratorio 1. 15/16 marzo 2018

Laboratorio 1. 15/16 marzo 2018 Laboratorio 1. 15/16 marzo 2018 Attivitá Professionalizzante A.A. 2017/18 Premessa Quando avete finito gli esercizi, inviatemeli in un unico file compresso chiamato lab1 CognomeNome (zip, rar,...), all

Dettagli