Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Przetwarzanie równoległe i rozproszone
Krzysztof Banaś
kbanas@pk.edu.pl
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Motywacja
Po co przedmiot „Przetwarzanie równoległe i rozproszone” ?
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Motywacja
➔
Rozwój sprzętu komputerowego:
procesory wielordzeniowe
komputery wieloprocesorowe
klastry
sieci
➔
Rozwój systemów komputerowych:
symetryczna wieloprocesorowość
rozproszone systemy operacyjne
rozproszone systemy plików
programy usługowe warstwy pośredniej (middleware)
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Motywacja
➔
Rozwój programów użytkowych
architektura klientserwer
programy peertopeer
programy równoległe
programy gridowe
➔
Korzyści z przetwarzania równoległego i rozproszonego
zwiększenie stopnia wykorzystania sprzętu
zwiększenie wydajności programów
zwiększenie niezawodności systemów
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Historia i pojęcia wstępne
➔
Współbieżność
realizacja wielu programów (procesów) w taki sposób, że ich
trwanie od momentu rozpoczęcia do momentu zakończenia
może się na siebie nakładać
współbieżność pojawiła się wraz z wielozadaniowymi
systemami operacyjnymi (lata 60te, Multics – 1965) i nie
wymusza równoległości
współbieżność związana jest z szeregiem problemów
teoretycznych wynikłych z prób realizacji wielozadaniowych
systemów operacyjnych
istnieje wiele mechanizmów niskiego poziomu (systemowych)
do rozwiązywania problemów współbieżności
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Historia i pojęcia wstępne
➔
Obliczenia równoległe:
dwa lub więcej procesów (lub wątków) jednocześnie
współpracuje (komunikając się wzajemnie) w celu rozwiązania
pojedynczego zadania (najczęściej z określonej dziedziny
zastosowań)
rozwój związany z powstaniem w latach siedemdziesiątych
komputerów równoległych
problemy obliczeń równoległych (poza klasycznymi
zagadnieniami współbieżności) są najczęściej związane z
konkretną dziedziną zastosowań
obliczenia równoległe są silnie związane z dziedziną obliczeń
wysokiej wydajności (i obliczeniami naukowoinżynierskimi)
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Historia i pojęcia wstępne
➔
Przetwarzanie rozproszone
realizacja programów na systemach wieloprocesorowych z
zasobami lokalnymi (najczęściej odrębnych komputerach
połączonych siecią)
rozwój związany z eksplozją Internetu w latach
osiemdziesiątych i dziewięćdziesiątych
problem wspólnego korzystania z zasobów
luźniejsze powiązanie współpracujących procesów niż w
przypadku obliczeń równoległych
wykorzystanie infrastruktury sieciowej (protokoły,
bezpieczeństwo)
znaczenie dla niezawodności przetwarzania
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Problemy współbieżności
➔
Problem podstawowy: rywalizacja w dostępie do
zasobów komputera.
➔
Wzajemne wykluczanie:
dwa lub więcej procesów realizuje tzw. sekcje krytyczne –
fragmenty programu, które mogą być jednocześnie
wykonywane tylko przez jeden proces
problemem jest rozstrzygnięcie konfliktów przy wejściu do
sekcji krytycznej i umożliwienie dalszego działania po wyjściu
z sekcji krytycznej
możliwe błędy:
zakleszczenie
zagłodzenie
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Problemy współbieżności
➔
Problem producentów i konsumentów:
jedna grupa procesów produkuje dane, druga grupa je
konsumuje – jak zagwarantować sprawny (bez zakleszczeń i
zagłodzeń) przebieg tej procedury
➔
Problem ucztujących filozofów (pięciu):
filozof: albo je, albo myśli
filozofowie siedzą przy stole, każdy ma talerz, pomiędzy
każdymi dwoma talerzami leży widelec
na środku stołu stoi misa z spaghetti
problem polega na tym, że do jedzenia spaghetti potrzebne są
dwa widelce (po obu stronach talerza)
jak zapewnić przeżycie filozofom?
Krzysztof Banaś
Przetwarzanie równoległe i rozproszone.
Narzędzia systemowe
➔
Unix (Linux)
rozwidlanie (tworzenie) procesów – fork(), join()
zarządzanie procesami – przerwania (interrupts)
sterowanie dostępem do sekcji krytycznych – zamki (locks),
semafory (semaphores)
komunikacja międzyprocesowa – sygnały (signals), łącza
(links), potoki (pipes), komunikaty (messages), pamięć wspólna
(shared memory), gniazda (sockets), itp.