SlideShare a Scribd company logo
Edsger WybeDijkstra
Rotterdam, 11 maggio 1930 – Nuenen, 6 agosto 2002
Biografia
• Madre matematico, padre chimico.
• Istruzione:
• Gymnasium Erasmianum a Rotterdam.
• Università di Leiden - Matematica e Fisica Teorica.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
Oh, no! Impara le formule e ricordati sempre che
sei sulla strada sbagliata se hai bisogno di
piu’ di cinquerighe.
Brechtje Cornelia Kluyver
… il suo stile sarà sempre caratterizzato da
SEMPLICITA’ ed ELEGANZA (qualità e correttezza)…
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
EDSAC
E’ il terzo computer della storia
a programma memorizzato
basato sull’ architettura di von Neumann.
Note tecniche:
• Composto da 3.000 valvole termoioniche;
• Input « schede perforate »;
• Output « telescrivente »;
• Superfice di 20 m2;
• Capacita di elaborazione 650 [istruzioni/secondo];
Settembre 1951 Cambridge - Corso programmazione
(Electronic Delay Storage Automatic Calculator)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
1952…
• Assunzione presso il dipartimento di calcolo al Centro Matematico di
Amsterdam.
• Contributo nella progettazione di:
• ARRA
• ARRA II
• FERTA
• ARMAC
Collaborazione con:
 Scholten
 Loopstra
 Blaauw
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
Nel 1955 ho preso la decisione di non diventare un fisico teorico, ma un
programmatore [...] perche’ la programmazione rappresentava una sfida
intellettuale piu’grande.
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
Nessuno di noi era stato formato come matematico[...] credo fermamente che
questo quadro,checomprendeva unasolida formazione in 5 linguestraniere,
abbiaavutouna grandeinfluenza sul modo incuiabbiamolavorato.
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
ARRA I…
• Non funzionò mai correttamente…
alla sua presentazione si ruppe e da li non fu più riparato.
Note tecniche:
• 4 anni di sviluppo
• Composto da 1.200 relè connessi alla macchina
• Tempo di switch inaffidabile
• Input « nastro di carta perforata »
• Output « telescrivente »
• Memoria a tamburo
• 3 registri gestivano parole da 30 bit
• Assenza del Clock (segnale di « end-operation »)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
ARRA II…
Una copia della macchina (FERTA) fu realizzata con qualche piccola
modifica per la Fokker (avionica).
Note tecniche:
• Non fu un evoluzione di ARRA I, ma una
macchina innovativa
• Introduzione del Clock di sistema
• Input « nastro di carta perforata »
• Output « telescrivente »
• Memoria a tamburo
(1024 parole – 2 istruzione per ogni parola)
• 2 registri
• Routine di controllo introdotte da Dijkstra
(inaffidabilità delle memorie a tamburo)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
ARMAC…
• Successore ARRA II (50 volte più veloce)
• Ultima macchina del centro –
– poi società spin-off (Electrologica Nv)
• Coesistenza di memoria a tamburo e memoria
magnetica
• Registro di Jump (implementazione di subroutine
di «salto»)
• Completa divisione tra:
Progettazione e
Costruzione
Programmazione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
La prima cosa che abbiamofatto èstata quella di scrivere un manuale diprogrammazione
per la prossima macchina, compresa la sua completa descrizione funzionale […] Questo
documento e’ servito da contratto tra me e loro: essi sapevano quello che avrebbero
dovutocostruireeiosapevoquellocheavrei dovutosviluppare.
…basi dell’analisi delle specifiche funzionali del Software…
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Edsger Dijkstra
“A note on two problemsin connectionwith graphs”
(1959)
Consideriamo n nodi, alcuni o tutti accoppiati, i quali sono connessi
da un ramo. Ogni ramo ha una lunghezza nota. Ci limitiamo al caso
in cui esiste almeno un percorso tra due nodi qualsiasi.
• Algoritmo dell’albero ricoprente minimo (o Minimum Spanning
Tree, MST).
• L’algoritmo dei cammini minimi (o Shortest Paths, SP), passato
poi alla storia come « L’ Algoritmo di Dijkstra ».
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Algoritmodell’alberoricoprenteminimo
Problema 1: Costruire l’albero della lunghezza minima totale tra n nodi.
Definiamo
• « I » rami definitivamente assegnati all’albero in costruzione.
• « II » rami tra i quali il prossimo ramo sarà aggiunto a I.
• « III » rami scartati o non ancora considerati.
• « A » nodi connessi dai rami I.
• « B » nodi rimanenti tali che uno ed uno solo ramo II porterà ad essi.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Algoritmodell’alberoricoprenteminimo
Poniamo:
• Arbitrariamente un solo nodo come unico nodo A.
• Tutti i rami che terminano nel nodo A come rami di tipo II.
Step 1: Il più breve ramo II è promosso a I, quindi il nodo collegato è promosso ad A.
Step 2: Consideriamo i rami che vanno dal nuovo A ad ogni B. Se il ramo considerato è
più breve del rispettivo II, allora il primo rimpiazza il secondo (che viene scartato),
altrimenti viene scartato.
Ripetere: fino a quando non abbiamo più rami di tipo II e i nodi di tipo B.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
III
III
IIIIII
III
IIIIII
III
III
III
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
II
III
IIIIII
III
IIIIII
II
II
II
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
II
I
III
IIIIII
III
IIIIII
II
II
III
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
II
I
III
IIIIII
II
IIIII
I
III
III
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
I
I
II
III
II
II
IIIIII
I
III
III
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
I
I
III
III
III
IIIII
I
III
III
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
I
I
III
II
III
IIIII
I
III
III
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
I
I
III
II
III
IIII
I
III
III
Algoritmodeicammini minimi
Problema 2: Trovare il cammino della lunghezza minima totale tra due nodi dati P e Q,
costruito in modo incrementale.
Definiamo
• « A » nodi per i quali il cammino minimo da P è noto.
• « B » nodi connessi ad almeno un A, tra i quali il prossimo nodo sarà aggiunto ad A.
• « C » nodi rimanenti.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Algoritmodeicammini minimi
Definiamo:
• « I » rami che si trovano sul cammino minimo tra P e i nodi A.
• « II » rami tali che uno ed un solo ramo II porterà a ciascun B, tra i quali il prossimo
ramo sarà aggiunto a I.
• « III » rami scartati o non ancora considerati.
Poniamo:
• Tutti i nodi come C, tutti i rami come III.
• P come unico nodo A.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Algoritmodeicammini minimi
Step 1:
• Ogni ramo che collega il nuovo A ad un B viene confrontato con i rispettivi II: se il
cammino è minore allora il primo sostituisce il secondo, altrimenti viene scartato.
• I nodi C collegati al nuovo A vengono promossi a B, i rispettivi rami a II.
Step 2:
• Ogni B può essere connesso a P in un solo modo: usando rami I ed un solo ramo II.
Il nodo B alla distanza minima da P è promosso ad A, il corrispondente ramo a I.
Ripetere: Fino a quando il nodo Q è promosso a tipo A.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
P
Q
14
15
7
9
11
10
9
6
2
G
H
E
F
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
III
III
III
III
III
III
III
III
P
Q
14
15
7
9
11
10
9
6
2
G
H
E
F
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
II
III
III
II
III
II
III
III
III
P
Q
14
15
7
9
11
10
9
6
2
G
H
E
F
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
III
III
III
II
I
III
III
II
P
Q
14
15
7
9
11
10
9
6
2
G
H
E
F
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
III
II
III
I
I
III
II
III
P
Q
14
15
7
9
11
10
9
6
2
G
H
E
F
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
II
I
III
I
I
III
III
III
P
Q
14
15
7
9
11
10
9
6
2
E
F
G
H
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
III
I
I
III
I
I
III
III
III
Linguaggio «ALGOL60» & «Compilatore»
 Sviluppato congiuntamente da un comitato di informatici statunitense ed europeo
o Per quasi 30 anni considerato lo standard nella rappresentazione di algoritmi.
o Blocchi di istruzione delimitati da BEGIN END;
o Introdusse il concetto di Stack;
o Celebre la frase di Tony Hoare (inventore del quick sort);
« Qui c’è un linguaggio cosi avanzato che non è solo un
miglioramento rispetto ai suoi predecessori, ma anche rispetto ai suoi
successori »
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
Abbiamo scritto il compilatore in doppia copia, pienamente
consapevoliche stavamofacendola storia.
 Apporto significativo di due grandi menti:
 John Backus
 Peter Naur
Edsger Dijkstra
Grammatiche
BNF
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Recursiveprogramming”
Definiamo:
• Subroutine (o funzione) un particolare costrutto sintattico che permette
di raggruppare, all'interno di programma « main » , una sequenza
di istruzioni in un unico blocco espletando così una determinata
operazione o elaborazione sui dati del programma, in modo tale che a
partire da determinati input restituisca determinati output.
«Stack, vettore e mutua esclusione» attribuiti a Dijkstra dall’Oxford Dictionary
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
(1960)
Considerazione iniziale:
• Ogni subroutine ha il proprio spazio di memoria privato.
Conseguenze:
• Spreco di memoria: Lo spazio allocato per tutte le subroutine è
generalmente maggiore di quello di cui hanno simultaneamente bisogno.
• Terminazione incorretta: impossibilità di chiamare una subroutine
mentre una o più precedenti attivazioni della stessa non sono ancora
terminate, senza perdere la possibilità di terminare correttamente in seguito.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Recursiveprogramming”
(1960)
Stack
Idea: memorizzare una sequenza di unità informative, che cresce e decresce
da una sola estremità. Quando un’unità non interessa più viene rimossa.
n locazioni di memoria consecutiveStack pointer: quantità amministrativa
che punta alla prima locazione di
memoria libera
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Analogia conle espressioni algebriche
Associando parentesi tonde alla operazioni di push e pop, si ottiene una
struttura nidificata corretta di parentesi tonde.
Lo stack è usato per memorizzare i risultati intermedi delle operazioni
elementari richieste nella valutazione di un’espressione algebrica.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Stackreservations
All’interno di una subroutine distinguiamo:
• Parametri: argomenti della funzione.
• Variabili locali: introdotte dalla subroutine.
• Risultati intermedi: analoghi a quelli del main.
L’esecuzione di una subroutine richiede:
• Link: indirizzo dove salvare i dati dell’unità aritmetica nello stack.
• Return address: indirizzo per il ripristino dei dati dallo stack all’unità aritmetica.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
Le subroutine devono comparire solo una volta nella memoria, ma possono
avere piu’ « incarnazioni » da un punto di vista dinamico: l’attivazione « piu’
interna » provoca la stessa porzione di testo in una parte superiore dello stack.
Quindi la subroutine e’ sviluppata in un elemento definito che puo’ essere usato
in maniera completamente ricorsiva.
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• 1962 – nominato prof. di matematica presso l’Università
Technische Hogeschool di Eindhoven, (corso di Analisi numerica).
• Forma un piccolo gruppo di studenti (scienziati del computer)
che insieme a lui daranno i natali ad una serie di progetti
riguardanti:
 Operating system T.H.E.
 GoTo Statement & Programmazione strutturata
 Risoluzione di problematiche relative alla
« programmazione concorrente ».
 Introduzione a concetto di semaforo.
“Hierarchical orderingof sequentialprocesses” (1971)
Problema dei 5
filosofi
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• I filosofi condividono un tavolo rotondo con 5 posti.
• Passano la vita pensando e mangiando
Problema
• Gli spaghetti sono difficili da mangiare; un filosofo
per mangiare deve usare due bacchette (risorse)
Conseguenza
• Due filosofi consecutivi, non potranno mai mangiare
contemporaneamente
Begin
think;
eat;
end
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Semafori (Mutex)
Sezione critica
• è una porzione di codice che accede a
una risorsa condivisa, tra più processi in
esecuzione in un sistema concorrente
• Variabile intera non negativa «di scopo
speciale» ovvero garantire l’accesso in
mutua esclusione alla sezione critica
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• Problema: «è necessario caratterizzare un processo in attesa»
• Soluzione: «tratteremo la variabile « s » non come un semplice valore integer,
ma con un significato particolare… quello di semaforo… e per far ciò essa
dovrà essere sempre non-negativa»
• Dijkstra definisce due operazioni atomiche complementari:
 "prolagen" (testare & decrementare) P(s) : s : = s-1
 "verhogen" (incrementare) V(S) : s : = s+1
1 0
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• Ciò impone che:
• Sempre eseguita => incremento
• Se « S = 0 » => fase di verifica
 operazione rigettata (vincolo violato).
 processo in esecuzione passa in stato wait e viene posto in un buffer (di
processi relativi allo specifico semaforo) nell’attesa che un altro processo
esegua una V su di esso e risvegli un «dormiente» (FIFO) che potrà cosi
completarsi.
• Se « S = 1 » => decremento
V
P
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Rischio
«deadlock»
repeat
P(bacchetta[i]);
P(bacchetta[i+1 mod 5]);
eat();
V(bacchetta[i]);
V(bacchetta[i+1 mod 5]);
think();
until false;
Soluzione
«banale»
« Se tutti i filosofi avranno fame contemporaneamente, essi prenderanno la
forchetta alla propria sinistra… e nell’attesa che qualcuno lasci la
forchetta… moriranno di fame… »
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Soluzione « strutture condivise »
• state [5] Vettore dello stato di ciascun filosofo
(valori possibili: PENSA {0}, AFFAMATO {1}, MANGIA{2})
• Mutex = 1 Semaforo per mutua esclusione in Sezione critica
- inizializzato a 1 - ( libero )
• prisem[5] = 0 Vettore di semafori mutex (uno per ogni risorsa -
forchetta-) inizializzato a 0 ( occupato )
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
while (TRUE) {
think();
take_forks(i);
eat();
put_forks(i);
}
Soluzione « definitiva »
Se le forchette non sono
libere si blocca
Segnala che le forchette
sono libere
Ogni filosofo [i] esegue questo pezzo di codice « concorrentemente »
con gli altri filosofi per tutta la durata della sua vita
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
{
P (mutex);
state[i] = AFFAMATO;
test(i);
V (mutex);
P (prisem[i]);
}
« take_fork(i) »
L’ i-esimo filosofo
segnala di essere affamato
L’i-esimo filosofo verifica se ha la
disponibilità delle due forchette
L’ i-esimo filosofo si blocca se le
forchette non sono libere; egli è
affamato ma deve aspettare che l’
(i-1)-esimo o (i+1)-esimo finisca
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
{
if (state[i] == AFFAMATO &&
state[(i+5-1) mod 5] != MANGIA &&
state[(i + 1) mod 5)] != MANGIA)
state[i] = MANGIA;
V(prisem[i]);
}
« test (i) »
sem[i] va a 1 solo se l’ i-esimo
filosofo può mangiare; altrimenti
esso si blocca dopo la test(i) nella
take_forks(i)
Forchetta a SX dell’
i-esimo filosofo
L’ i-esimo filosofo può mangiare
Forchetta a DX dell’
i-esimo filosofo
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
P (mutex);
state[i] = PENSA;
test ((i + 1) mod 5);
test ((i + 5 - 1) mod 5);
V (mutex);
« put_forks(i) »
Esso deve quindi allertare i vicini di
posto (DX e SX) che le sue forchette
sono libere
Se il filosofo i-esimo decide di
smettere di mangiare e tornare a
pensare
Se i filosofi DX e/o SX sono affamati (e quindi in attesa sul relativo semaforo
della risorsa ove hanno invocato la P in precedenza) e le loro forchette sono
libere, allora vengono sbloccati dalla test
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• L’ algoritmo di Dijkstra « I 5 filosofi » risolve quindi 2 problematiche
critiche nella programmazione concorrente:
Il deadlock che può verificarsi se ciascuno dei filosofi tiene in mano una
forchetta senza mai riuscire a prendere l'altra
Come??? Con questo algoritmo, un filosofo prende le forchette solo se
sono entrambe libere…
La starvation che può verificarsi indipendentemente dal deadlock se uno dei
filosofi non riesce mai a prendere entrambe le forchette.
Come??? Utilizzando come meccanismo di mutua esclusione le code di
attesa, assicurando cosi un equo accesso alle risorse
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
SistemaOperativo<<THE >>
• 1° SO a strati della storia (6 ma in realtà solo una convenzione progettuale,
poiché tutte le parti del sistema venivano alla fine collegate insieme in un unico
programma oggetto).
• Sistema di tipo Batch
• Multi-programming System: processi concorrenti sequenziali cooperavano
mediante l’impiego di semafori per la sincronizzazione.
• Utilizzo di un algoritmo di schedulazione della CPU basato su priorità,
che venivano ricalcolate ogni 2 secondi ed erano inversamente proporzionali al
tempo in cui la CPU era stata usata recentemente (negli ultimi 8-10 secondi).
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
SistemaOperativo<<THE >>
SistemaOperativo<<THE >>
SistemaOperativo<<THE >>
SistemaOperativo<<THE
>>
SistemaOperativo<<THE
>>
<< Go to statement considered harmful
1968>>
<< Notes on Structured Programming
1969 >>
Problema Soluzione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
La qualità dei programmi e’ una funzione decrescente della densità
di dichiarazioni GOTO […] sono sempre piu’ convinto che la struttura in
questione debba essere abolita da tutti i linguaggi di programmazione ad alto
livello.
EdsgerDijkstra
…The go to statement as it stands is just too primitive, it is too
much an invitation to make a mess of one's program…
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• Un qualunque algoritmo può
essere implementato in codice
sorgente, pseudocodice o
diagramma di flusso,
utilizzando tre sole strutture
dette strutture di controllo:
I. la sequenza;
II. la selezione;
III. il ciclo (iterazione);
• Applicare ricorsiva ad istruzioni elementari (ad es. di istruzioni eseguibili con il
modello di base della macchina di Turing).
Teorema di Böhm-Jacopini
 Operazioni I/O
 Operazioni di
Assegnazione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
COMPUTAZIONE
• « Dimensionamento » in termini di
quantità di informazioni ed operazioni
coinvolte.
EFFICACIA
• « Organizzazione » delle risorse HW.
MASSIMA RESA
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
(1969)
“
”
Non si puo’ considerare la programmazione come la minimizzazione del
costo di una performance. L’arte di programmare e’ l’arte di organizzare
la complessità, di gestire ilcaos bastardo nelmodo piùefficacepossibile.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
EdsgerDijkstra
PROGRAMMAZIONE
• Costrutti e diagrammi di flusso:
• If-Then-Else;
• Case Of;
• While-Do;
• Repeat-Until;
• (In)affidabilità del Testing.
• « Linguaggio ad alto livello » ed astrazione dall’hardware sottostante.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
(1969)
CORRETTEZZA DI UN PROGRAMMA
• Programma ha senso solo durante l’esecuzione, un teorema ha senso di per sé.
• Programmazione ben strutturata attraverso successive scomposizioni.
dimostrazione di correttezza senza ricorrere a dispendioso processo intellettuale
Induzione per enumerazione Principio di induzione Astrazione
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
(1969)
“
”
Il programma e la prova di correttezza andrebbero sviluppati in parallelo.
Inizialmente ci si chiede quale struttura dovrebbe avere la dimostrazione, poi si
costruisce un programma per soddisfare i requisiti della stessa, infine lo si usa in
senso euristico. In questo modo il programma risulta corretto per costruzione.
Edsger Dijkstra
• Utilizzo di strutture ben conosciute e/o familiari.
• Scelta di programmi intellettualmente gestibili (soluzione algoritmica).
• Lunghezza delle dimostrazioni: a « misura d’uomo ».
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• I grandi sistemi devono essere costruiti partendo da molti piccoli componenti;
• Ogni componente deve essere definito solo dalla sua interfaccia e non dalla sua
implementazione;
• La progettazione dovrebbe iniziare dalla “separazione degli interessi”, cioè
separando i diversi aspetti del problema e concentrando l’attenzione su
ciascuno di essi;
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Notes on structured programming”
(1969)Filosofia
Algoritmodelbanchiere
“Een algorithme ter voorkoming van de dodelijke omarming” (EWD-108)
• Indica se un sistema, in cui operano processi concorrenti su
istanze di risorse disponibili, si troverebbe in uno stato sicuro o
meno, nel caso soddisfacesse una specifica richiesta di risorse da
parte di un determinato processo evitando una situazione di
deadlock.
• Il deadlock (o stallo) è una situazione in cui due o più processi si
bloccano a vicenda, aspettando che uno esegua una certa azione.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
…
Clienti Processi
……
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• Fissata una situazione di allocazione di k-istanze di
m-risorse ad n-processi al tempo « t0 »
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• Il processo P1 richiede l’allocazione di risorse (1,0,2)
• Ricavo il vettore Necessità (Max - Assegnate)
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
R ≤ N
R ≤ D
Simulazione
allocazione
risorse per Pj
D = D – R
A = A + R
N = N – R
Verifica:
Stato
SICURO
Assegnazione
effettiva delle
risorse
D = D – R
A = A + R
N = N – R
• Pj deve attendere.
• Ripristino vecchio
stato di allocazione
risorse
ERRORE.
Superato
Max n
richieste
• Pj deve
attendere.
• Risorse non
disponibili
si
si
sino
no
no
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Sicuro
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“Simulazione”
• Il processo P1 richiede l’allocazione di risorse (1,0,2)
STATO SICURO
• Concetto introdotto da Dijkstra tra il 1965 e 1966 quando sviluppò il suo
sistema operativo multiprogrammabile THE.
• E’ uno stato in cui è possibile allocare tutte le risorse richieste
da un processo senza che quest'ultimo comporti
un deadlock con un altro processo.
• Osservazioni:
 Uno stato sicuro non implica che tutte le allocazioni di risorse avverranno con
successo, MA solo che esiste almeno un modo sicuro per allocare tutte le risorse.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
<P1>
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
<P1>
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
<P1 – P3>
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
<P1 – P3 – P4>
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
<P1 – P3 – P4 – P0>
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Valutazione SICUREZZA
<P1 – P3 – P4 – P0 – P2>
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
• L’esecuzione dell’algoritmo di sicurezza mostra che la
sequenza < P1, P3, P4, P0, P2 >
soddisfa i requisiti di sicurezza.
• La Richiesta (1,0,2) può essere
soddisfatta senza rischiare un deadlock.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
… Oggi …
• Difficile applicazione
• costoso in termini economici.
• allocazione delle risorse non deterministica (concetto richiesto dall’Algoritmo
del Banchiere).
• la maggior parte dei S.O. non considera il problema di eventuali deadlock, in
quanto evento raro, data l'abbondanza delle risorse a disposizione.
• oggigiorno la gestione dei deadlock è sicuramente più critica nei database che
non nei sistemi operativi.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
L’induzione matematica puo’ portare ad argomentazioni molto compatte ed
efficaci – in breve: Belle! – e, quando riconosciamo la battaglia contro il
caos, il disordine e l’indomita complessita’, come una delle principali
vocazionidell’informatica,dobbiamoammettere che…
Edsger Dijkstra
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
BeautyisourBusiness
“The humble programmer” – Turing Award (1972)
La nostra metodologia di programmazione migliorerà se:
• Avremo apprezzamento della sua tremenda difficoltà.
• Utilizzeremo linguaggi di programmazione modesti ma
eleganti.
• Rispetteremo le intrinseche limitazioni della mente umana.
avvicinarsi alla programmazione UMILMENTE
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
A.C.M. – Association for Computing Machinery
«…unoceano tra me edilmio capo…»
• Ingresso nel mondo dell’industria (ricercatore presso la Burroughs
Corporation) – il grosso del lavoro nel suo studio a casa (Olanda).
• Fonda l’ETAC noto come il « Club del martedì pomeriggio ».
• Periodo florido per gli articoli.
• Forte attaccamento al mondo dell’ Università.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
“
”
Ventotto anni fa (1959) ho scritto EWD 0 […] dopo che ebbi mischiato le pagine tra i
manoscritti per la seconda volta, decisi che sarebbe stato meglio mettere fine alla
confusione e li numerai (Ewd0, Ewd1, Ewd3…).
Questo è ilmodo incui e’ iniziata.
Edsger Dijkstra
Le relazioni EWD
Un informale ma efficace veicolo di diffusione delle idee
Scritti con la macchina da scrivere o con la penna stilografica
L’ultimo (Ewd1318) risale all’ aprile 2002
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
UniversitàdelTexas–Austin–
• Cattedra di Informatica in cui ripercorre tutti gli argomenti
affrontati nella sua vita.
• La sua semplicità si nota anche dal suo stile di insegnamento:
tutto alla lavagna, senza proiettore e senza seguire un libro di
testo.
• Fonda l’ETAC noto come il « Club del martedì pomeriggio ».
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Conclusioni
• Dijkstra lavorò tutta la vita alla professionalizzazione
accademica della programmazione ed all’autonomia
dell’informatica come scienza.
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
Computer inteso come strumento
In Memorium Edsger W. Dijkstra
« Semplicità,bellezza ed eloquenza sonostate le sue caratteristiche
distintive, e la sua insistenzasenza compromessi sull’eleganzanella
programmazione e sullamatematica e’ statauna fonte d’ispirazioneper
migliaia »
A.C.M. – Association for Computing Machinery
Grazie per la cortese attenzione…
Presentazione a cura di Nava Giovanni & Semperboni Cristian
Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014

More Related Content

Similar to Tributo a Edsger Wybe Dijkstra

Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Luigi Francesco Cerfeda
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
Marcello Missiroli
 
09 Il computer come calcolatore - 3
09 Il computer come calcolatore - 309 Il computer come calcolatore - 3
09 Il computer come calcolatore - 3
Federico Gobbo
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Pier Luca Lanzi
 
Laboratorio di Informatica - Lezione 3 (Classe IV)
Laboratorio di Informatica - Lezione 3 (Classe IV)Laboratorio di Informatica - Lezione 3 (Classe IV)
Laboratorio di Informatica - Lezione 3 (Classe IV)
informaticaOriani
 
4 Livello Ip Parte3 Bw
4 Livello Ip Parte3 Bw4 Livello Ip Parte3 Bw
4 Livello Ip Parte3 BwMajong DevJfu
 
Introduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoIntroduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: Arduino
Stefano Varano
 
Lezione 1 Uniba i linguaggi del Web, un'introduzione
Lezione 1 Uniba i linguaggi del Web, un'introduzioneLezione 1 Uniba i linguaggi del Web, un'introduzione
Lezione 1 Uniba i linguaggi del Web, un'introduzionePaolo Lattanzio
 
Edsger W. Dijkstra - Flipped Classroom
Edsger W. Dijkstra - Flipped ClassroomEdsger W. Dijkstra - Flipped Classroom
Edsger W. Dijkstra - Flipped Classroom
Antonio De Piano
 
ArduSiPM maker faire 2015 Rome
ArduSiPM maker faire 2015 RomeArduSiPM maker faire 2015 Rome
ArduSiPM maker faire 2015 Rome
Valerio Bocci
 

Similar to Tributo a Edsger Wybe Dijkstra (10)

Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
 
09 Il computer come calcolatore - 3
09 Il computer come calcolatore - 309 Il computer come calcolatore - 3
09 Il computer come calcolatore - 3
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
 
Laboratorio di Informatica - Lezione 3 (Classe IV)
Laboratorio di Informatica - Lezione 3 (Classe IV)Laboratorio di Informatica - Lezione 3 (Classe IV)
Laboratorio di Informatica - Lezione 3 (Classe IV)
 
4 Livello Ip Parte3 Bw
4 Livello Ip Parte3 Bw4 Livello Ip Parte3 Bw
4 Livello Ip Parte3 Bw
 
Introduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoIntroduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: Arduino
 
Lezione 1 Uniba i linguaggi del Web, un'introduzione
Lezione 1 Uniba i linguaggi del Web, un'introduzioneLezione 1 Uniba i linguaggi del Web, un'introduzione
Lezione 1 Uniba i linguaggi del Web, un'introduzione
 
Edsger W. Dijkstra - Flipped Classroom
Edsger W. Dijkstra - Flipped ClassroomEdsger W. Dijkstra - Flipped Classroom
Edsger W. Dijkstra - Flipped Classroom
 
ArduSiPM maker faire 2015 Rome
ArduSiPM maker faire 2015 RomeArduSiPM maker faire 2015 Rome
ArduSiPM maker faire 2015 Rome
 

Tributo a Edsger Wybe Dijkstra

  • 1. Edsger WybeDijkstra Rotterdam, 11 maggio 1930 – Nuenen, 6 agosto 2002
  • 2. Biografia • Madre matematico, padre chimico. • Istruzione: • Gymnasium Erasmianum a Rotterdam. • Università di Leiden - Matematica e Fisica Teorica. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 3. “ ” Oh, no! Impara le formule e ricordati sempre che sei sulla strada sbagliata se hai bisogno di piu’ di cinquerighe. Brechtje Cornelia Kluyver … il suo stile sarà sempre caratterizzato da SEMPLICITA’ ed ELEGANZA (qualità e correttezza)… Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 4. EDSAC E’ il terzo computer della storia a programma memorizzato basato sull’ architettura di von Neumann. Note tecniche: • Composto da 3.000 valvole termoioniche; • Input « schede perforate »; • Output « telescrivente »; • Superfice di 20 m2; • Capacita di elaborazione 650 [istruzioni/secondo]; Settembre 1951 Cambridge - Corso programmazione (Electronic Delay Storage Automatic Calculator) Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 5. 1952… • Assunzione presso il dipartimento di calcolo al Centro Matematico di Amsterdam. • Contributo nella progettazione di: • ARRA • ARRA II • FERTA • ARMAC Collaborazione con:  Scholten  Loopstra  Blaauw Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 6. “ ” Nel 1955 ho preso la decisione di non diventare un fisico teorico, ma un programmatore [...] perche’ la programmazione rappresentava una sfida intellettuale piu’grande. Edsger Dijkstra Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 7. “ ” Nessuno di noi era stato formato come matematico[...] credo fermamente che questo quadro,checomprendeva unasolida formazione in 5 linguestraniere, abbiaavutouna grandeinfluenza sul modo incuiabbiamolavorato. Edsger Dijkstra Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 8. ARRA I… • Non funzionò mai correttamente… alla sua presentazione si ruppe e da li non fu più riparato. Note tecniche: • 4 anni di sviluppo • Composto da 1.200 relè connessi alla macchina • Tempo di switch inaffidabile • Input « nastro di carta perforata » • Output « telescrivente » • Memoria a tamburo • 3 registri gestivano parole da 30 bit • Assenza del Clock (segnale di « end-operation ») Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 9. ARRA II… Una copia della macchina (FERTA) fu realizzata con qualche piccola modifica per la Fokker (avionica). Note tecniche: • Non fu un evoluzione di ARRA I, ma una macchina innovativa • Introduzione del Clock di sistema • Input « nastro di carta perforata » • Output « telescrivente » • Memoria a tamburo (1024 parole – 2 istruzione per ogni parola) • 2 registri • Routine di controllo introdotte da Dijkstra (inaffidabilità delle memorie a tamburo) Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 10. ARMAC… • Successore ARRA II (50 volte più veloce) • Ultima macchina del centro – – poi società spin-off (Electrologica Nv) • Coesistenza di memoria a tamburo e memoria magnetica • Registro di Jump (implementazione di subroutine di «salto») • Completa divisione tra: Progettazione e Costruzione Programmazione Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 11. “ ” La prima cosa che abbiamofatto èstata quella di scrivere un manuale diprogrammazione per la prossima macchina, compresa la sua completa descrizione funzionale […] Questo documento e’ servito da contratto tra me e loro: essi sapevano quello che avrebbero dovutocostruireeiosapevoquellocheavrei dovutosviluppare. …basi dell’analisi delle specifiche funzionali del Software… Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 Edsger Dijkstra
  • 12. “A note on two problemsin connectionwith graphs” (1959) Consideriamo n nodi, alcuni o tutti accoppiati, i quali sono connessi da un ramo. Ogni ramo ha una lunghezza nota. Ci limitiamo al caso in cui esiste almeno un percorso tra due nodi qualsiasi. • Algoritmo dell’albero ricoprente minimo (o Minimum Spanning Tree, MST). • L’algoritmo dei cammini minimi (o Shortest Paths, SP), passato poi alla storia come « L’ Algoritmo di Dijkstra ». Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 13. Algoritmodell’alberoricoprenteminimo Problema 1: Costruire l’albero della lunghezza minima totale tra n nodi. Definiamo • « I » rami definitivamente assegnati all’albero in costruzione. • « II » rami tra i quali il prossimo ramo sarà aggiunto a I. • « III » rami scartati o non ancora considerati. • « A » nodi connessi dai rami I. • « B » nodi rimanenti tali che uno ed uno solo ramo II porterà ad essi. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 14. Algoritmodell’alberoricoprenteminimo Poniamo: • Arbitrariamente un solo nodo come unico nodo A. • Tutti i rami che terminano nel nodo A come rami di tipo II. Step 1: Il più breve ramo II è promosso a I, quindi il nodo collegato è promosso ad A. Step 2: Consideriamo i rami che vanno dal nuovo A ad ogni B. Se il ramo considerato è più breve del rispettivo II, allora il primo rimpiazza il secondo (che viene scartato), altrimenti viene scartato. Ripetere: fino a quando non abbiamo più rami di tipo II e i nodi di tipo B. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 15. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III III III IIIIII III IIIIII III III III
  • 16. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III II III IIIIII III IIIIII II II II
  • 17. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 II I III IIIIII III IIIIII II II III
  • 18. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 II I III IIIIII II IIIII I III III
  • 19. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 I I II III II II IIIIII I III III
  • 20. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 I I III III III IIIII I III III
  • 21. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 I I III II III IIIII I III III
  • 22. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 I I III II III IIII I III III
  • 23. Algoritmodeicammini minimi Problema 2: Trovare il cammino della lunghezza minima totale tra due nodi dati P e Q, costruito in modo incrementale. Definiamo • « A » nodi per i quali il cammino minimo da P è noto. • « B » nodi connessi ad almeno un A, tra i quali il prossimo nodo sarà aggiunto ad A. • « C » nodi rimanenti. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 24. Algoritmodeicammini minimi Definiamo: • « I » rami che si trovano sul cammino minimo tra P e i nodi A. • « II » rami tali che uno ed un solo ramo II porterà a ciascun B, tra i quali il prossimo ramo sarà aggiunto a I. • « III » rami scartati o non ancora considerati. Poniamo: • Tutti i nodi come C, tutti i rami come III. • P come unico nodo A. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 25. Algoritmodeicammini minimi Step 1: • Ogni ramo che collega il nuovo A ad un B viene confrontato con i rispettivi II: se il cammino è minore allora il primo sostituisce il secondo, altrimenti viene scartato. • I nodi C collegati al nuovo A vengono promossi a B, i rispettivi rami a II. Step 2: • Ogni B può essere connesso a P in un solo modo: usando rami I ed un solo ramo II. Il nodo B alla distanza minima da P è promosso ad A, il corrispondente ramo a I. Ripetere: Fino a quando il nodo Q è promosso a tipo A. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 26. P Q 14 15 7 9 11 10 9 6 2 G H E F Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III III III III III III III III III
  • 27. P Q 14 15 7 9 11 10 9 6 2 G H E F Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 II III III II III II III III III
  • 28. P Q 14 15 7 9 11 10 9 6 2 G H E F Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III III III III II I III III II
  • 29. P Q 14 15 7 9 11 10 9 6 2 G H E F Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III III II III I I III II III
  • 30. P Q 14 15 7 9 11 10 9 6 2 G H E F Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III II I III I I III III III
  • 31. P Q 14 15 7 9 11 10 9 6 2 E F G H Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 III I I III I I III III III
  • 32. Linguaggio «ALGOL60» & «Compilatore»  Sviluppato congiuntamente da un comitato di informatici statunitense ed europeo o Per quasi 30 anni considerato lo standard nella rappresentazione di algoritmi. o Blocchi di istruzione delimitati da BEGIN END; o Introdusse il concetto di Stack; o Celebre la frase di Tony Hoare (inventore del quick sort); « Qui c’è un linguaggio cosi avanzato che non è solo un miglioramento rispetto ai suoi predecessori, ma anche rispetto ai suoi successori » Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 33. “ ” Abbiamo scritto il compilatore in doppia copia, pienamente consapevoliche stavamofacendola storia.  Apporto significativo di due grandi menti:  John Backus  Peter Naur Edsger Dijkstra Grammatiche BNF Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 34. “Recursiveprogramming” Definiamo: • Subroutine (o funzione) un particolare costrutto sintattico che permette di raggruppare, all'interno di programma « main » , una sequenza di istruzioni in un unico blocco espletando così una determinata operazione o elaborazione sui dati del programma, in modo tale che a partire da determinati input restituisca determinati output. «Stack, vettore e mutua esclusione» attribuiti a Dijkstra dall’Oxford Dictionary Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 (1960)
  • 35. Considerazione iniziale: • Ogni subroutine ha il proprio spazio di memoria privato. Conseguenze: • Spreco di memoria: Lo spazio allocato per tutte le subroutine è generalmente maggiore di quello di cui hanno simultaneamente bisogno. • Terminazione incorretta: impossibilità di chiamare una subroutine mentre una o più precedenti attivazioni della stessa non sono ancora terminate, senza perdere la possibilità di terminare correttamente in seguito. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 “Recursiveprogramming” (1960)
  • 36. Stack Idea: memorizzare una sequenza di unità informative, che cresce e decresce da una sola estremità. Quando un’unità non interessa più viene rimossa. n locazioni di memoria consecutiveStack pointer: quantità amministrativa che punta alla prima locazione di memoria libera Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 37. Analogia conle espressioni algebriche Associando parentesi tonde alla operazioni di push e pop, si ottiene una struttura nidificata corretta di parentesi tonde. Lo stack è usato per memorizzare i risultati intermedi delle operazioni elementari richieste nella valutazione di un’espressione algebrica. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 38. Stackreservations All’interno di una subroutine distinguiamo: • Parametri: argomenti della funzione. • Variabili locali: introdotte dalla subroutine. • Risultati intermedi: analoghi a quelli del main. L’esecuzione di una subroutine richiede: • Link: indirizzo dove salvare i dati dell’unità aritmetica nello stack. • Return address: indirizzo per il ripristino dei dati dallo stack all’unità aritmetica. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 39. “ ” Le subroutine devono comparire solo una volta nella memoria, ma possono avere piu’ « incarnazioni » da un punto di vista dinamico: l’attivazione « piu’ interna » provoca la stessa porzione di testo in una parte superiore dello stack. Quindi la subroutine e’ sviluppata in un elemento definito che puo’ essere usato in maniera completamente ricorsiva. Edsger Dijkstra Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 40. • 1962 – nominato prof. di matematica presso l’Università Technische Hogeschool di Eindhoven, (corso di Analisi numerica). • Forma un piccolo gruppo di studenti (scienziati del computer) che insieme a lui daranno i natali ad una serie di progetti riguardanti:  Operating system T.H.E.  GoTo Statement & Programmazione strutturata  Risoluzione di problematiche relative alla « programmazione concorrente ».  Introduzione a concetto di semaforo.
  • 41. “Hierarchical orderingof sequentialprocesses” (1971) Problema dei 5 filosofi Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 42. • I filosofi condividono un tavolo rotondo con 5 posti. • Passano la vita pensando e mangiando Problema • Gli spaghetti sono difficili da mangiare; un filosofo per mangiare deve usare due bacchette (risorse) Conseguenza • Due filosofi consecutivi, non potranno mai mangiare contemporaneamente Begin think; eat; end Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 43. Semafori (Mutex) Sezione critica • è una porzione di codice che accede a una risorsa condivisa, tra più processi in esecuzione in un sistema concorrente • Variabile intera non negativa «di scopo speciale» ovvero garantire l’accesso in mutua esclusione alla sezione critica Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 44. • Problema: «è necessario caratterizzare un processo in attesa» • Soluzione: «tratteremo la variabile « s » non come un semplice valore integer, ma con un significato particolare… quello di semaforo… e per far ciò essa dovrà essere sempre non-negativa» • Dijkstra definisce due operazioni atomiche complementari:  "prolagen" (testare & decrementare) P(s) : s : = s-1  "verhogen" (incrementare) V(S) : s : = s+1 1 0 Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 45. • Ciò impone che: • Sempre eseguita => incremento • Se « S = 0 » => fase di verifica  operazione rigettata (vincolo violato).  processo in esecuzione passa in stato wait e viene posto in un buffer (di processi relativi allo specifico semaforo) nell’attesa che un altro processo esegua una V su di esso e risvegli un «dormiente» (FIFO) che potrà cosi completarsi. • Se « S = 1 » => decremento V P Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 46. Rischio «deadlock» repeat P(bacchetta[i]); P(bacchetta[i+1 mod 5]); eat(); V(bacchetta[i]); V(bacchetta[i+1 mod 5]); think(); until false; Soluzione «banale» « Se tutti i filosofi avranno fame contemporaneamente, essi prenderanno la forchetta alla propria sinistra… e nell’attesa che qualcuno lasci la forchetta… moriranno di fame… » Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 47. Soluzione « strutture condivise » • state [5] Vettore dello stato di ciascun filosofo (valori possibili: PENSA {0}, AFFAMATO {1}, MANGIA{2}) • Mutex = 1 Semaforo per mutua esclusione in Sezione critica - inizializzato a 1 - ( libero ) • prisem[5] = 0 Vettore di semafori mutex (uno per ogni risorsa - forchetta-) inizializzato a 0 ( occupato ) Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 48. while (TRUE) { think(); take_forks(i); eat(); put_forks(i); } Soluzione « definitiva » Se le forchette non sono libere si blocca Segnala che le forchette sono libere Ogni filosofo [i] esegue questo pezzo di codice « concorrentemente » con gli altri filosofi per tutta la durata della sua vita Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 49. { P (mutex); state[i] = AFFAMATO; test(i); V (mutex); P (prisem[i]); } « take_fork(i) » L’ i-esimo filosofo segnala di essere affamato L’i-esimo filosofo verifica se ha la disponibilità delle due forchette L’ i-esimo filosofo si blocca se le forchette non sono libere; egli è affamato ma deve aspettare che l’ (i-1)-esimo o (i+1)-esimo finisca Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 50. { if (state[i] == AFFAMATO && state[(i+5-1) mod 5] != MANGIA && state[(i + 1) mod 5)] != MANGIA) state[i] = MANGIA; V(prisem[i]); } « test (i) » sem[i] va a 1 solo se l’ i-esimo filosofo può mangiare; altrimenti esso si blocca dopo la test(i) nella take_forks(i) Forchetta a SX dell’ i-esimo filosofo L’ i-esimo filosofo può mangiare Forchetta a DX dell’ i-esimo filosofo Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 51. P (mutex); state[i] = PENSA; test ((i + 1) mod 5); test ((i + 5 - 1) mod 5); V (mutex); « put_forks(i) » Esso deve quindi allertare i vicini di posto (DX e SX) che le sue forchette sono libere Se il filosofo i-esimo decide di smettere di mangiare e tornare a pensare Se i filosofi DX e/o SX sono affamati (e quindi in attesa sul relativo semaforo della risorsa ove hanno invocato la P in precedenza) e le loro forchette sono libere, allora vengono sbloccati dalla test Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 52. • L’ algoritmo di Dijkstra « I 5 filosofi » risolve quindi 2 problematiche critiche nella programmazione concorrente: Il deadlock che può verificarsi se ciascuno dei filosofi tiene in mano una forchetta senza mai riuscire a prendere l'altra Come??? Con questo algoritmo, un filosofo prende le forchette solo se sono entrambe libere… La starvation che può verificarsi indipendentemente dal deadlock se uno dei filosofi non riesce mai a prendere entrambe le forchette. Come??? Utilizzando come meccanismo di mutua esclusione le code di attesa, assicurando cosi un equo accesso alle risorse Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 53. SistemaOperativo<<THE >> • 1° SO a strati della storia (6 ma in realtà solo una convenzione progettuale, poiché tutte le parti del sistema venivano alla fine collegate insieme in un unico programma oggetto). • Sistema di tipo Batch • Multi-programming System: processi concorrenti sequenziali cooperavano mediante l’impiego di semafori per la sincronizzazione. • Utilizzo di un algoritmo di schedulazione della CPU basato su priorità, che venivano ricalcolate ogni 2 secondi ed erano inversamente proporzionali al tempo in cui la CPU era stata usata recentemente (negli ultimi 8-10 secondi). Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 59. << Go to statement considered harmful 1968>> << Notes on Structured Programming 1969 >> Problema Soluzione Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 60. “ ” La qualità dei programmi e’ una funzione decrescente della densità di dichiarazioni GOTO […] sono sempre piu’ convinto che la struttura in questione debba essere abolita da tutti i linguaggi di programmazione ad alto livello. EdsgerDijkstra …The go to statement as it stands is just too primitive, it is too much an invitation to make a mess of one's program… Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 61. • Un qualunque algoritmo può essere implementato in codice sorgente, pseudocodice o diagramma di flusso, utilizzando tre sole strutture dette strutture di controllo: I. la sequenza; II. la selezione; III. il ciclo (iterazione); • Applicare ricorsiva ad istruzioni elementari (ad es. di istruzioni eseguibili con il modello di base della macchina di Turing). Teorema di Böhm-Jacopini  Operazioni I/O  Operazioni di Assegnazione Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 62. “Notes on structured programming” COMPUTAZIONE • « Dimensionamento » in termini di quantità di informazioni ed operazioni coinvolte. EFFICACIA • « Organizzazione » delle risorse HW. MASSIMA RESA Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 (1969)
  • 63. “ ” Non si puo’ considerare la programmazione come la minimizzazione del costo di una performance. L’arte di programmare e’ l’arte di organizzare la complessità, di gestire ilcaos bastardo nelmodo piùefficacepossibile. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 EdsgerDijkstra
  • 64. PROGRAMMAZIONE • Costrutti e diagrammi di flusso: • If-Then-Else; • Case Of; • While-Do; • Repeat-Until; • (In)affidabilità del Testing. • « Linguaggio ad alto livello » ed astrazione dall’hardware sottostante. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 “Notes on structured programming” (1969)
  • 65. CORRETTEZZA DI UN PROGRAMMA • Programma ha senso solo durante l’esecuzione, un teorema ha senso di per sé. • Programmazione ben strutturata attraverso successive scomposizioni. dimostrazione di correttezza senza ricorrere a dispendioso processo intellettuale Induzione per enumerazione Principio di induzione Astrazione Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 “Notes on structured programming” (1969)
  • 66. “ ” Il programma e la prova di correttezza andrebbero sviluppati in parallelo. Inizialmente ci si chiede quale struttura dovrebbe avere la dimostrazione, poi si costruisce un programma per soddisfare i requisiti della stessa, infine lo si usa in senso euristico. In questo modo il programma risulta corretto per costruzione. Edsger Dijkstra • Utilizzo di strutture ben conosciute e/o familiari. • Scelta di programmi intellettualmente gestibili (soluzione algoritmica). • Lunghezza delle dimostrazioni: a « misura d’uomo ». Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 67. • I grandi sistemi devono essere costruiti partendo da molti piccoli componenti; • Ogni componente deve essere definito solo dalla sua interfaccia e non dalla sua implementazione; • La progettazione dovrebbe iniziare dalla “separazione degli interessi”, cioè separando i diversi aspetti del problema e concentrando l’attenzione su ciascuno di essi; Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 “Notes on structured programming” (1969)Filosofia
  • 68. Algoritmodelbanchiere “Een algorithme ter voorkoming van de dodelijke omarming” (EWD-108) • Indica se un sistema, in cui operano processi concorrenti su istanze di risorse disponibili, si troverebbe in uno stato sicuro o meno, nel caso soddisfacesse una specifica richiesta di risorse da parte di un determinato processo evitando una situazione di deadlock. • Il deadlock (o stallo) è una situazione in cui due o più processi si bloccano a vicenda, aspettando che uno esegua una certa azione. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 69. … Clienti Processi …… Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 70. • Fissata una situazione di allocazione di k-istanze di m-risorse ad n-processi al tempo « t0 » Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 71. • Il processo P1 richiede l’allocazione di risorse (1,0,2) • Ricavo il vettore Necessità (Max - Assegnate) Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 72. R ≤ N R ≤ D Simulazione allocazione risorse per Pj D = D – R A = A + R N = N – R Verifica: Stato SICURO Assegnazione effettiva delle risorse D = D – R A = A + R N = N – R • Pj deve attendere. • Ripristino vecchio stato di allocazione risorse ERRORE. Superato Max n richieste • Pj deve attendere. • Risorse non disponibili si si sino no no Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 73. Sicuro Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 “Simulazione” • Il processo P1 richiede l’allocazione di risorse (1,0,2)
  • 74. STATO SICURO • Concetto introdotto da Dijkstra tra il 1965 e 1966 quando sviluppò il suo sistema operativo multiprogrammabile THE. • E’ uno stato in cui è possibile allocare tutte le risorse richieste da un processo senza che quest'ultimo comporti un deadlock con un altro processo. • Osservazioni:  Uno stato sicuro non implica che tutte le allocazioni di risorse avverranno con successo, MA solo che esiste almeno un modo sicuro per allocare tutte le risorse. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 75. Valutazione SICUREZZA Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 76. Valutazione SICUREZZA <P1> Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 77. Valutazione SICUREZZA <P1> Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 78. Valutazione SICUREZZA <P1 – P3> Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 79. Valutazione SICUREZZA <P1 – P3 – P4> Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 80. Valutazione SICUREZZA <P1 – P3 – P4 – P0> Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 81. Valutazione SICUREZZA <P1 – P3 – P4 – P0 – P2> Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 82. • L’esecuzione dell’algoritmo di sicurezza mostra che la sequenza < P1, P3, P4, P0, P2 > soddisfa i requisiti di sicurezza. • La Richiesta (1,0,2) può essere soddisfatta senza rischiare un deadlock. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 83. … Oggi … • Difficile applicazione • costoso in termini economici. • allocazione delle risorse non deterministica (concetto richiesto dall’Algoritmo del Banchiere). • la maggior parte dei S.O. non considera il problema di eventuali deadlock, in quanto evento raro, data l'abbondanza delle risorse a disposizione. • oggigiorno la gestione dei deadlock è sicuramente più critica nei database che non nei sistemi operativi. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 84. “ ” L’induzione matematica puo’ portare ad argomentazioni molto compatte ed efficaci – in breve: Belle! – e, quando riconosciamo la battaglia contro il caos, il disordine e l’indomita complessita’, come una delle principali vocazionidell’informatica,dobbiamoammettere che… Edsger Dijkstra Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 BeautyisourBusiness
  • 85. “The humble programmer” – Turing Award (1972) La nostra metodologia di programmazione migliorerà se: • Avremo apprezzamento della sua tremenda difficoltà. • Utilizzeremo linguaggi di programmazione modesti ma eleganti. • Rispetteremo le intrinseche limitazioni della mente umana. avvicinarsi alla programmazione UMILMENTE Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 A.C.M. – Association for Computing Machinery
  • 86. «…unoceano tra me edilmio capo…» • Ingresso nel mondo dell’industria (ricercatore presso la Burroughs Corporation) – il grosso del lavoro nel suo studio a casa (Olanda). • Fonda l’ETAC noto come il « Club del martedì pomeriggio ». • Periodo florido per gli articoli. • Forte attaccamento al mondo dell’ Università. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 87. “ ” Ventotto anni fa (1959) ho scritto EWD 0 […] dopo che ebbi mischiato le pagine tra i manoscritti per la seconda volta, decisi che sarebbe stato meglio mettere fine alla confusione e li numerai (Ewd0, Ewd1, Ewd3…). Questo è ilmodo incui e’ iniziata. Edsger Dijkstra Le relazioni EWD Un informale ma efficace veicolo di diffusione delle idee Scritti con la macchina da scrivere o con la penna stilografica L’ultimo (Ewd1318) risale all’ aprile 2002 Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 88. UniversitàdelTexas–Austin– • Cattedra di Informatica in cui ripercorre tutti gli argomenti affrontati nella sua vita. • La sua semplicità si nota anche dal suo stile di insegnamento: tutto alla lavagna, senza proiettore e senza seguire un libro di testo. • Fonda l’ETAC noto come il « Club del martedì pomeriggio ». Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014
  • 89. Conclusioni • Dijkstra lavorò tutta la vita alla professionalizzazione accademica della programmazione ed all’autonomia dell’informatica come scienza. Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014 Computer inteso come strumento
  • 90. In Memorium Edsger W. Dijkstra « Semplicità,bellezza ed eloquenza sonostate le sue caratteristiche distintive, e la sua insistenzasenza compromessi sull’eleganzanella programmazione e sullamatematica e’ statauna fonte d’ispirazioneper migliaia » A.C.M. – Association for Computing Machinery
  • 91. Grazie per la cortese attenzione… Presentazione a cura di Nava Giovanni & Semperboni Cristian Informatica Teorica Cristian Semperboni & Giovanni NavaA.A 2013-2014

Editor's Notes

  1. Team composto da: 1 ing meccanico con esperienza di calcolo numerico 2 fisici sperimentali Lui fisico teorico in berbe
  2. S  Dijkstra realizza una relazione in cui elenca le istruzioni che mette a disposizione senza fornire come sono state realizzate….