Communicating Sequential Processes (CSP)
|
|
- Franco Bettini
- 5 anni fa
- Visualizzazioni
Transcript
1 Communicating Sequential Processes (CSP) Aniello Murano Università degli Studi di Napoli Federico II LP - Ventesima Lezione Fond. 1 Introduzione al CSP Il Communicating Sequential Proceesses (CSP) è stato inventato nel 1978 da Sir Charles Antony Richard Hoare (anche noto come Tony Hoare o C.A.R. Hoare) Hoare è nato nel Gennaio del 1934 ed è probabilmente meglio conosciuto per aver inventato nel 1960 il Quicksort, (l algoritmo di ordinamento più usato al mondo!!!) e il linguaggio ALGOL 60 Ha ricevuto nel 1980 il Turing Award per i suoi contributi fondamentali alla definizione e alla progettazione di linguaggi di programmazione". 2 1
2 Il CSP Il CSP è un linguaggio formale per descrivere l interazioni di processi concorrenti. Il CSP fa parte di quella teoria matematica della concorrenza nota con il nome di algebra dei processi, o process calculi. Il CSP è stato utilizzato in pratica come uno strumento di specifica e di verifica degli aspetti concorrenti di una notevole varietà di sistemi Le regole di CSP hanno ispirato il linguaggio di programmazione occam (il nome deriva da William of Ockham) oggi largamente utilizzato come linguaggio di programmazione parallela. Tra le recenti estensioni di CSP troviamo JCSP (CSP for Java e Timed CSP che incorpora informazioni temporali per lavorare su sistemi real-time. Un software (free) utilizzato per controllare modelli formali espressi in CSP è FDR2, sviluppato dalla Formal Systems Europe Ltd. ( La ricerca sulla teoria del CSP è tuttora attiva, così come il lavoro di incrementare il campo di applicabilità pratica. 3 Concorrenza/Parallelismo In informatica, la concorrenza concerne la condivisione di risorse tra più computazioni che vengono eseguite sovrapposte nel tempo. L efficienza della concorrenza dipende dalle tecniche utilizzate per coordinare l esecuzione delle computazioni, scambiare i dati, allocare memoria e schedulare i processi nel tempo in modo da minimizzare il tempo e massimizzare i risultati (si veda per esempio la tecnica greedy) I sistemi operativi sono sistemi concorrenti, progettati in modo da operare all infinito, senza la possibilità di terminare in modo inatteso. Ricordiamo che un sistema concorrente è anche nondeterministico, come abbiamo visto per IMPGC 4 2
3 Esempi di Concorrenza/Parallelismo Thread (di execution). I thread rappresentano un modo in cui un processo (programma) si può dividere in più task per essere eseguiti simultaneamente. I mulititread possono essere eseguiti in parallelo su più computer I multitread si dividono in time slicing (un solo processore) e multiprocessing (più processori). I tread sono simili ai processi ma differiscono per il fatto che i pri-mi condividono risorse mentre i secondi sono indipendenti tra loro. Processi Un processo è una esecuzione di una istanza di un programma. Il sistema operativo mantiene i processi separati tra loro ed alloca ad ognuno le risorse richieste in modo che i processi non interferiscano tra loro ed evitare così fallimenti del sistema Un sistema operativo multitasking passa tra processi dando l impressione di una esecuzione simultanea. Comunicazione tra processi: chiamate a procedure remote, messaggi, ect. 5 Primitive di comunicazione Inter-Process Communication (IPC) è un insieme di tecniche utilizzate per lo scambio di dati tra due o più tread di uno o più processi (indispensabile per un corretto funzionamento!!) Le tecniche di IPC si compongono di metodi per La comunicazione tramite variabili (condivisione di memoria) La comunicazione tramite messaggi La sincronizzazione Le chiamate a procedura remote Ci sono molte API (Application Programming Interface) che possono essere usate per IPC Common Object Request Broker Architecture (CORBA); Distributed Computing Environment (DCE); Message Bus (MBUS); anonymous pipes and named pipes; 6 3
4 7 Hoare e Milner individuarono un azione atomica di sincronizzazione, con possibilità di scambio di valori, come la primitiva essenziale per la comunicazione (indipendente dal mezzo usato per la comunicazione) 8 4
5 Un semplice linguaggio:csp Il linguaggio CSP è una architettura parallela caratterizzata da: Scambio di messaggi tra processi Possibilità per i thread di utilizzare memoria condivisa Lo scambio di messaggi avviene tramite Canali I canali permettono: Uno scambio di valori tra processi La sincronizzazione di processi Il numero dei canali è fisso: Non è possibile creare o cancellare un canale durante l esecuzione di un programma. È possibile avere canali dedicati a singoli processi 9 Sintassi di CSP 10 5
6 Composizioni ben fondate Una composizione parallela c 0 k c 1 è ben fondata se c 0 e c 1 non hanno una locazione comune. Un comando è ben fondato se tutti i suoi sottocomandi lo sono. Una restrizione c\α nasconde il canale α in modo che possa essere utilizato solo per comunicazioni interne a c. 11 Semantica di CSP Come per IMPGC, utilizziamo una semantica operazionale basata su singoli passi non interrompibili. Anche per CSP, una configurazione è data da un comando e uno stato o solamente da uno stato. Si consideri allora la seguente configurazione di un comando <α?x;c,σ> Intuitivamente, questa rappresenta un comando che è pronto a ricevere un valore da associare a X tramite una comunicazione sincronizzata lungo il canale α. Questo può avvenire se comando è in parallelo con uno pronto a eseguire un azione complementare di output sul canale α. La relativa semantica deve dunque esprimere questa dipendenza dall ambiente. Questo può essere fatto sfruttando la teoria degli automi. 12 6
7 con Dunque, la semantica ammette transizioni del tipo Che esprime il fatto che il comando α?x;c 0 può ricevere un valore n e memorizzarlo nella locazione X modificando lo stato 13 Comunicazioni interne Si consideri la seguente transizione In questo caso la transizione non viene etichettata poiché si tratta di comunicazione interna, senza effetti sull ambiente. Esistono anche transizione composte (dovute per esempio all utilizzo di un canale α da più processi): Questo cattura la possibilità che il primo componente riceve un valore dall ambiente piuttosto che dal secondo componente Presentiamo adesso la semantica formale come estensione di quella di IMPGC dove ammettiamo comunicazione nelle guardie, e l uso del comando vuoto E per uniformare le configurazioni 14 7
8 Alcune semplificazioni nelle regole Nelle regole di derivazione che daremo nelle prossime slide, utilizzeremo le seguenti semplificazioni: Una configurazione σ può essere anche vista come una coppia <c, σ> dove c è il comando nullo (equivalente dello skip). Utilizziamo il valore λ per indicare che una transizione può essere etichettata con α?x oppure <α!x oppure anche senza etichetta 15 Regole per i comandi (1) Come per IMP Se non ottengo un valore dall ambiente su α non eseguo il comado e non cambio lo stato Nota che c 0 può essere il comando nullo (contiene le 2 corr. regole diimpgc) Devo valutare l espressione a per eseguire il comando e mandare un numero all ambiente gc per essere valutato ed eseguito può aver bisogno di λ λ perché c 0 o c 1 possono essere comandi di input/output 16 8
9 Regole per i comandi (2) Caso in cui i due comandi comunicano tra loro su α. Il caso in cui c 0 e c 1 sono comandi senza input e output è nelle due regole precedenti con λ vuoto 17 Regole per i comandi con guardia 18 9
10 Dining philosophers problem In informatica, il problema dei filosofi a cena è un classico problema di sincronizzazione di multi-processi 5 filosofi sono seduti ad un tavolo davanti ad un piatto di spaghetti con una forchetta ad ogni lato (dunque, 5 filosofi, 5 piatti e 5 forchette). Si supponga che ciascuna filosofo ha bisogno di due forchette per mangiare e che esse siano prese una alla volta. Ciascun filosofo, dopo aver preso entrambe le forchette, mangia per un po, poi posa le forchette e comincia a pensare e poi ciclicamente riprende le forchette. Il problema è scrivere un algoritmo che evita starvation e deadlock. Un Deadlock si può avere se tutti i filosofi hanno una sola forchetta e nessuno ne può prendere un altra (catena di deadlock) Una Starvation si può verificare se un filosofo non può, prendere entrambe le forchette. La non disponibilità di forchette è analoga alla mancanza di risorse per un programma eseguito su un computer, dovuta alla scarsità di risorse. Una chiara situazione di concorrenza
11 Verifying the philosophers' problem 21 Esempio pag.331 Winskel 22 11
12 Prossima lezione Rivedere i comandi di CSP dettagliatamente. Ripartire dalla sintassi, e per ogni comando dare prima una spiegazione intuitiva e poi una valutazione formale. Fare un esercizio sul linguaggio di Dijkstra come l equivalenza di due comandi Fare un esempio su CSP e/o l esempio a pag. 331 di Winskel
Nondeterminismo e Parallelismo (Concorrenza)
Nondeterminismo e Parallelismo (Concorrenza) Aniello Murano Università degli Studi di Napoli Federico II 1 Prefazione In questa lezione introduciamo l ultimo argomento del corso: Sistemi e Programmi Nondeterministici
Semantica Operazionale del linguaggio imperativo IMP
Aniello Murano Semantica Operazionale del linguaggio imperativo IMP 2 Lezione n. Parole chiave: Sem. Operazionale Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Introduzione
Elenco sezioni libro di testo Ed. 5 Tra parentesi le corrispondenze per l'ed. 7.
Elenco sezioni libro di testo Ed. 5 Tra parentesi le corrispondenze per l'ed. 7. Modulo 1 - Architettura del calcolatore Unità 1 - Architettura e funzionamento dei sistemi di elaborazione Lezione 1 - Macchina
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 14 Maggio 2013 Programmazione concorrente:
MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari
A: CONOSCENZA E CAPACITA DI COMPRENSIONE Conoscere e saper comprendere i fondamenti della matematica discreta (insiemi, interi, relazioni e funzioni, calcolo combinatorio) Conoscere e saper comprendere
Corso di Informatica
Corso di Informatica Modulo T5 1 I thread 1 Prerequisiti Concetto di processo Interazione diretta Interazione indiretta Mutua esclusione Produttore-consumatore Schedulatore 2 1 Introduzione Generalmente,
Prof. Pagani Corrado PROGRAMMAZIONE CONCORRENTE
Prof. Pagani Corrado PROGRAMMAZIONE CONCORRENTE INTRODUZIONE La programmazione imperativa si basa su un modello di esecuzione sequenziale Tale modello si applica a un singolo programma eseguito da un singolo
Valutazione Lazy. Prefazione alla lezione
Valutazione Lazy Aniello Murano Università degli Studi di Napoli Federico II 1 Prefazione alla lezione Nella lezione precedente abbiamo introdotto i linguaggi (funzionali) con tipi di ordine superiore.
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A Sistemi Operativi M. Prof. Anna Ciampolini
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A. 2013-2014 Sistemi Operativi M Prof. Anna Ciampolini http://www.lia.deis.unibo.it/courses/som1314 Obiettivi del Corso Completamento
2. Cenni di sistemi operativi
2. Cenni di sistemi operativi Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Contiene slides dal corso «Sistemi Operativi» dei prof. Gherardi/Scandurra dell Università degli studi di Bergamo
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
Introduzione ai thread
Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine
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
Linguaggi di programmazione. Paradigmi di programmazione
Linguaggi di programmazione Paradigmi di programmazione Linguaggi: un po di storia Albori: Macchine a programma memorizzato, Programmi come dati Linguaggio Macchina Assemblatore FORTRAN (calcolo scientifico)
LABORATORIO di Reti di Calcolatori
LABORATORIO di Reti di Calcolatori Architetture client-server 1 of 12 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server, Pearson Ed.,
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
Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente
Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Informatica 3 Lezione 6 - Modulo 1 La gestione delle eccezioni Il controllo
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
CAPITOLO 18 LA PROGRAMMAZIONE CONCORRENTE
CAPITOLO 18 LA PROGRAMMAZIONE CONCORRENTE Origini della CONCORRENZA Competizione tra processi per ottenere (e condividere) le Risorse: CPU, memoria, canali di I/O, files, ecc... Necessità di comunicazione
«Sciente e Tecnologie dei Beni Culturali»
6 Informatica CdS in «Sciente e Tecnologie dei Beni Culturali» AA 2014-2015 Mini-sito dell insegnamento: http://www.unife.it/scienze/beni.culturali/insegnamenti/informatica Prof. Giorgio Poletti giorgio.poletti@unife.it
o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori
Programma del corso o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori o Elementi di Programmazione Algoritmi e programmi o Algoritmo
Informatica Generale 07 - Sistemi Operativi:Gestione dei processi
Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Cosa vedremo: Esecuzione di un programma Concetto di processo Interruzioni Sistemi monotasking e multitasking Time-sharing Tabella dei
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
Parole note, nuovi significati: linguaggio, determinismo e infinito
Parole note, nuovi significati: linguaggio, determinismo e infinito Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario Filosofico
Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione
Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3
ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)
1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano
Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd
Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di
Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1
Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 23 27 novembre 2013
! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !
Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 24 26 maggio 2015!
Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010.
Programmazione II Lezione 3 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/10/2010 1/35 Programmazione II Lezione 3 26/10/2010 Sommario 1 2 Semantica 2/35 Programmazione II Lezione 3 26/10/2010 Parte
Fondamenti dei linguaggi di programmazione
Fondamenti dei linguaggi di programmazione Aniello Murano Università degli Studi di Napoli Federico II 1 Informazioni Generali sul Corso Esame: Fondamenti dei linguaggi di programmazione (nel vecchio ordinamento:
Prof. Pagani Corrado PROGRAMMAZIONE CONCORRENTE
Prof. Pagani Corrado PROGRAMMAZIONE CONCORRENTE INTRODUZIONE La programmazione imperativa si basa su un modello di esecuzione sequenziale Tale modello si applica a un singolo programma eseguito da un singolo
Logica per la Programmazione
Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,
Java: un linguaggio per applicazioni di rete
Java: un linguaggio per applicazioni di rete Moreno Falaschi Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena March 3, 2014 1 Caratteristiche di Java (SUN) Linguaggio
REGISTRI D'ESAME CODICE ESAME CORSO DI LAUREA NOME DEL CORSO LAUREA CFU
REGISTRI D'ESAME Con "" si intende la Triennale del Nuovo Ordinamento (Legge 270) Con "" si intende la Specialistica di due anni del Nuovo Ordinamento (Legge 270) CODICE ESAME CORSO DI LAUREA NOME DEL
Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione
Informatica 3 Informatica 3 LEZIONE 1: Introduzione Lezione 1- Modulo 1 Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Introduzione al corso Politecnico di Milano - Prof. Sara Comai
02/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1)
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1) Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
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 8 Martedì 8-11-2016 1 Algoritmi di scheduling basati sulle priorità Assegnano
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
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A Sistemi Operativi M. Prof. Anna Ciampolini
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A. 2015-2016 Sistemi Operativi M Prof. Anna Ciampolini http://lia.disi.unibo.it/courses/som Obiettivi del Corso Completamento dello
Laboratorio di Informatica
Laboratorio di Informatica Metodologie, Tecnologie e Strumenti per l automatizzazione dell informazione Corso di Laurea «Scienze dell Educazione» AA 2010-2011 Prof. Giorgio Poletti giorgio.poletti@unife.it
Communicating Sequential Processes. Scopo. Applicazioni. Communicating Sequential Processes
Communicating Sequential Processes CSP 1 Communicating Sequential Processes CSP è una notazione per descrivere sistemi in cui agenti operano in parallelo e comunicano scambiandosi messaggi Ottimo strumento
Web-based Simulations of Multi-agent Systems
Web-based Simulations of Multi-agent Systems AgentSimJs Cancemi Damiano Sistemi Distribuiti 2 - W82000075 Introduzione AgentSimJs è una soluzione basata su JavaScript, che permette di eseguire simulazioni
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,
LAUREA TRIENNALE IN INFORMATICA - DM 270/04
LAUREA TRIENNALE IN INFORMATICA - DM 270/04 SC01123195 ALGEBRA E GEOMETRIA 10:00 MAT/02, MAT/03 2010 SC02100080 ALGORITMI E STRUTTURE DATI 08:00 INF/01 2009 SC02100179 ANALISI MATEMATICA 10:00 MAT/05,
28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi
INTRODUZIONE AI LINGUAGGI DI PROGRAMMAZIONE Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi I LINGUAGGI DI PRIMA GENERAZIONE rientrano in questa categoria i vari linguaggi macchina proprietari, decisamente
2. Finalità generali previste dalle indicazioni nazionali
2. Finalità generali previste dalle indicazioni nazionali Le Linee Guida ministeriali per i curricola del Secondo biennio dell Istituto Tecnico Tecnologico, Indirizzo Informatica e Telecomunicazioni -
Concetti Introduttivi. Il Computer
Concetti Introduttivi Il Computer Introduzione Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere Messaggio Tutto ciò che porta
Elementi di Informatica A. A. 2016/2017
Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Cos'è un Sistema Operativo?
Logica per la Programmazione
Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,
Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl
Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare
Problemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
Tecniche di prova per induzione
Aniello Murano Tecniche di prova per induzione 3 Lezione n. Parole chiave: Induzione Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Riassunto delle lezioni precedenti
Fondamenti di Programmazione
Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) gianfranco.rossi@unipr.it Indice 1 Introduzione
Il sistema operativo
Il sistema operativo Il sistema operativo E uno strato software che opera direttamente sull hardware Isola gli utenti dai dettagli dell hardware Mono-utente o multi-utente E organizzato a strati: Architettura
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
Sistemi Operativi L-S
Universita` di Bologna Corso di Laurea Specialistica in Ing. Informatica A. A. 2007-2008 Sistemi Operativi L-S Prof. Anna Ciampolini [L-Z] http://www.lia.deis.unibo.it/courses/sistopls0708 Obiettivi del
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
Formali. Corso di Automi e Linguaggi. Gennaio- Marzo Docente: Francesca Rossi,
Corso di Automi e Linguaggi Formali Gennaio- Marzo 2004 Docente: Francesca Rossi, frossi@math.unipd.it Corso di Automi e Linguaggi Formali Gennaio-Marzo 2004 p.1/30 Dati del corso Orario: Lunedi 15:50-17:30,
Sommario Codifica dei dati Macchina Astratta Definizioni Esempi
Sommario Codifica dei dati Macchina Astratta Definizioni Esempi 1 2 Codifica dei dati È possibile introdurre la teoria della computabilità facendo riferimento ad algoritmi che elaborano numeri naturali
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A Sistemi Operativi M. Prof. Anna Ciampolini
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A. 2011-2012 Sistemi Operativi M Prof. Anna Ciampolini http://www.lia.deis.unibo.it/courses/som1112 Obiettivi del Corso Completare
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
Applicazioni distribuite e sistemi ad oggetti distribuiti
Applicazioni distribuite e sistemi ad oggetti distribuiti Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli di comunicazione asincroni
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à
Anno Scolastico 2018/2019 SETTE ANTONIO LOSITO ANTONIO TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TEL.
Anno Scolastico 2018/2019 PROGRAMMA DIDATTICO CONSUNTIVO CLASSE 4EI Docenti SETTE ANTONIO LOSITO ANTONIO Disciplina TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TEL. Unità di lavoro 1: Moduli
Struttura dei Sistemi Operativi
STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A Sistemi Operativi M. Prof. Anna Ciampolini
Universita` di Bologna Corso di Laurea Magistrale in Ing. Informatica A.A. 2009-2010 Sistemi Operativi M Prof. Anna Ciampolini http://www.lia.deis.unibo.it/courses/sistopm0910 Obiettivi del Corso Completare
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
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
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
Corso di Informatica
Corso di Informatica Modulo T5 B1-Programmazione multithreading 1 Prerequisiti Schedulazione Attesa indefinita Lo stallo Tecnica round-robin 2 1 Introduzione La programmazione concorrente consente di chiedere
Sistemi Operativi Appello del 10 luglio 2017 Versione Compito A Cognome e nome: Matricola: Posto:
Non è consentita la consultazione di libri o appunti in forma cartacea o elettronica, né l'uso di palmari e cellulari. Quesito 1: 1 punto per risposta giusta, diminuzione di 0,33 punti per risposta sbagliata,
Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale
Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili
Corso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 7 Lezione 7 1 Algoritmi e loro proprietà Efficienza rispetto al tempo Efficienza rispetto allo spazio Efficienza degli algoritmi Una volta determinato un algoritmo
Il sistema operativo
Il sistema operativo Vito Perrone Corso di Informatica A per Gestionali Indice Architettura Gestione dei processi Gestione della memoria centrale Driver Gestione dei file 2 1 Il sistema operativo E uno
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2009-10 Dai flow-chart ai linguaggi... Abbiamo imparato ad usare uno strumento formale i flowchart per
Teoria dell Informazione
Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro
Il Sistema Operativo Concorrenza e Grafi di precedenza
ISTITUTO TECNICO SECONDO BIENNIO GIORGIO PORCU www.thegiorgio.it Sommario Elaborazione concorrente Elaborazione sequenziale Elaborazione concorrente Elaborazione parallela Grafi di Precedenza Grafi di
Linguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
Turbo ASM. Estendiamo le ASM Basic con
Estendiamo le ASM Basic con Turbo ASM operazioni che permettono la composizione sequenziale e l iterazione di macchine sottomacchine parametrizzate che possono richiamare se stesse in maniera ricorsiva
Introduzione al funzionamento di un calcolatore elettronico
1 / 21 Introduzione al funzionamento di un calcolatore elettronico Natascia Piroso 23 settembre 2009 2 / 21 Sommario Che cos è un calcolatore? 1 Che cos è un calcolatore? Definizioni preliminari Il calcolatore
Sistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli
TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE
TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE Riccardo Dondi Dipartimento di Scienze dei linguaggi, della comunicazione e degli studi culturali Università degli Studi di Bergamo Informazione sul corso
Algoritmi e Complessità
Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it a.a. 2002-03 e.merelli
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,
Linguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
ASM multi-agente sincrone
ASM multi-agente sincrone Una ASM multi-agente sincrona è definita come un insieme di agenti che eseguono la loro ASM in parallelo. Questi sono sincronizzati utilizzando un clock di sistema globale Semanticamente
DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di
Informatica 3 V anno
Informatica 3 V anno Teoria degli automi Introduzione agli automi Un particolare tipo di sistemi dinamici è rappresentato dagli automi. L automa è un modello di calcolo molto semplice da utilizzare, adatto
Linguaggi di Programmazione
Linguaggi di Programmazione!paradigmi linguistici, costrutti!semantica!implementazione, strutture a tempo di esecuzione 1 Linguaggi di programmazione e astrazione! i linguaggi di programmazione ad alto
Corso di Informatica
Corso di Informatica Modulo T1 2-Iterazione 1 Prerequisiti Salto condizionato Salto incondizionato Espressione logica 2 1 Introduzione In alcuni casi si presenta la necessità di eseguire un ciclo, ossia
Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio
Appunti di informatica Lezione 5 anno accademico 2015-2016 Mario Verdicchio L algoritmo di Euclide per l MCD Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. dividere il maggiore
C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI
Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2
Il concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN
Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI Fortran Cobol