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

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

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

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

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

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

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

Wprowadzenie do programowania współbieżnego

1.1 Definicja procesu

Wstęp do programowania 2

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

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

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

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

9. Problem wzajemnego wykluczania i sekcji krytycznej

Modelowanie procesów współbieżnych

Mikroprocesor Operacje wejścia / wyjścia

Metody obsługi zdarzeń

LEKCJA TEMAT: Zasada działania komputera.

Prezentacja systemu RTLinux

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Zaawansowane programowanie w C++ (PCP)

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

1. Szeregowanie w systemach czasu rzeczywistego

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Budowa systemów komputerowych

Algorytmy i Struktury Danych

Przerwania, polling, timery - wykład 9

Programowanie współbieżne i rozproszone

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

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

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

Wstęp do Informatyki. Klasyfikacja oprogramowania

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

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

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

Architektura systemów komputerowych. dr Artur Bartoszewski

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

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

ξ II.UWr Wprowadzenie do STM

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

Analiza ilościowa w przetwarzaniu równoległym

Podstawy programowania komputerów

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

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

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

Architektura komputerów

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

Systemy operacyjne. Paweł Pełczyński

Działanie komputera i sieci komputerowej.

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

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

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Architektura i administracja systemów operacyjnych

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Algorytm. a programowanie -

Podstawy Informatyki Systemy operacyjne

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

Planowanie przydziału procesora

Bazy danych 2. Wykład 1

Akademia Techniczno-Humanistyczna w Bielsku-Białej

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

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

Język UML w modelowaniu systemów informatycznych

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Bazy danych. Andrzej Łachwa, UJ, /15

Architektura komputera

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

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

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Programowanie obiektowe

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Czujniki obiektowe Sterowniki przemysłowe

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

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

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

Planowanie przydziału procesora

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

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

Wykład IV. Układy we/wy. Studia Podyplomowe INFORMATYKA Architektura komputerów

Historia modeli programowania

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Algorytmy dla maszyny PRAM

Systemy operacyjne III

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

Architektura komputerów. Układy wejścia-wyjścia komputera

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

Programowanie wielowątkowe. Tomasz Borzyszkowski

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Wprowadzenie do systemów operacyjnych

Transkrypt:

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności 1.1 Dlaczego zajmujemy się współbieżnością? W ciągu ostatnich 30 lat wzrost mocy przetwarzania osiągano przez: Zwiększenie częstotliwości zegara Optymalizację wykonywania operacji Zastosowanie pamięci podręcznych Prawo Moor a mówi że ekonomicznie optymalna liczba tranzystorów w układzie scalonym podwaja się co 20 miesięcy. Jest ono ekstrapolowane na moc obliczeniową komputerów. Prawo to nie sprawdza się w odniesieniu do częstotliwości zegara. Od około roku 2003 obserwuje się jego stabilizację. Prawo Moore a napotka bariery związane z prawami fizyki: Tranzystor nie może być mniejszy od atomu Prędkość światła jest ograniczona

J. Ułasiewicz Programowanie aplikacji współbieżnych 2 Przewiduje się że w ciągu najbliższych kilku lat wzrost mocy przetwarzania będzie osiągana przez: Procesory wielordzeniowe Zastosowanie pamięci podręcznych W dalszej perspektywie głównym motorem wzrostu mocy przetwarzania komputerów będzie zwiększanie stopnia równoległości przetwarzania. Nie da się jednak tego osiągnąć bez radykalnej zmiany w oprogramowaniu. Wnioski: Aby wykorzystać możliwości sprzętu w dziedzinie przetwarzania równoległego należy dostosować do tego oprogramowanie. Aplikacje będą musiały być projektowane jako w coraz większym stopniu współbieżne aby wykorzystać ciągle rosnącą moc sprzętu Współczesne systemy i aplikacje charakteryzują się coraz większą złożonością. Typowe aplikacje: 1. Wiele procesów wykonywanych w środowisku systemu pracującego z podziałem czasu 2. Wiele procesów wykonywanych na komputerze wieloprocesowym 3. Wiele procesów wykonywanych na wielu powiązanych w jeden system maszynach (ang. Cluster). W systemach takich stosuje się podział zadania na procesy gdyż zapewnia to określone korzyści: 1. Polepszenie wykorzystania systemu, 2. Zmniejszenie czasu przetwarzania 3. Ułatwienia w projektowaniu oprogramowania.

J. Ułasiewicz Programowanie aplikacji współbieżnych 3 1.2 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa zwykle w jednym z wielu języków programowania. Za Wirthem możemy podać definicję programu: Program = algorytm + struktury danych Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem. Proces - wykonujący się program Proces jest więc aktywną strukturą dynamiczną istniejącą tylko w środowisku działającego komputera.

J. Ułasiewicz Programowanie aplikacji współbieżnych 4 1.3 Podstawowe definicje współbieżności Procesy sekwencyjne (ang. Sequential processes) Procesy są sekwencyjne jeżeli następny proces ze zbioru procesów rozpoczyna się po zakończeniu procesu poprzedniego. Rys. 1-1 Procesy i wykonywane są sekwencyjnie Procesy współbieżne (ang. Concurrent processes) Dwa procesy są współbieżne jeżeli jeden z nich rozpoczyna się przed zakończeniem drugiego. Rys. 1-2 Procesy i wykonywane są współbieżnie Procesy równoległe (ang.paralell processes) Dwa procesy są równoległe jeżeli jeden z nich rozpoczyna się przed zakończeniem drugiego i wykonywane są jednocześnie na oddzielnych procesorach.

J. Ułasiewicz Programowanie aplikacji współbieżnych 5 Procesor 1 Procesor 2 Rys. 1-3 Procesy i wykonywane są równolegle. Rodzaje współbieżności Współbieżność konkurencyjna procesy nie współpracują ze sobą. Ich oddziaływanie polega tylko na konkurowaniu o dostęp do zasobów których potrzebują. Współbieżność kooperacyjna procesy współpracują ze sobą działając w ramach aplikacji jednej współbieżnej. Komunikują i synchronizują się ze sobą w celu wykonania pewnego zadania.

J. Ułasiewicz Programowanie aplikacji współbieżnych 6 1.4 Sprzętowe podstawy współbieżności Niezbędnym minimum sprzętowym potrzebnym do implementacji takiego systemu jest: System przerwań Układ zegarowy generujący impulsy które są zamieniane w przerwania. Autonomiczne kontrolery urządzeń zewnętrznych sygnalizujące przerwaniem zakończenie operacji. Urządzenia we /wy N IRQ 2IRQ IRQ 1 Pamięć Procesor INT Kontroler przerwań Zegar Kontroler we/wy 1 Kontroler we/wy M Magistrala Rys. 1-4 Uproszczony schemat komputera mogącego wykonywać współbieżnie wiele procesów. Zdarzenia w systemie komputerowym: Układ zegarowy cyklicznie generuje żądania przerwań IRQ0. Kontrolery urządzeń wejścia / wyjścia generują żądania IRQ1 - IRQN gdy wystąpi w nich pewne zdarzenie. Żądania przerwań IRQ0 IRQN doprowadzane są do kontrolera przerwań. Kontroler wysyła do procesora przerwanie INT.

J. Ułasiewicz Programowanie aplikacji współbieżnych 7 Procesor Obliczenia Programowanie ukladu IO przerwanie Obliczenia Kontroler IO transfer Rys. 1-5 Przebieg operacji wejścia wyjścia wykonywanej przez kontroler wejścia wyjścia Procesor Kontroler IO T1 Rys. 1-6 Proces wykonywany w trybie wyłącznym Procesor Kontroler IO T2 Rys. 1-7 Proces wykonywany w trybie wyłącznym Procesor Kontroler IO T3 Rys. 1-8 Procesy i wykonywane w trybie wieloprogramowym T3 < T1 + T2 Gdy procesy i wykonywane są w trybie wieloprogramowym ich łączny czas wykonania T3 jest nie większy niż suma czasów wykonania w trybie wyłącznym: T3 <= T1 + T2

J. Ułasiewicz Programowanie aplikacji współbieżnych 8 1.5 Przełączanie procesów, wieloprogramowość Współczesne komputery są na tyle wydajne że bez trudności mogą wykonywać wiele procesów które współdzielą czas procesora. Procesy zgodnie z kolejnością wyznaczoną przez procedurę szeregującą (ang. scheduler) wykonywane są kolejno przez zadany kwant czasu (ang. time slice). P3 Czas Rys. 1-9 Procesy,, P3 wykonujące się w trybie podziału czasu (ang. time scharing) Podstawowym mechanizmem umożliwiającym taki tryb pracy są przerwania. Przerwanie Powrót z procedury ISR obsługi Procedura przerwania Zachow obsługi Odtworze proces anie nie przerwania proces Czas rejestrów rejestrów Rys. 1-10 Obsługa zdarzenia poprzez procedurę obsługi przerwania

J. Ułasiewicz Programowanie aplikacji współbieżnych 9 Obsługa przerwania - chwilowe wstrzymanie aktualnie wykonywanego procesu i wykonanie procedury przypisanej zdarzeniu powodującemu przerwanie po zakończeniu której następuje powrót do przerwanego lub innego procesu. Pojedynczy przełączenie składa się z trzech faz: 1. Zachowania kontekstu procesu dotychczas wykonywanego. 2. Podjęcie decyzji który z procesów wznowić. 3. Przywrócenie kontekstu nowego procesu. Kontekst procesu wszystkie informacje potrzebne do wznowienia zawieszonego wcześniej procesu. zachowanie kontekstu decyzja szeregująca przywrócenie kontekstu wykonywanie wykonywanie zachowanie kontekstu Czas decyzja szeregująca przywrócenie kontekstu Rys. 1-11 Zachowanie kontekstu, wykonywanie i przywrócenie kontekstu procesu

J. Ułasiewicz Programowanie aplikacji współbieżnych 10 Przełączenia procesów mają miejsce w następujących sytuacjach: Wystąpiło przerwanie zegarowe i system stwierdził że wykonywany proces wyczerpał już swój kwant czasu. Wystąpiło przerwanie zewnętrzne np. od kontrolera wejścia / wyjścia pewnego urządzenia sygnalizujące zakończenie się zleconej wcześniej operacji. Proces bieżący wykonał pewną niedozwoloną operację polegającą na naruszeniu systemu ochrony zasobów procesora Zdarzenie takie powoduje przerwanie wewnętrzne procesora. Wykonywany proces wykonał wywołanie systemowe zmieniające status gotowości przynajmniej jednego procesu. Przełączenia procesów występują w nie dających się przewidzieć momentach czasu. Stąd nie można czynić założeń że pewien ciąg instrukcji danego procesu nie zostanie przerwany.

J. Ułasiewicz Programowanie aplikacji współbieżnych 11 1.6 Przeplot i operacje atomowe W systemach z jednym procesorem procesy współbieżne muszą się wykonywać z wykorzystaniem podziału czasu procesora (przeplot). Program jest zazwyczaj pisany w języku wysokiego poziomu. Wykonywane są natomiast instrukcje kodu maszynowego będące wynikiem kompilacji programu źródłowego przez kompilator. Operacja atomowa Operacją atomową nazywamy taką operację która wykonywana jest przez procesor niepodzielnie. Znaczy to że o ile się rozpocznie, musi być w trybie wyłącznym wykonana i zakończona. Pojedyncza instrukcja kodu maszynowego jest operacją atomową. Trudno jest stwierdzić jakie operacje zapisane w języku wyższego poziomu będą operacjami atomowymi. Wyodrębnienie instrukcji atomowych jest istotne gdy dwa lub więcej procesy korzystają ze wspólnego obszaru pamięci. Przykład 1 - hazard Zmienna wspólna X = 0 Proces 1 Proces 2 X++ X++ Dwa procesy inkrementują wspólna zmienną Instrukcja ta może być przetłumaczona przez kompilator co najmniej na dwa sposoby: Sposób 1 Sposób 2 INC X MOV A,X ADD A, 1 MOV X, A

J. Ułasiewicz Programowanie aplikacji współbieżnych 12 Proces Instrukcja Wartość X 0 INC X 1 INC X 2 Przypadek 1 Proces Instrukcja Wartość X 0 MOV A, X 0 ADD A,1 0 MOV A, X 0 ADD A,1 0 MOV X, A 1 MOV X, A 1 Przypadek 2 Przykład 2 - wyścigi Aplikacja składa się z dwu procesów i mających dostęp do wspólnej zmiennej i. Proces Proces i = 0; i = 0; while ( i < 10) { while ( i > - 10) { i = i +1; i = i - 1; } } printf( wygrał ); printf( wygrał ); W powyższym przykładzie instrukcje atomowe kodu procesów i są przeplatane.

J. Ułasiewicz Programowanie aplikacji współbieżnych 13 A1 A2 A3 A4... An Instrukcje procesu B1 B2 B3 B4... Bn Instrukcje procesu A1 A2 B1 B2 B3 A3 A4 A5 B4... An Przeplot instrukcji procesu i Rys. 1-12 Instrukcje procesów i wykonywane w trybie przeplotu - Nie możemy poczynić żadnych założeń dotyczących momentów przełączenia procesów i - Nie da się określić wyniku działania powyższych procesów. Wynik działania aplikacji współbieżnej nie może być uzależniony od sposobu przełączania procesów. Musi być prawidłowy dla wszystkich możliwych przeplotów. Wzajemne wykluczanie Wzajemne wykluczanie musi być zapewnione gdy kilka procesów ma dostęp do wspólnego obszaru pamięci i przynajmniej jeden z nich modyfikuje ten obszar.

J. Ułasiewicz Programowanie aplikacji współbieżnych 14 1.7 Poprawność aplikacji współbieżnych Rodzaje aplikacji: 1. Aplikacje transformacyjne Procesy skończone które wykonują obliczenie czyli pobierają dane które mają przekształcić w wyniki. Kryterium poprawności: przekształcenie danych zgodnie ze specyfikacją w skończonym czasie 2. Aplikacja reaktywne Wykonują się dowolnie długo (być może w nieskończoność) i ich celem jest interakcja z otoczeniem (wymiana danych). Kryterium poprawności: Prawidłowa interakcja z otoczeniem - czasowa i dotycząca przekształcania danych. Kryterium poprawności aplikacji transformacyjnej Aplikacja transformacyjnej jest poprawna jeżeli: 1. Zatrzymuje się 2. Jeżeli się zatrzyma to da poprawne wyniki Typowe aplikacje reaktywne to: - systemy operacyjne, - aplikacje sterujące obiektami, - serwery baz danych - serwery WWW. Aplikacje te nie kończą się, a nawet jeżeli, to nie jest ich zadaniem przedstawienie jakiegoś końcowego wyniku. Dla tego typu aplikacji ważniejsze są własności dynamiczne to znaczy zachowanie się aplikacji w czasie. Ważne jest aby system operacyjny prawidłowo sterował komputerem i nie zawieszał się, program sterujący utrzymywał obiekt w pożądanym stanie a serwer bazy danych odpowiadał na zlecenia prawidłowo i w rozsądnym czasie.

J. Ułasiewicz Programowanie aplikacji współbieżnych 15 Dla określenia prawidłowości aplikacji reaktywnych używa się pojęć: Bezpieczeństwa, Żywotności Uczciwości. Bezpieczeństwo Aplikacja jest bezpieczna jeżeli utrzymuje system w pożądanym stanie. Aplikacja nie jest bezpieczna jeżeli: Da nieprawidłowe wyniki np. nie jest zachowany warunek wzajemnego wykluczania Nie będzie wykonywał pożądanych działań - ulegnie blokadzie O1 K1 Odpowiedź K2 Z1 Z1 Z3 Z2... Z2 Serwer Kolejka zleceń KN Klienci Rys. 1-13 Model przetwarzania typu klient - serwer W odniesieniu do modelu klient serwer bezpieczeństwo oznacza że klienci są obsługiwani w zadowalający sposób. 1. Serwer nie zaprzestał obsługi zleceń. 2. Na zlecenia odpowiadał w prawidłowy sposób.

J. Ułasiewicz Programowanie aplikacji współbieżnych 16 Blokada Każdy z zablokowanych procesów oczekuje na zdarzenie które może być wygenerowane tylko przez któryś z zablokowanych procesów. Blokada zwana też zakleszczeniem jest typowym zagrożeniem aplikacji współbieżnych. Zagłodzenie Zagłodzenie występuje gdy procesowi cały czas odmawia się dostępu do zasobów których ten potrzebuje by wykonać zlecone mu zadanie. Dla aplikacji reaktywnych nie formułuje się warunku zakończenia. Odpowiednikiem jest żywotność. Żywotność Aplikacja jest żywotna jeżeli każde pożądane zdarzenie w końcu zajdzie. W modelu klient serwer żywotność oznacza że każdy klient zostanie w końcu obsłużony.

J. Ułasiewicz Programowanie aplikacji współbieżnych 17 Uczciwość Aplikacja jest uczciwa jeżeli żądające obsługi procesy są traktowane jednakowo lub zgodnie ze swoimi priorytetami. W modelu klient serwer uczciwość oznacza że każdy klient zostanie obsłużony zgodnie z kolejnością zgłoszeń lub priorytetem. Rodzaje uczciwości: 1. Uczciwość słaba jeżeli proces nieprzerwanie zgłasza żądanie to kiedyś będzie ono obsłużone. 2. Uczciwość mocna jeśli proces zgłasza żądanie nieskończenie wiele razy to w końcu zostanie ono obsłużone. 3. Uczciwość liniowa jeśli proces zgłasza żądanie będzie ono obsłużone zanim dowolny inny proces będzie obsłużony więcej niż raz. 4. Uczciwość typu FIFO żądania procesów są obsługiwane zgodnie z kolejnością ich zgłaszania. (FIFO ang. First-In First-Out) sprawdzanie sprawdzanie Uczciwość mocna proces zgłasza żądanie nieskończoną ilość sprawdzanie sprawdzanie Uczciwość słaba proces musi zgłaszać żądanie nieprzerwanie

J. Ułasiewicz Programowanie aplikacji współbieżnych 18 1.8 Skutki stosowania współbieżności Korzyści wynikające z zastosowania współbieżności: 1. Polepszenie wykorzystania zasobów. Gdy jakiś proces czeka na niedostępny w danej chwili zasób, procesor może wykonywać inny proces. 2. Podział zadania na procesy umożliwia wykonywanie ich na oddzielnych maszynach. Prowadzi to do zrównoleglenia przetwarzania. 3. Podział dużego zadanie na wiele mniejszych komunikujących się procesów prowadzi do dekompozycji problemu. Przez co ułatwia ich implementację, uruchamianie i testowanie przez wielu niezależnych programistów. Trudności powstające przy implementacji aplikacji współbieżnych: - problem sekcji krytycznej - problem synchronizacji procesów - problem zakleszczenia Procesy tworzące aplikację nie działają w izolacji. Muszą jakoś ze sobą współpracować co prowadzi do: - Konieczności wzajemnej wymiany informacji - komunikacja międzyprocesowa. - Zapewnienia określonej kolejności wykonania pewnych akcji - problem synchronizacji. Przedmiot programowania współbieżnego Metodologia tworzenia aplikacji składających się z wielu komunikujących się i dzielących zasoby procesów współbieżnych.