Spis treści. Księgarnia PWN: Maurice Herlihy, Nir Shavit - Sztuka programowania wieloprocesorowego. Podziękowania Przedmowa...

Podobne dokumenty
Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Systemy operacyjne III

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Programowanie współbieżne Rozwiązywanie problemu wzajemnego wykluczania. Rafał Skinderowicz

Wprowadzenie do programowania współbieżnego

Bazy danych w sterowaniu

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

5. Model komunikujących się procesów, komunikaty

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Pojęcie bazy danych. Funkcje i możliwości.

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

4. Procesy pojęcia podstawowe

ξ II.UWr Wprowadzenie do STM

4. Procesy pojęcia podstawowe

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Modelowanie procesów współbieżnych

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Struktury Danych i Złożoność Obliczeniowa

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja

Synchronizacja procesów i wątków

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Model pamięci. Rafał Skinderowicz

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Numeryczna algebra liniowa

Programowanie współbieżne i rozproszone

Architektura komputerów

Synchronizacja procesów

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Programowanie współbieżne Laboratorium nr 12

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Architektura komputerów

4. Procesy pojęcia podstawowe

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Programowanie Rozproszone i Równoległe

Systemy Rozproszone. Zagadnienia do egzaminu.

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

Opis efektów kształcenia dla modułu zajęć

dr Krzysztof Podlaski

16. Taksonomia Flynn'a.

Synchronizacja procesów

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Programowanie współbieżne Wykład 2. Iwona Kochańska

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Równoległość i współbieżność

Równoległość i współbieżność

3URJUDPRZDQLHZVSyáELH*QHZVWS

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Model pamięci. Rafał Skinderowicz

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

9. Problem wzajemnego wykluczania i sekcji krytycznej

Zaawansowane algorytmy i struktury danych

Projektowanie. Projektowanie mikroprocesorów

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Spis treści. Przedmowa

Programowanie współbieŝne. Paweł Rogaliński Politechnika Wrocławska

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Mechanizmy pracy równoległej. Jarosław Kuchta

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Wstęp do programowania

Programowanie współbieżne i równoległe

Technologia informacyjna (IT - Information Technology) dziedzina wiedzy obejmująca:

Listy, kolejki, stosy

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

Java Collections Framework

Programowanie współbieżne Rozwiązywanie problemu wzajemnego wykluczania. Rafał Skinderowicz


Zagadnienia na egzamin dyplomowy. Studia jednolite magisterskie WFMiI rok akad. 2010/11

Programowanie Współbieżne. Wstęp

1 Podstawowe definicje i pojęcia współbieżności

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Procesy, wątki i zasoby

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Transkrypt:

Księgarnia PWN: Maurice Herlihy, Nir Shavit - Sztuka programowania wieloprocesorowego Spis treści Podziękowania... 12 Przedmowa... 13 1. Wprowadzenie...15 1.1. Obiekty współdzielone i synchronizacja... 18 1.2. Historyjka... 20 1.2.1. Wzajemne wykluczenie i inne własności... 23 1.2.2. Morał... 24 1.3. Problem producenta konsumenta... 25 1.4. Problem czytelników i pisarzy... 27 1.5. Surowe realia zrównoleglania... 28 1.6. Programowanie równoległe... 30 1.7. Przypisy do rozdziału... 31 1.8. Ćwiczenia... 31 I. Zasady... 35 2. Wzajemne wykluczenie... 37 2.1. Czas... 37 2.2. Sekcje krytyczne... 38 2.3. Rozwiązania dwuwątkowe... 41 2.3.1. Klasa LockOne... 41 2.3.2. Klasa LockTwo... 42 2.3.3. Blokada Petersona... 43 2.4. Blokada Filter... 45 2.5. Uczciwość... 48 2.6. Algorytm piekarniany Lamporta... 48 2.7. Ograniczone znaczniki czasu... 50 2.8. Dolne ograniczenia liczby lokacji... 54 2.9. Przypisy do rozdziału... 59

4 Sztuka programowania wieloprocesorowego 2.10. Ćwiczenia... 59 3. Obiekty współbieżne... 64 3.1. Współbieżność a poprawność... 64 3.2. Obiekty sekwencyjne... 67 3.3. Spójność spoczynkowa... 69 3.3.1. Uwagi... 70 3.4. Spójność sekwencyjna... 71 3.4.1. Uwagi... 72 3.5. Linearyzowalność... 74 3.5.1. Punkty linearyzacji... 75 3.5.2. Uwagi... 75 3.6. Definicje formalne... 75 3.6.1. Linearyzowalność... 77 3.6.2. Linearyzowalność kompozycyjna... 78 3.6.3. Własność nieblokująca... 79 3.7. Warunki postępu... 80 3.7.1. Zależne warunki postępu... 81 3.8. Model pamięci Javy... 82 3.8.1. Blokady i bloki synchronized... 84 3.8.2. Pola ulotne... 84 3.8.3. Pola finalne... 85 3.9. Uwagi... 86 3.10. Przypisy do rozdziału... 87 3.11. Ćwiczenia... 87 4. Podstawy pamięci współdzielonej... 92 4.1. Przestrzeń rejestrów... 93 4.2. Konstrukcje rejestrów... 99 4.2.1. Bezpieczne rejestry MRSW... 100 4.2.2. Regularny boolowski rejestr MRSW... 101 4.2.3. Regularny M wartościowy rejestr MRSW... 102 4.2.4. Atomowy rejestr SRSW... 104 4.2.5. Atomowy rejestr MRSW... 106 4.2.6. Atomowy rejestr MRMW... 108 4.3. Atomowe migawki... 110 4.3.1. Migawka niehamowana... 111 4.3.2. Migawka nieczekająca... 113 4.3.3. Argumenty poprawności... 116 4.4. Przypisy do rozdziału... 117 4.5. Ćwiczenia... 118 5. Względna moc elementarnych operacji synchronizacyjnych... 123 5.1. Liczby konsensusu... 124 5.1.1. Stany i walencyjność... 125 5.2. Rejestry atomowe... 127 5.3. Protokoły konsensusu... 130

Spis treści 5 5.4. Kolejki FIFO... 131 5.5. Obiekty wielokrotnego przypisania... 135 5.6. Operacje odczytu modyfikacji zapisu... 138 5.7. Operacje RMW Common2... 140 5.8. Operacja compareandset()... 142 5.9. Przypisy do rozdziału... 143 5.10. Ćwiczenia... 144 6. Uniwersalność konsensusu... 151 6.1. Wprowadzenie... 151 6.2. Uniwersalność... 152 6.3. Uniwersalna konstrukcja niewstrzymywana... 152 6.4. Uniwersalna konstrukcja nieczekająca... 157 6.5. Przypisy do rozdziału... 163 6.6. Ćwiczenia... 163 II. Praktyka... 167 7. Blokady wirujące i rywalizacja... 169 7.1. Witajcie w prawdziwym świecie... 169 7.2. Blokady TAS... 172 7.3. Powtórka z blokad wirujących typu TAS... 175 7.4. Wycofywanie wykładnicze... 176 7.5. Blokady kolejkowe... 178 7.5.1. Blokady oparte na tablicach... 179 7.5.2. Kolejkowa blokada CLH... 181 7.5.3. Kolejkowa blokada MCS... 184 7.6. Blokada kolejkowa z czasem ważności... 186 7.7. Blokada złożona... 189 7.7.1. Blokada kompozycyjna z szybką ścieżką... 194 7.8. Blokady hierarchiczne... 197 7.8.1. Hierarchiczna blokada z wycofywaniem... 198 7.8.2. Hierarchiczna blokada kolejkowa CLH... 198 7.9. Jedna blokada, by rządzić wszystkimi... 204 7.10. Przypisy do rozdziału... 204 7.11. Ćwiczenia... 205 8. Monitory i synchronizacja blokująca... 208 8.1. Wprowadzenie... 208 8.2. Blokady z monitorami i warunki... 209 8.2.1. Warunki... 210 8.2.2. Problem zagubionych pobudek... 213 8.3. Blokady odczytujący zapisujący... 215 8.3.1. Prosta blokada odczytujący zapisujący... 215 8.3.2. Uczciwa blokada odczytujący zapisujący... 217 8.4. Nasza własna blokada wielowejściowa... 220 8.5. Semafory... 222

6 Sztuka programowania wieloprocesorowego 8.6. Przypisy do rozdziału... 223 8.7. Ćwiczenia... 223 9. Listy powiązane: rola blokowania... 227 9.1. Wprowadzenie... 227 9.2. Zbiory oparte na listach... 229 9.3. Rozumowanie współbieżne... 230 9.4. Synchronizacja gruboziarnista... 232 9.5. Synchronizacja drobnoziarnista... 234 9.6. Synchronizacja optymistyczna... 238 9.7. Synchronizacja leniwa... 242 9.8. Synchronizacja nieblokująca... 247 9.9. Omówienie... 253 9.10. Przypisy do rozdziału... 254 9.11. Ćwiczenia... 254 10. Kolejki współbieżne i problem ABA... 257 10.1. Wprowadzenie... 257 10.2. Kolejki... 259 10.3. Ograniczona kolejka częściowa... 259 10.4. Nieograniczona kolejka zupełna... 264 10.5. Nieograniczona kolejka bez wstrzymywania... 265 10.6. Odzyskiwanie pamięci i problem ABA... 269 10.6.1. Naiwna kolejka synchroniczna... 273 10.7. Dualne struktury danych... 274 10.8. Przypisy do rozdziału... 277 10.9. Ćwiczenia... 277 11. Współbieżne stosy i eliminacja... 280 11.1. Wprowadzenie... 280 11.2. Nieograniczony stos niewstrzymywany... 280 11.3. Eliminacja... 283 11.4. Eliminacyjny stos z wycofywaniem... 284 11.4.1. Wymiennik niewstrzymywany... 284 11.4.2. Tablica eliminacji... 287 11.5. Przypisy do rozdziału... 290 11.6. Ćwiczenia... 290 12. Zliczanie, sortowanie i koordynacja rozproszona... 295 12.1. Wprowadzenie... 295 12.2. Współdzielone zliczanie... 295 12.3. Łączenie programowe... 296 12.3.1. Przegląd... 297 12.3.2. Rozbudowany przykład... 305 12.3.3. Wydajność i odporność... 306 12.4. Pule spójne spoczynkowo i liczniki... 307 12.5. Sieci zliczające... 307

Spis treści 7 12.5.1. Sieci, które liczą... 308 12.5.2. Bitoniczna sieć zliczająca... 311 12.5.3. Wydajność i przetwarzanie potokowe... 320 12.6. Drzewa dyfrakcyjne... 320 12.7. Sortowanie równoległe... 325 12.8. Sieci sortujące... 325 12.8.1. Projektowanie sieci sortującej... 326 12.9. Sortowanie próbkowe... 329 12.10. Koordynacja rozproszona... 331 12.11. Przypisy do rozdziału... 332 12.12. Ćwiczenia... 333 13. Współbieżne mieszanie i naturalny paralelizm... 338 13.1. Wprowadzenie... 338 13.2. Tablice mieszające z adresowaniem zamkniętym... 340 13.2.1. Gruboziarnisty zbiór wymieszany... 342 13.2.2. Zbiór wymieszany z przeplataniem blokad... 343 13.2.3. Adaptowalny zbiór wymieszany... 346 13.3. Niewstrzymywany zbiór wymieszany... 349 13.3.1. Rekurencyjny porządek dzielony... 349 13.3.2. Klasa BucketList... 353 13.3.3. Klasa LockFreeHashSet<T>... 355 13.4. Zbiór wymieszany z adresowaniem otwartym... 357 13.4.1. Mieszanie dynamiczne... 358 13.4.2. Współbieżne mieszanie dynamiczne... 359 13.4.3. Współbieżne mieszanie dynamiczne z przeplataniem... 364 13.4.4. Adaptowalny, współbieżny, dynamiczny zbiór wymieszany... 366 13.5. Przypisy do rozdziału... 367 13.6. Ćwiczenia... 369 14. Listy z przeskokami i wyszukiwanie wyważone... 370 14.1. Wprowadzenie... 370 14.2. Sekwencyjne listy z przeskokami... 370 14.3. Współbieżna lista z przeskokami i z blokadą... 373 14.3.1. Ogólne ujęcie... 373 14.3.2. Algorytm... 375 14.4. Niewstrzymywana, współbieżna lista z przeskokami... 381 14.4.1. Ujęcie ogólne... 381 14.4.2. Szczegółowe omówienie algorytmu... 384 14.5. Współbieżne listy z przeskokami... 392 14.6. Przypisy do rozdziału... 392 14.7. Ćwiczenia... 393 15. Kolejki priorytetowe... 395 15.1. Wprowadzenie... 395 15.1.1. Współbieżne kolejki priorytetowe... 395 15.2. Ograniczona kolejka priorytetowa na bazie tablicy... 396

8 Sztuka programowania wieloprocesorowego 15.3. Ograniczona kolejka priorytetowa na bazie drzewa... 397 15.4. Nieograniczona kolejka priorytetowa na bazie kopca... 400 15.4.1. Kopiec sekwencyjny... 401 15.4.2. Kopiec współbieżny... 403 15.5. Nieograniczona kolejka priorytetowa na podstawie listy z przeskokami... 409 15.6. Przypisy do rozdziału... 412 15.7. Ćwiczenia... 412 16. Zobowiązania, szeregowanie i rozkład pracy... 415 16.1. Wprowadzenie... 415 16.2. Analiza zrównoleglania... 422 16.3. Szeregowanie w realistycznym systemie wieloprocesorowym... 425 16.4. Podział pracy... 428 16.4.1. Kradzież pracy... 429 16.4.2. Zwalnianie procesorów i programowanie wieloprocesorowe... 430 16.5. Kolejki dwukierunkowe z kradzieżą pracy... 430 16.5.1. Ograniczona dwukierunkowa kolejka kradnąca pracę... 431 16.5.2. Nieograniczona dwukierunkowa kolejka kradnąca pracę... 435 16.5.3. Równoważenie pracy... 439 16.6. Przypisy do rozdziału... 440 16.7. Ćwiczenia... 441 17. Bariery... 446 17.1. Wprowadzenie... 446 17.2. Implementacje bariery... 448 17.3. Bariera zmieniająca fazy... 449 17.4. Bariera z drzewem łączącym... 450 17.5. Bariera z drzewem statycznym... 453 17.6. Bariery z wykrywaniem zakończenia... 453 17.7. Przypisy do rozdziału... 458 17.8. Ćwiczenia... 459 18. Pamięć transakcyjna... 466 18.1. Wprowadzenie... 466 18.1.1. Co jest nie tak z blokowaniem?... 466 18.1.2. Co jest nie tak z metodą compareandset()?... 467 18.1.3. Co jest nie tak z kompozycyjnością?... 469 18.1.4. Co można z tym zrobić?... 470 18.2. Transakcje i atomowość... 470 18.3. Programowa pamięć transakcyjna... 473 18.3.1. Transakcje i transakcyjne wątki... 476 18.3.2. Zombie i spójność... 478 18.3.3. Obiekty atomowe... 479 18.3.4. Postęp zależny czy niezależny?... 481 18.3.5. Menedżery rywalizacji... 481 18.3.6. Implementowanie obiektów atomowych... 483 18.3.7. Niehamowany obiekt atomowy... 485

Spis treści 9 18.3.8. Obiekt atomowy z blokadą... 489 18.4. Sprzętowa pamięć transakcyjna... 497 18.4.1. Spójność pamięci podręcznej... 498 18.4.2. Transakcyjna spójność pamięci podręcznej... 499 18.4.3. Udoskonalenia... 500 18.5. Przypisy do rozdziału... 501 18.6. Ćwiczenia... 501 A. Podstawy programowania... 503 A.1. Wprowadzenie... 503 A.2. Java... 503 A.2.1. Wątki... 503 A.2.2. Monitory... 505 A.2.3. Ustępowanie i usypianie... 508 A.2.4. Lokalne obiekty wątków... 508 A.3. C#... 510 A.3.1. Wątki... 510 A.3.2. Monitory... 512 A.3.3. Lokalne obiekty wątków... 513 A.4. Pthreads... 514 A.4.1. Lokalna pamięć wątków... 517 A.5. Przypisy do rozdziału... 518 B. Podstawowe informacje o urządzeniach... 519 B.1. Wprowadzenie (i zagadka)... 519 B.2. Procesory i wątki... 522 B.3. Połączenie... 522 B.4. Pamięć... 523 B.5. Pamięci podręczne... 524 B.5.1. Spójność... 525 B.5.2. Aktywne czekanie... 527 B.6. Programowanie pod kątem pamięci podręcznej, czyli rozwiązanie zagadki... 527 B.7. Architektury wielordzeniowe i wielowątkowe... 529 B.7.1. Rozluźniona spójność pamięci... 530 B.8. Sprzętowe instrukcje synchronizacyjne... 531 B.9. Przypisy do rozdziału... 533 B.10. Ćwiczenia... 533 Bibliografia... 536 Indeks... 548