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