ξ II.UWr Wprowadzenie do STM

Podobne dokumenty
Paradygmaty programowania

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

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

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

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

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

4. Procesy pojęcia podstawowe

Wprowadzenie do programowania współbieżnego

Zaawansowane programowanie w C++ (PCP)

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

4. Procesy pojęcia podstawowe

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytmy i Struktury Danych

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

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

Modelowanie procesów współbieżnych

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

Podstawy i języki programowania

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

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

Programowanie współbieżne i rozproszone

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

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

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

Grupy pytań na egzamin inżynierski na kierunku Informatyka

Numeryczna algebra liniowa

STRATEGIE NISKOPOZIOMOWEGO PROGRAMOWANIA WSPÓŁBIEŻNEGO PLATFORMY.NET

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Działanie systemu operacyjnego

9. Problem wzajemnego wykluczania i sekcji krytycznej

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

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

4. Procesy pojęcia podstawowe

Dr inż. hab. Siergiej Fialko, IF-PK,

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

Działanie systemu operacyjnego

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

9. Problem wzajemnego wykluczania i sekcji krytycznej

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

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

Programowanie Obiektowe i C++

Algorytm. a programowanie -

Systemy operacyjne. Paweł Pełczyński

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

Java EE produkcja oprogramowania

Paweł Skrobanek. C-3, pok

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Działanie systemu operacyjnego

Wstęp do programowania 2

Programowanie Obiektowe Ćwiczenie 4

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Podstawy Informatyki Systemy sterowane przepływem argumentów

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Algorytmy dla maszyny PRAM

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

16. Taksonomia Flynn'a.

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

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

System operacyjny MACH

Języki i paradygmaty programowania. I. Wprowadzenie

Czym są właściwości. Poprawne projektowanie klas

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie w języku Python. Grażyna Koba

TEMAT : KLASY DZIEDZICZENIE

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Aplikacje w Javie- wykład 11 Wątki-podstawy

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie i projektowanie obiektowe

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Podstawy programowania komputerów

Programowanie Rozproszone i Równoległe

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Metody Metody, parametry, zwracanie wartości

Zaawansowany kurs języka Python

Systemy operacyjne III

Delphi Laboratorium 3

Systemy Czasu Rzeczywistego. dr inż. Piotr Szwed C3, pok

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

Podstawy programowania.

Transkrypt:

ξ KS @.UWr Wprowadzenie do STM Marek Materzok ZOSA 2007

ξ KS @.UWr Wprowadzenie Były sobie komputery. Wykonywały programy instrukcja po instrukcji i wszyscy byli szczęśliwi...

ξ KS @.UWr Wprowadzenie Były sobie komputery. Wykonywały programy instrukcja po instrukcji i wszyscy byli szczęśliwi......dopóki nie zachcieli, aby komputery robiły kilka rzeczy naraz...

ξ KS @.UWr Wprowadzenie Były sobie komputery. Wykonywały programy instrukcja po instrukcji i wszyscy byli szczęśliwi......dopóki nie zachcieli, aby komputery robiły kilka rzeczy naraz......i oczywiście, jak to często bywa, problem rozwiązano w najbrzydszy możliwy sposób.

ξ KS @.UWr Programowanie wielowątkowe Wątek - niezależny tok wykonania, posiadający własne rejestry procesora, ale dzielący pamięć z innymi wątkami. Program wielowątkowy jest wykonywany instrukcje jego wątków w dowolny możliwy sposób. Przeplot następuje na poziomie, nie instrukcji języka - nawet x := x + 1 może być niedeterministyczne!

ξ KS @.UWr Przeplot - ilustracja

ξ KS @.UWr Ujarzmianie niedeterminizmu Spostrzeżenie: kod pracujący na danych lokalnych dla wątku może być dowolnie przeplatany, wystarczy, że do kodu pracującego na wspólnych danych będzie miał wstęp tylko jeden wątek naraz Rozwiązanie: niech sekcje krytyczne będą chronione blokadą, aktywną bądź pasywną; nadgorliwy wątek sobie poczeka.

ξ KS @.UWr Ujarzmianie niedeterminizmu Spostrzeżenie: kod pracujący na danych lokalnych dla wątku może być dowolnie przeplatany, wystarczy, że do kodu pracującego na wspólnych danych będzie miał wstęp tylko jeden wątek naraz Rozwiązanie: niech sekcje krytyczne będą chronione blokadą, aktywną bądź pasywną; nadgorliwy wątek sobie poczeka. tak narodziło się ZŁO: programowanie współbieżne z blokadami.

ξ KS @.UWr Dlaczego ZŁO? Zbyt gruboziarniste blokady ograniczają stopień równoległości. Zbyt drobnoziarniste blokady mają duży narzut czasowy i są kłopotliwe dla programisty. Podatność na błędy:,, zgubione instrukcje blokowania/odblokowania... Na koniec najistotniejsze: blokady naruszają strukturalność - programów z blokadami nie można swobodnie składać.

ξ KS @.UWr Przykład void successor(list l, Element e); void remove(list l, Element e); Element insertafter(list l, Element m, Element e); void swapwithsucc(list l, Element e) { Element succ = successor(l, e); remove(l, e); // do tego czasu succ moze nie istnieć w l... insertafter(succ, e); }

ξ KS @.UWr Rozwiązanie 1: komunikaty Źródłem ZŁA jest dzielona pamięć. Porzucamy więc ją zupełnie! Współbieżne procesy posiadają wyłącznie lokalną pamięć, komunikują się wyłącznie poprzez wymianę komunikatów. Swoboda rozproszenia: procesy nie muszą działać na tej samej maszynie. Wyraźny związek z programowaniem obiektowym. Języki: Occam, Erlang.

ξ KS @.UWr Rozwiązanie 2: pamięć transakcyjna dea zaczerpnięta z baz danych: operacje na dzielonej pamięci odbywają się w atomowych transakcjach. Program wykonuje się transakcje były wykonywane oddzielnie, nie widząc zmian wykonywanych przez inne wątki. Typowa realizacja - optymistyczna, nieblokująca. Dziennik pozwala na cofnięcie nieudanej transakcji.

ξ KS @.UWr Cechy pamięci transakcyjnej Narzut czasowy związany z zarządzaniem transakcjami. Zakaz używania wejścia-wyjścia wewnątrz transakcji: atomic { wystrzelrakietyjadrowe();...cos jeszcze... } A co, jeśli programista zapomni o bloku atomic?

ξ KS @.UWr Cechy pamięci transakcyjnej Wysoki stopień równoległości - transakcje działające na różnych danych nie przeszkadzają sobie wzajemnie. Liczna klasa błędów, w tym, nie istnieje. Odzyskujemy strukturalność! Złożenie operacji poprawnych jest nadal operacją poprawną. void swapwithsucc(list l, Element e) { atomic { Element succ = successor(l, e); remove(l, e); insertafter(succ, e); } }

ξ KS @.UWr Haskell: krótki wstęp do monad Monada - algebra sekwencyjnych operacji, podobna do półgrupy. class where ( >=) :: ( ) :: Prawa (łączność, element neutralny): ( >= ) >= = >= (λ >= ) >= = >= = Operacje wejścia/wyjścia i imperatywne obliczenia tworzą monadę.

ξ KS @.UWr Monada STM Podstawy: type -- typ zmiennych dzielonych :: ( ) :: :: () No dobrze, ale jak wykonać transakcję? ::

ξ KS @.UWr Co zyskaliśmy? Nie można grzebać w zmiennych dzielonych poza transakcjami. :: () = -- błąd typowania! Nie można wykonywać wejścia/wyjścia podczas transakcji. :: () = (do ( + 1) ) -- błąd typowania!

ξ KS @.UWr Warunkowa synchronizacja :: () Realizacja: transakcja jest wznawiana, jak tylko inny wątek zmodyfikuje którąś ze zmiennych przeczytanych przez transakcję. :: () = do if < 0 then else ( )

ξ KS @.UWr Operacja wyboru :: Znaczenie: spróbuj wykonać pierwszą operację; jeśli wywoła, wycofaj i wykonaj drugą. :: [ ] () ( : ) = [ ] =

ξ KS @.UWr Własności algebraiczne Łączność : ( ) = ( ) Rozdzielność >= względem : >= (λ ) = ( >= ) ( >= ) elementem neutralnym względem : = = zerem względem >=: >= = >= (λ ) =

ξ KS @.UWr Podsumowanie Programowanie współbieżne z blokadami jest ZŁE i, poza bardzo niskopoziomowymi programami, nie powinno być używane. Przekazywanie komunikatów i pamięć transakcyjna są mechanizmami o przyjemnych własnościach, co skutkuje prostszymi, poprawniejszymi programami. Zmiana sposobu tworzenia programów równoległych jest konieczna, aby móc w pełni wykorzystać możliwości wielordzeniowych procesorów.

ξ KS @.UWr Literatura Harris T., Marlow S., Peyton Jones S., Herlihy M.: Composable Memory Transactions. Peyton Jones S.:. Microsoft Research, Cambridge, 2007..