Spis treści Rozdział 1. Co to jest programowanie współbieżne? 1

Transkrypt

Spis treści Rozdział 1. Co to jest programowanie współbieżne? 1
Spis treści
Rozdział 1. Co to jest programowanie współbieżne?
Wprowadzenie
Współbieżność jako abstrakcja równoległości
Wielozadaniowość
Terminologia współbieżności
Komputery zwielokrotnione
Zadania programowania współbieżnego
1
1
2
3
4
4
5
Rozdział 2. Abstrakcja programowania współbieżnego
Rola abstrakcji
Wykonanie współbieżne jako przeplot instrukcji atomowych
Uzasadnienie przyjętej abstrakcji
Dowolny przeplot
Instrukcje atomowe
Poprawność
Uczciwość
Rozkazy maszynowe"4
Zmienne ulotne i nieatomowe"4
Symulator współbieżności BACIL
Współbieżność w języku AdaL
Współbieżność w języku JavaL
Współbieżność w języku PromelaL
Dodatek: diagram stanów pewnej zagadki
7
7
8
12
17
17
20
22
22
26
27
30
32
33
34
Rozdział 3. Problem wzajemnego wykluczania
Wprowadzenie
Sformułowanie problemu
Pierwsza próba
Dowodzenie poprawności za pomocą diagramów stanów
Poprawność pierwszej próby
Druga próba
Trzecia próba
Czwarta próba
Algorytm Dekkera
Złożone instrukcje atomowe
41
41
41
43
44
48
50
52
53
55
56
Rozdział 4. Weryfikacja poprawności programów współbieżnych
Specyfikacja własności poprawności w języku logiki
Indukcyjne dowody niezmienników
Podstawowe pojęcia logiki temporalnej
Zaawansowane pojęcia logiki temporalnej"4
Dedukcyjny dowód poprawności algorytmu Dekkera"4
Weryfikacja przez model
Język modelowania Promela w systemie SpinL
Weryfikacja warunków poprawności w systemie SpinL
Wybór techniki weryfikacji"4
61
62
63
65
69
73
76
76
79
81
Rozdział 5. Złożone algorytmy rozwiązywania problemu wzajemnego wykluczania"4
Algorytm piekarniany
Algorytm piekarniany dla wielu procesów
Mniej restrykcyjne modele współbieżności
Algorytmy szybkie
85
85
87
88
89
Implementacje w języku PromelaL
96
Rozdział 6. Semafory
Stany procesu
Definicja typu semaforowego
Problem wzajemnego wykluczania dla dwóch procesów
Niezmienniki semaforów
Problem wzajemnego wykluczania dla N procesów
Problemy wymagające synchronizacji kolejności wykonywania
Problem producenta-konsumenta
Definicje semaforów
Problem pięciu filozofów
Symulacja Barza semaforów ogólnych"4
Algorytm Uddinga bez zagłodzeń
Semafory w BACIL
Semafory w języku AdaL
Semafory w języku JavaL
Semafory w języku PromelaL
99
99
101
102
104
105
106
107
111
113
116
120
122
122
123
123
Rozdział 7. Monitory
Wprowadzenie
Deklaracja i użycie monitorów
Zmienne warunkowe
Problem producenta-konsumenta
Wymaganie natychmiastowego wznowienia wykonania
Problem czytelników i pisarzy
Poprawność algorytmu czytelników i pisarzy"4
Monitorowe rozwiązanie problemu pięciu filozofów
Monitory w symulatorze BACIL
Obiekty chronione
Monitory w języku JavaL
Symulacja monitorów w PromeliL
133
133
134
135
139
139
141
144
147
148
149
153
158
Rozdział 8. Kanały
Modele komunikacji
Kanały
Równoległe mnożenie macierzy
Rozwiązanie problemu pięciu filozofów za pomocą kanałów
Kanały w języku PromelaL
Randki
Zdalne wywołania procedur"4
163
163
165
167
171
172
174
176
Rozdział 9. Przestrzenie
Model współbieżności stosowany w języku Linda
Wyrażalność modelu w języku Linda
Parametry formalne
Wzorzec nadzorca-robotnik
Implementacje przestrzeni krotekL
181
181
183
184
186
188
Rozdział 10. Algorytmy rozproszone
Model systemu rozproszonego
Implementacje
Wzajemne wykluczanie rozproszone
Poprawność algorytmu Ricarta-Agrawali
Algorytm RA w języku PromelaL
193
193
196
198
204
206
Algorytmy przekazywania żetonu
Żetony w drzewach wirtualnych"4
207
210
Rozdział 11. Własności globalne
Rozproszone zakończenie wykonania
Algorytm Dijkstry-Scholtena
Algorytmy windykacyjne
Migawki
217
217
223
227
229
Rozdział 12. Uzgadnianie
Wprowadzenie
Sformułowanie problemu
Algorytm jednorundowy
Algorytm bizantyjskich generałów
Załamania
Drzewa wiedzy
Awarie bizantyjskie z trzema generałami
Awarie bizantyjskie z czterema generałami
Algorytm rozpływowy
Algorytm króla
Brak rozwiązania w przypadku trzech generałów"4
237
237
238
240
241
242
244
245
247
250
253
258
Rozdział 13. Systemy czasu rzeczywistego
Wprowadzenie
Definicje
Niezawodność i powtarzalność
Systemy synchroniczne
Systemy asynchroniczne
Systemy sterowane przerwaniami
Odwrócenie i dziedziczenie priorytetów
Specyfikacja sondy Mars Pathfinder w systemie SpinL
Algorytm Simpsona"4
Profil RavenscarL
UPPAALL
Algorytmy szeregowania dla systemów czasu rzeczywistego
263
263
265
266
268
271
274
277
280
283
285
288
288
Dodatek A. Pseudokod
Dodatek B. Podstawowe pojęcia logiki matematycznej
B.l.
Rachunek zdań
B.2. Indukcja
B.3.
Metody dowodzenia
B.4.
Poprawność programów sekwencyjnych
Dodatek C. Problemy programowania współbieżnego
Dodatek D. Narzędzia programistyczne
D.l. Symulatory BACI oraz jBACI
D.2. Systemy Spin oraz jSpin
D.3. System DAJ
Dodatek E. Dalsza lektura
293
297
297
299
300
302
307
313
313
315
319
321