Autor: Ben-Ari Mordechai
ISBN: 978-83-204-3441-5
Ilość stron: 332
Data wydania: 05/2009 (wydanie 2, zmienione)
Oprawa: Miękka
Jest to znakomity, znany na całym świecie podręcznik dotyczący programowania współbieżnego i rozproszonego. Autor rozpoczyna wykład od przedstawienia klasycznych problemów współbieżności i podstawowych mechanizmów synchronizacyjnych procesów.
Potem przechodzi do omówienia problemu wzajemnego wykluczania i zagadnień związanych z weryfikacją programów współbieżnych. Opisuje algorytm piekarniany i mechanizmy synchronizacyjne w modelu ze wspólną pamięcią i w modelu bez wspólnej pamięci oraz klasyczne algorytmy rozproszone i systemy czasu rzeczywistego.
Każdy rozdział kończy się zestawem ćwiczeń do samodzielnego rozwiązania.
Podręcznik ten jest przeznaczony dla studentów informatyki na wszystkich uczelniach wyższych, programistów i projektantów systemów informatycznych.
Rozdziały:
Rozdział 1. Co to jest programowanie współbieżne? 1.1. Wprowadzenie 1.2. Współbieżność jako abstrakcja równoległości Wielozadaniowość 1.3. Terminologia współbieżności 1.4. Komputery zwielokrotnione 1.5. Zadania programowania współbieżnego
Rozdział 2. Abstrakcja programowania współbieżnego 2.1. Rola abstrakcji 2.2. Wykonanie współbieżne jako przeplot instrukcji atomowych 2.3. Uzasadnienie przyjętej abstrakcji 2.4. Dowolny przeplot 2.5. Instrukcje atomowe 2.6. Poprawność 2.7. Uczciwość 2.8. Rozkazy maszynowe"4 2.9. Zmienne ulotne i nieatomowe"4 2.10. Symulator współbieżności BACIL 2.11. Współbieżność w języku AdaL 2.12. Współbieżność w języku JavaL 2.13. Współbieżność w języku PromelaL 2.14. Dodatek: diagram stanów pewnej zagadki
Rozdział 3. Probierń wzajemnego wykluczania 3.1. Wprowadzenie 3.2. Sformułowanie problemu 3.3. Pierwsza próba 3.4. Dowodzenie poprawności za pomocą diagramów stanów 3.5. Poprawność pierwszej próby 3.6. Druga próba 3.7. Trzecia próba 3.8. Czwarta próba 3.9. Algorytm Dekkera 3.10. Złożone instrukcje atomowe
Rozdział 4. Weryfikacja poprawności programów współbieżnych 4.1. Specyfikacja własności poprawności w języku logiki 4.2. Indukcyjne dowody niezmienników 4.3. Podstawowe pojęcia logiki temporalnej 4.4. Zaawansowane pojęcia logiki temporalnej^ 4.5. Dedukcyjny dowód poprawności algorytmu DekkeraA 4.6. Weryfikacja przez model 4.7. Język modelowania Promela w systemie SpinL 4.8. Weryfikacja warunków poprawności w systemie SpinL 4.9. Wybór techniki weryfikacji^
Rozdział 5. Złożone algorytmy rozwiązywania problemu wzajemnego wykluczania"4 5.1. Algorytm piekarniany 5.2. Algorytm piekarniany dla wielu procesów 5.3. Mniej restrykcyjne modele współbieżności 5.4. Algorytmy szybkie 5.5. Implementacje w języku PromelaL
Rozdział 6. Semafory 6.1. Stany procesu 6.2. Definicja typu semaforowego 6.3. Problem wzajemnego wykluczania dla dwóch procesów 6.4. Niezmienniki semaforów 6.5. Problem wzajemnego wykluczania dla N procesów 6.6. Problemy wymagające synchronizacji kolejności wykonywania 6.7. Problem producenta-konsumenta 6.8. Definicje semaforów 6.9. Problem pięciu filozofów 6.10. Symulacja Barza semaforów ogólnych'4 6.11. Algorytm Uddinga bez zagłodzeń"4 6.12. Semafory w BACIL 6.13. Semafory w języku Ada^ 6.14. Semafory w języku ,TavaL 6.15. Semafory w języku PromelaL
Rozdział 7. Monitory 7.1. Wprowadzenie 7.2. Deklaracja i użycie monitorów 7.3. Zmienne warunkowe 7.4. Problem producenta-konsumenta 7.5. Wymaganie natychmiastowego wznowienia wykonania 7.6. Problem czytelników i pisarzy 7.7. Poprawność algorytmu czytelników i pisarzy^4 7.8. Monitorowe rozwiązanie problemu pięciu filozofów 7.9. Monitory w symulatorze BACI 7.10. Obiekty chronione 7.11. Monitory w języku Jaya^1 7.12. Symulacja monitorów w Promeli7'
Rozdział 8. Kanały 8.1. Modele komunikacji 8.2. Kanały 8.3. Równoległe mnożenie macierzy 8.4. Rozwiązanie problemu pięciu filozofów za pomocą kanałów 8.5. Kanały w języku PromelaL 8.6. Randki 8.7. Zdalne wywołania procedur"4
Rozdział 9. Przestrzenie 9.1. Model współbieżności stosowany w języku Linda 9.2. Wyrażalność modelu w języku Linda 9.3. Parametry formalne 9.4. Wzorzec nadzorca-robotnik 9.5. Implementacje przestrzeni krotekL
Rozdział 10. Algorytmy rozproszone 10.1. Model systemu rozproszonego 10.2. Implementacje 10.3. Wzajemne wykluczanie rozproszone 10.4. Poprawność algorytmu Ricarta-Agrawali 10.5. Algorytm RA w języku PromelaL 10.6. Algorytmy przekazywania żetonu 10.7. Żetony w drzewach wirtualnych^1
Rozdział 11. Własności globalne 11.1. Rozproszone zakończenie wykonania 11.2. Algorytm Dijkstry-Scholtena 11.3. Algorytmy windykacyjne 11.4. Migawki
Rozdział 12. Uzgadnianie 12.1. Wprowadzenie 12.2. Sformułowanie problemu 12.3. Algorytm jednorundowy 12.4. Algorytm bizantyjskich generałów 12.5. Załamania 12.6. Drzewa wiedzy 12.7. Awarie bizantyjskie z trzema generałami 12.8. Awarie bizantyjskie z czterema generałami 12.9. Algorytm rozpływowy 12.10. Algorytm króla 12.11. Brak rozwiązania w przypadku trzech generałów^1
Rozdział 13. Systemy czasu rzeczywistego 13.1. Wprowadzenie 13.2. Definicje 13.4. Niezawodność i powtarzalność 13.5. Systemy synchroniczne 13.6. Systemy asynchroniczne 13.7. Systemy sterowane przerwaniami 13.8. Odwrócenie i dziedziczenie priorytetów 13.9. Specyfikacja sondy Mars Pathfmder w systemie Spin-6 13.10. Algorytm Simpsona"4 13.11. Profil RavenscarL 13.12. UPPAALL 13.13. Algorytmy szeregowania dla systemów czasu rzeczywistego
Dodatek A. Pseudokod Dodatek B. Podstawowe pojęcia logiki matematycznej B.1. 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.1. Symulatory BACI oraz jBACI D.2. Systemy Spin oraz jSpin D.3. System DAJ Dodatek E. Dalsza lektura
Podstawy programowania współbieżnego i rozproszonego --- Pozycja niedostępna.---
|