DEIS - Università di Bologna - L I A - Laboratorio d'Informatica Avanzata


Principi e Tecniche di Programmazione Concorrente


Contenuti


Il primo capitolo contiene un richiamo ad alcuni argomenti fondamentali cui verrà fatto riferimento nei capitoli successivi. Tali argomenti riguardano le definizioni di algoritmo, programma e processi ed un'introduzione ai meccanismi di astrazione che sono alla base delle moderne tecniche di programmazione. Vengono richiamati, in particolare, i concetti di tipo di dati astratti e di consistenza delle strutture dati.

Il secondo capitolo introduce alle problematiche della programmazione concorrente, definendo i concetti di elaborazione sequenziale e non sequenziale e di decomposizione di un processo non sequenziale in un insieme di processi sequenziali. Vengono, in particolare, definite le diverse modalità di interazione tra processi, l' architettura di una macchina che deve eseguire processi concorrenti ed i meccanismi che definiscono il supporto a tempo di esecuzione dei linguaggi di programmazione concorrente.

Nel terzo capitolo sono discusse le varie notazioni linguistiche proposte per esprimere la concorrenza, confrontandole criticamente ed illustrando la loro realizzazione in termini dei meccanismi primitivi offerti dal supporto a tempo di esecuzione dei linguaggi.

I capitoli quarto e quinto costituiscono la parte centrale del volume e descrivono con sufficiente dettaglio le proprietà dei modelli di interazione tra i processi a memoria comune, orientati alle procedure e a scambio di messaggi. Per ciascun modello sono riportati e confrontati i più noti costrutti linguistici, utilizzando, laddove possibile, lo stesso insieme di esempi, nonché un'analisi delle proprietà dei linguaggi che adottano tali costrutti.

Il sesto capitolo affronta il problema della gestione delle periferiche di ingresso-uscita, mettendo in evidenza i vari tipi di costrutti con i quali il programmatore può specificare le operazioni di trasferimento dati con l'esterno.

Il settimo capitolo introduce il concetto di azione atomica, da utilizzare nella strutturazione di un programma concorrente. Vengono esaminate le proprietà fondamentali di tale concetto, le motivazioni per la sua utilizzazione in un ambiente di processi concorrenti e le varie modalità di realizzazione.

Ogni capitolo termina con un insieme di riferimenti bibliografici che servono per approfondire ulteriormente gli argomenti esaminati.

Il volume contiene infine tre Appendici nelle quali vengono trattati con maggior dettaglio alcuni argomenti già introdotti nei precedenti capitoli.

L'Appendice A presenta la realizzazione di un nucleo di un sistema a processi, con riferimento ad ambienti monoprocessore, multiprocessore e con alcuni cenni alle problematiche introdotte da un ambiente distribuito.

L'Appendice B entra nel dettaglio delle varie soluzioni al problema della mutua esclusione tra processi concorrenti, giungendo a definire i requisiti che tale soluzione deve possedere e mostrando come essi siano soddisfatti dal costrutto basato sui semafori e sulle primitive di sincronizzazione.

L'Appendice C, infine, introduce alla realizzazione del concetto di memoria stabile, intesa come un tipo di memoria le cui informazioni non vengono perdute e non sono alterate a causa di vari tipi di malfunzionamento del sistema. Il concetto di memoria stabile viene utilizzato per la realizzazione delle azioni atomiche.

 


Mail Your Comments to DocMaster

Back to the LIA Home Page Go to the LIA Courses Page

Go to the DEIS Home Page Go to the Alma Mater Home Page