Wstęp do programowania Wykład 7

Slides:



Advertisements
Podobne prezentacje
TRADYCYJNE METODY PLANOWANIA I ORGANIZACJI PROCESÓW PRODUKCYJNYCH
Advertisements

Instrukcje - wprowadzenie
Wprowadzenie do informatyki Wykład 6
Podstawowe pojęcia programowania współbieżnego
Mechanizmy pracy równoległej
Jarosław Kuchta Semafory.
Jarosław Kuchta Monitory.
Klasyczne problemy współbieżności i ich rozwiązania
Wykład nr 8: Zakleszczenia
Programowanie I Rekurencja.
Systemy rozproszone W. Bartkiewicz Wykład 9. Wprowadzenie do koordynacji programów współbieżnych.
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
ZŁOŻONOŚĆ OBLICZENIOWA
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
SEMAFORY Dominik Niewiadomy Łukasz Dąbrowski.
Wykład nr 7: Synchronizacja procesów
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Semantyki programów współbieżnych " Determinizm programów sekwencyjnych, " Nie-determinizm programów współbieżnych, " prawdziwa równoległość vs.przeploty.
Projektowanie i programowanie obiektowe II - Wykład IV
Wstęp do interpretacji algorytmów
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Język Java Wielowątkowość.
6. SZEREGOWANIE PROCESÓW
Semafory według normy POSIX
Programowanie współbieżne
RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI
Semafory.
Wątki.
Podstawy programowania
Podstawy programowania II
Zbiór do posortowania mieści się w pamięci
Systemy operacyjne.
Współbieżność w informatyce i nie tylko
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
Problem sekcji krytycznej
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Algorytmy.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Elżbieta Fiedziukiewicz
Wykład 7 Synchronizacja procesów i wątków
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
W ą t e k (lekki proces) thread.
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmika.
Algorytmy- Wprowadzenie do programowania
RÓWNOLEGŁOŚĆ I PROSTOPADŁOŚĆ W MOIM OTOCZENIU. Równoległość skrót II – w geometrii relacja między obiektami takimi jak proste, odcinki, półproste.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Procesy współbieżne Copyright, 2006 © Jerzy R. Nawrocki Wstęp do informatyki Wykład.
Metody komunikacji i synchronizacji w obliczeniach równoległych Michał Radziszewski.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Procesy współbieżne Copyright, 2007 © Jerzy R. Nawrocki Wstęp do informatyki Wykład.
Wstęp do interpretacji algorytmów
a) 3x 3x b) X+3 X+3 c) X:3 X:3 d) X-3 X-3.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Wątki, programowanie współbieżne
Matematyka przed egzaminem czyli samouczek dla każdego
Podział mikroprocesorów
Zapis prezentacji:

Wstęp do programowania Wykład 7 Programowanie współbieżne, równoległe i rozproszone

Definicje Proces – wykonujący się program wraz z zasobami przydzielonymi mu przez system operacyjny. Wątek – sekwencja działań, która może wykonywać się jednocześnie z innymi sekwencjami działań w kontekście jednego procesu 

Przetwarzanie równoległe, współbieżne i rozproszone Przetwarzanie równoległe (ang. parallel computing) Wykonywanie dwóch lub więcej procesów jednocześnie. Przetwarzanie współbieżne (ang. concurrent computing) Wykonywanie dwóch lub więcej procesów w taki sposób, że każdy z nich rozpoczyna się zanim skończą się pozostałe. Przetwarzanie rozproszone (ang. distributed computing) Wykonywanie dwóch lub więcej procesów jednocześnie na kilku komputerach połączonych siecią.

Superkomputer IBM Blue Gene P (2007) 36*1012 FLOPS FLOPS – FLoating point Operations Per Second

Superkomputer Sequoia (2012) 17.17*1015 FLOPS

Superkomputer Tianhe-2 (2013) 33.86 *1015 FLOPS Pamięć operacyjna: 1.34*106 gigabajtów 390 000 000 $

Klaster Ariel IV firmy Sun

Gęstość mocy

Procesor wielordzeniowy

Zasób dzielony Zasób dzielony – zasób, z którego korzysta kilka procesów (wątków). Problem powstaje wtedy jeśli tylko jeden proces (ograniczona liczba procesów) może w danej chwili korzystać z zasobu. W codziennym życiu: łazienka, telefon, wózki w hipermarkecie.

Sekcja krytyczna Sekcja krytyczna – fragment procesu, w którym korzysta on z zasobu dzielonego. Jeśli jeden z procesów wykonuje swoją sekcję krytyczną, inne procesy, które chcą wykonywać swoje sekcje krytyczne muszą czekać.

Przykład int x; proces1; proces2; int i,y; int i,y; { { { { for (i=1; i<=10; i++) for (i=1; i<=10;i++) { { y=x; y=x; y++; y++; x=y; x=y; } } } }

Problem wzajemnego wykluczania Zsynchronizować n procesów, z których każdy na przemian zajmuje się własnymi sprawami i wykonuje sekcję krytyczną, w taki sposób, aby żadne dwa procesy nie wykonywały swoich sekcji krytycznych w tym samym czasie. proces_i; obudź_sie; wstań; zjedz_śniadanie ……. umyj_się sekcja krytyczna

Schemat procesu proces; //deklaracje { while (true) własne sprawy; protokół wstępny; sekcja krytyczna; protokół końcowy; }

Poprawność programów współbieżnych Bezpieczeństwo Program współbieżny jest bezpieczny jeśli nie doprowadza do niepożądanego stanu. W przypadku problemu wzajemnego wykluczania własność bezpieczeństwa oznacza, że nigdy dwa procesy nie znajdą się jednocześnie w swoich sekcjach krytycznych. Żywotność Program współbieżny jest żywotny jeśli zapewnia, że każde pożadane zdarzenie w końcu zajdzie. W przypadku problemu wzajemnego wykluczania własność żywotności oznacza, że jeśli jakiś proces czeka na wejście do swojej sekcji krytycznej, to w końcu do niej wejdzie.

Blokada (zakleszczenie) Zbiór procesów znajduje się w stanie blokady, jeśli każdy z tych procesów jest wstrzymany w oczekiwaniu na zdarzenie, które może być spowodowane tylko przez jakiś inny proces z tego zbioru. Przykład: osoby A i B potrzebują noża i widelca. Na stole znajduje się jeden nóż i jeden widelec. Jeśli osoba A posiada widelec i czeka aż osoba B zwróci nóż, a osoba B posiada nóż i czeka aż osoba A zwróci widelec, to mamy blokadę.

Problem producentów i konsumentów … Producenci produkują porcje informacji i kładą je na bufor. Konsumenci pobierają porcje z bufora. Porcje powinny być pobierane w kolejności ich produkcji. Jeśli bufor jest pełny, producent musi czekać. Jeśli bufor jest pusty, konsument P1 P2 P3 Pn Producenci … Bufor … K1 K2 Km K3 Konsumenci

Problem czytelników i pisarzy Należy zsynchronizować dwie grupy procesów reprezentujących czytelników i pisarzy konkurujących o dostęp do wspólnej czytelni. Proces czytelnik co jakiś czas odczytuje informację zgromadzoną w czytelni i może to robić z innymi czytelnikami. Proces pisarz co jakiś czas zapisuje nową informację w czytelni i musi wówczas przebywać w czytelni sam. Zakładamy, że operacje czytania i pisania trwają skończoną ilość czasu.

Problem pięciu filozofów

Algorytm piekarniany (Lampart) Proces, który chce wejść do swojej sekcji krytycznej, pobiera numerek. Następnie czeka aż wszystkie procesy, które pobrały wcześniejsze numerki zrealizują swoje sekcje krytyczne. Wada: aktywne czekanie!

Semafory (Dijkstra) Semafor -- zmienna całkowita przyjmująca wartości nieujemne. Na semaforze S określone są dwie atomowe operacje: wait(S) (opuszczenie semafora) i signal(S) (podniesienie semafora) wait(S): jeśli S>0, to S=S-1 wpp wstrzymaj działanie procesu wykonującego tę operację. signal(S): jeśli są procesy wstrzymane w wyniku operacji opuszczania, wznów jeden z nich. W przeciwnym przypadku S++.

Semafory i wzajemne wykluczanie semaphore S=1; proces(int i) { while(true) { własne sprawy; wait(S); sekcja krytyczna; signal(S); } }

Spotkanie (rendezvous) Wątek 1: Wątek 2: A; B; C;D; (A, B, C, D – instrukcje) Chcemy, aby A wykonała się przed D oraz C przed B. semaphore jest1=0, jest2=0; Wątek 1: Wątek 2: A ; C; signal(jest1); signal(jest2); wait(jest 2); wait(jest1); B; D