Programowanie współbieżne

Slides:



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

Podstawowe pojęcia programowania współbieżnego
Modelowanie aktywności
Diagramy stanów i diagramy aktywności
METODY ANALIZY PROGRAMÓW
Wykonał : Marcin Sparniuk
SYSTEMY OPERACYJNE WSTĘP
Wprowadzenie do C++ Zajęcia 2.
Metoda szeregu Fouriera
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
Badania operacyjne. Wykład 1
Sieci komputerowe.
Systemy Równoległe.
LITERATURA M.Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, WN-T, 1996 I.Foster, Designing and Building parallel programs, Cocepts and.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 1: Wprowadzenie. Pojęcia podstawowe
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Systemy operacyjne Bibliografia:
Temat nr 10: System przerwań
Wstęp do interpretacji algorytmów
ZARZĄDZANIE PROCESAMI
Język Java Wielowątkowość.
Sieci komputerowe © Jerzy Skurczyński
Semafory według normy POSIX
4. TEORETYCZNE MODELE PROCESÓW WSPÓŁBIEŻNYCH Teoretyczne modele uwzględniają wybrane cechy rzeczywistych procesów, stanowiąc kompromis pomiędzy łatwością
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
Podstawy Informatyki zajęcia dla Studentów I-go roku studiów na Wydziale Fizyki i Informatyki Stosowanej AGH Dr inż. Piotr Gronek Zakład Informatyki Stosowanej.
Podstawy programowania
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Zasada działania komputera
BUDOWA I DZIAŁANIE SIECI KOMPUTEROWYCH
Autor: Justyna Radomska
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Sieciowe Systemy Operacyjne
W jaki sposób użytkownik komunikuje się z komputerem?
XML – eXtensible Markup Language
Przerwanie ang. interrupt.
Maszyna wirtualna ang. virtual machine, VM.
Buforowanie D e f i n i c j a.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Programowanie obiektowe – język C++
Spis treści W świecie algortmów -Budowa algorytmu
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Algorytmika.
Diagram aktywności (czynności)
Diagram czynności Diagram czynności (activity diagram) służy do modelowania dynamicznych aspektów systemu. Diagram czynności przedstawia sekwencyjne lub.
Pamięć RAM Pamięć RAM.
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.
Oprogramowaniem (software) nazywa się wszystkie informacje w postaci zestawu instrukcji i programów wykonywanych przez komputer oraz zintegrowanych danych.
Wstęp do interpretacji algorytmów
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Wstęp do programowania Wykład 1
Wstęp do programowania Wykład 7
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Matematyka przed egzaminem czyli samouczek dla każdego
Efektywność algorytmów
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Programowanie współbieżne © Jerzy Skurczyński Instytut Matematyki Uniwersytetu Gdańskiego Gdańsk, 2000 r.

Literatura: 1. M.J. Bach, Budowa systemu operacyjnego UNIX, WNT, 1995. 2. M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, WNT, 1996. 3. J.S. Gray, Komunikacja między procesami w Unixie, RM, 1998. 4. J. JáJá, An Introduction to Parallel Algorithms, Addison-Wesley, 1992. 5. Z. Manna, A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems (Specification), Springer-Verlag, 1992. 6. A. Nye, Xlib Programming Manual, O’Reilly & Associates, Inc., 1993. 7. M.J. Rochkind, Programowanie w systemie Unix dla zaawansowanych, WNT, 1993. 8. R. Stevens, Programowanie zastosowań sieciowych w systemie Unix, WNT, 1996. Materiały do wykładu dostępne w: http:// julia . univ . gda . pl / ~ matjs / dydaktyka.html

1. PODSTAWOWE POJĘCIA Najważniejszym pojęciem pierwotnym tego wykładu będzie proces obliczeniowy. Proces jest wykonywanym programem. Program - jest obiektem statycznym (formalnym opisem tego, co ma być wykonane). Proces - jest obiektem dynamicznym (ciągiem sekwencyjnie wykonywanych instrukcji programu). Każdy program jest skończony, natomiast procesy mogą być skończone lub (teoretycznie) nieskończone. Procesy transformacyjne są to procesy skończone, które mają na celu wykonanie pewnego obliczenia (to jest przekształcenie pobranych na początku danych tak, aby na końcu uzyskać właściwe, czyli spełniające specyfikację wyniki). Procesy reaktywne są to procesy, które mogą być wykonywane dowolnie długo (teoretycznie nieskończenie długo), i których podstawowym celem jest interakcja (naprzemienna wymiana informacji) z otoczeniem.

W przypadku procesów transformacyjnych podstawowymi kryteriami oceny programów wykonywanych przez te procesy są: 1) poprawność (skończony czas obliczeń oraz zgodność wyników ze specyfikacją dla wszystkich możliwych danych dopuszczalnych); 2) złożoność (zużycie zasobów - czasu procesora oraz pamięci - w funkcji rozmiaru danych). W przypadku procesów reaktywnych oceniana jest głównie prawidłowość wymiany informacji z otoczeniem. W przeciwieństwie do procesów transformacyjnych zależy nam też, aby procesy reaktywne mogły wykonywać się dowolnie długo (nie zawieszały się). Uwaga. W praktyce oczywiście zależy nam też na jak najsprawniejszym (w takim sensie, jak dla procesów transformacyjnych) działaniu procesów reaktywnych, toteż wybrane fragmenty programów reaktywnych możemy oceniać tak, jak programy transformacyjne.

Dwa procesy nazywamy współbieżnymi, jeżeli każdy z nich rozpoczął się przed zakończeniem drugiego procesu. Przykłady 1) procesy są współbieżne 2) 3) procesy nie są współbieżne t t t Uwaga. O współbieżności możemy mówić zarówno w przypadku wykonywania procesów na tym samym komputerze, jak i na oddzielnych komputerach.

W literaturze można napotkać następujące określenia:  współbieżny (concurrent)  równoległy (parallel)  rozproszony (distributed) Są one używane w różnych kontekstach. Zazwyczaj pierwsze dwa używane są zamiennie, przy czym nieco częściej określenie „równoległy” oznacza „wykonywany współbieżnie na tym samym komputerze”. Natomiast określenie „rozproszony” oznacza „wykonywany współbieżnie na oddzielnych komputerach połączonych w sieć”. Obliczenia równoległe (na jednym komputerze) mogą odbywać się jako: 1) rzeczywiście równoległe - jeśli komputer ma wiele procesorów i każdy procesor obsługuje co najwyżej jeden proces w dowolnej chwili czasu; 2) pozornie równoległe - jeśli czas pracy jednego procesora dzielony jest na krótkie odcinki przydzielane różnym procesom na zasadzie przeplotu.

Dwa procesy współbieżne nazywamy niezależnymi, jeżeli fakt wykonywania któregokolwiek z nich w żaden sposób nie wpływa na wykonywanie drugiego. W przeciwnym przypadku procesy nazywamy zależnymi. Przykłady 1) Procesy wykonywane na dwóch oddzielnych PC (nie połączonych w sieć) przez dwóch nie- komunikujących się ze sobą użytkowników są niezależne. 2) Procesy wykonywane jednocześnie na tym samym komputerze i współdzielące plik roboczy są zależne. 3) Jeżeli jeden gracz uruchomi jednocześnie dwa programy szachowe i w jednym z nich będzie powielał ruchy wykonywane przez komputer w drugim - procesy będą zależne ! Uwaga. W rzeczywistości to, czy dwa procesy uznamy za niezależne, czy za zależne, w wielu przypadkach zależy od poziomu abstrakcji (ignorowania szczegółów) na jakim rozpatrujemy działanie tych procesów.

Kolejnym pojęciem pierwotnym, do jakiego będziemy się odwoływali, jest pojęcie zdarzenia. Przez zdarzenie będziemy rozumieli każdy fakt zachodzący poza procesem (jego środowiskiem), który ma jakiś wpływ na wykonywanie procesu. Przykłady 1) wprowadzenie danych przez użytkownika 2) nadejście sygnału od zegara systemowego 3) wyłączenie zasilania Zdarzenia dzielimy na synchroniczne i asynchroniczne. Synchroniczne to takie, o których proces z góry „wie”, że w określonym momencie mają nastąpić i jest na nie „przygotowany”, zdarzenia asynchroniczne występują w nieokreślonej z góry chwili czasu i mogą wymusić na procesie zachowanie się „wyjątkowe”. To, jak zaklasyfikujemy pewne zdarzenie, silnie zależy od poziomu abstrakcji, na jakim analizujemy zachowanie się procesu. Uwaga. Z punktu widzenia sprzętu zdarzenia asynchroniczne związane są zwykle z przerwaniami.

Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie pewnej liczby procesów współbieżnych (zazwyczaj procesy te są zależne). Podstawowe cele programowania współbieżnego : 1) przyspieszenie wykonywania obliczeń (w przypadku procesów transformacyjnych); 2) lepsze wykorzystanie zasobów (sprzętu); 3) umożliwienie współpracy wielu użytkownikom; 4) udostępnienie stylu programowania ułatwiającego tworzenie dużych, przejrzyście zorganizowanych programów. Uwaga. Wyjątkowo korzystne okazuje się połączenie idei współbieżności i obiektowości (programowanie tzw. obiektów współbieżnych jest bardzo dobrym sposobem modelowania rzeczywistych zjawisk).