Programowanie współbieżne i rozproszone



Podobne dokumenty
SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

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

16. Taksonomia Flynn'a.

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

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.

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Język Java wątki (streszczenie)

Podstawy Informatyki Systemy sterowane przepływem argumentów

Współbieżność w środowisku Java

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

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

Architektura komputerów

Architektura mikroprocesorów TEO 2009/2010

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Programowanie komputerów

Język Java wątki (streszczenie)

Programowanie wielowątkowe. Tomasz Borzyszkowski

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

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

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Język Java część 2 (przykładowa aplikacja)

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wątki w Javie. Piotr Tokarski

Kurs programowania. Wykład 8. Wojciech Macyna

4. Procesy pojęcia podstawowe

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

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

Nowoczesne technologie przetwarzania informacji

4. Procesy pojęcia podstawowe

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

Język Java część 2 (przykładowa aplikacja)

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

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

Wstęp. Przetwarzanie współbieżne, równoległe i rozproszone

PRZEWODNIK PO PRZEDMIOCIE

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

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

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

3.Przeglądarchitektur

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

4. Procesy pojęcia podstawowe

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Historia modeli programowania

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

LEKCJA TEMAT: Zasada działania komputera.

Podstawy programowania komputerów

3.Przeglądarchitektur

Podstawy współbieżności

Architektura Komputerów

Wprowadzenie do architektury komputerów. Taksonomie architektur Podstawowe typy architektur komputerowych

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Multimedia JAVA. Historia

Współbieżność w Javie

Współbieżność w Javie

Wykład 8: klasy cz. 4

Architektura komputerów

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Wstęp do programowania 2

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

Wprowadzenie do programowania współbieżnego

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

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

Programowanie współbieŝne. Paweł Rogaliński Politechnika Wrocławska

dr inż. Jarosław Forenc

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

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

Opis efektów kształcenia dla modułu zajęć

Wykład Ćwiczenia Laboratorium Projekt Seminarium

dr Krzysztof Podlaski

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

Pojęcia podstawowe. Oprogramowanie systemów równoległych i rozproszonych. Wykład 1. Klasyfikacja komputerów równoległych I

Introduction to Computer Science

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

Zaawansowane programowanie obiektowe - wykład 5

Podstawy programowania obiektowego

Programowanie Współbieżne. Wstęp

Technologie i usługi internetowe cz. 2

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

dr inż. Jarosław Forenc

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe

Architektura Systemów Komputerowych. Architektura potokowa Klasyfikacja architektur równoległych

Języki i paradygmaty programowania. I. Wprowadzenie

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

1 Atrybuty i metody klasowe

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) niestacjonarne (stacjonarne / niestacjonarne)

Technologie obiektowe

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

Transkrypt:

Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż.

Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J: Wprowadzenie do obliczeń równoległych. Wydawnictwo Naukowe PWN, Warszawa, 2013. Herlihy, M., Shavit, N.: Sztuka programowania wieloprocesorowego. Wydawnictwo Naukowe PWN, Warszawa, 2010.

Literatura szczegółowa (język Java) Barteczko, K.: Programowanie obiektowe i zdarzeniowe w Javie. Wydawnictwo PJWSTK, Warszawa, 2005. Barteczko, K., Drabik, W., Starosta, B.: Nowe metody programowania, tom I. Wydawnictwo PJWSTK, Warszawa, 2005. Barteczko, K., Drabik, W., Starosta, B.: Nowe metody programowania, tom II. Wydawnictwo PJWSTK, Warszawa, 2006. Brzuszek, M., Stpiczyński, P.: Programowanie współbieżne i rozproszone w języku Java. UMCS, Lublin, 2012: http://informatyka.umcs.lublin.pl/files/skrypty/stpiczynski_brzuszek_programowanie_wspolbiezne_i_rozproszone_w_jezyku_java.pdf Kaliszewska, M., Pieciukiewicz, T., Sobczak, A., Stencel, K.: Technologie internetowe. Wydawnictwo PJWSTK, Warszawa, 2007.

Literatura szczegółowa (język Java) Liguori, R., Liguori, P.: Java 8. Leksykon kieszonkowy. Wydawnictwo Helion, Gliwice, 2015. Wiele innych pozycji dotyczących języka Java i technologii opartych na języku Java.

Wykonywanie rozkazów Rozkazy maszynowe wykonywane są przez procesor sekwencyjnie. Rozkazy maszynowe posiadają dostęp do danych przechowywanych w pamięci głównej lub pomocniczej.

Program współbieżny Program współbieżny (concurrent program) zbiór programów sekwencyjnych, które można wykonywać równolegle. Proces program wchodzący w skład programu współbieżnego. Termin Program zarezerwowany jest do oznaczenia całego zbioru procesów programu współbieżnego. Procesy wchodzące w skład programu współbieżnego mogą ze sobą współdziałać.

Równoległy, współbieżny, rozproszony Przymiotnik Równoległy stosuje się w odniesieniu do systemów, w których wykonanie wielu programów nakłada się na siebie w czasie (są one wykonywane na różnych procesorach). Przymiotnik Współbieżny oznacza potencjalną równoległość (wykonanie procesów może ale nie musi nakładać się na siebie w czasie). Przymiotnik Rozproszony stosuje się w odniesieniu do systemów, w których wykonanie wielu programów obywa się na rozproszonych procesorach (np. w klastrach obliczeniowych)

Współbieżność Współbieżność jest bardzo użyteczną abstrakcją, dzięki której można lepiej zrozumieć program, zakładając, że wszystkie procesy wykonują się równolegle.

Powiązania komponentów systemów równoległych Współbieżny Rozproszony Źródło:A. Tanenbaum Struktura organizacyjna systemów komputerowych. Helion, Gliwice, 2006.

Wykonywanie procesów współbieżnych Generalnie wykonanie procesów współbieżnych może przebiegać na trzy podstawowe sposoby: 1.Procesy wykonywane są przez pojedynczy procesor rzeczywisty metodą przeplotu. 2.Każdy proces wykonywany jest przez odrębny procesor, przy czym procesory mają dostęp do wspólnej pamięci. 3.Procesy wykonywane są przez odrębne, rozproszone procesory połączone kanałami komunikacyjnymi.

Klasyfikacja Flynna Klasyfikacja Flynna architektur komputerów opiera się na liczbie strumieni rozkazów i liczbie strumieni danych, które mogą być przetwarzane równolegle. SISD (Single Instruction Stream Single Data Stream) pojedynczy strumień rozkazów- pojedynczy strumień danych. Architektura von Neumanna (sekwencyjnie pobierany jest pojedynczy zestaw rozkazów operujący na pojedynczych danych). MIMD (Multiple Instruction Stream Multiple Data Stream) wiele strumieni rozkazów- wiele strumieni danych. Systemy wieloprocesorowe, w których co najmniej dwa procesory wykonują oddzielne strumienie rozkazów operujące na różnych danych.

Klasyfikacja Flynna SIMD (Single Instruction Stream Multiple Data Stream) pojedynczy strumień rozkazów- wiele strumieni danych. Procesory wektorowe, w których przez jeden procesor sterujący generowany jest pojedynczy strumień rozkazów, przekazywany do wielu oddzielnych procesorów arytmetycznych. Procesory arytmetyczne wykonują jednocześnie na różnych danych te same rozkazy. MISD (Multiple Instruction Stream Single Data Stream) wiele strumieni rozkazów- jeden strumień danych. Architektura nie jest wykorzystana w praktyce.

Klasyfikacja Flynna Źródło: Wikimedia Commons author: Colin M.L. Burnett

Przyśpieszenie zadania obliczeniowego t j czas wykonania zadania w systemie jednoprocesorowym. t w czas wykonania zadania w systemie wieloprocesorowym. S(n) przyśpieszenie przy użyciu systemu wieloprocesorowego składającego się z n procesorów. S n = t j t w

Prawo Amdahla T S łączny czas wykonywania ściśle sekwencyjnego kodu danego programu (na jednym procesorze). T R łączny czas wykonywania pozostałego ( równoległego ) kodu danego programu (na jednym procesorze). n liczba procesorów. S(n) przyśpieszenie przy użyciu systemu wieloprocesorowego składającego się z n procesorów. S n = T S T R T S T R n

Prawo Amdahla Źródło: B.S. Chalk: Organizacja i architektura komputerów. WNT, Warszawa, 1998.

Procesy i wątki W teorii współbieżności używany jest termin Proces. W językach programowania spotykany jest termin Wątek.

Procesy i wątki Proces wykonujący się program wraz z dynamicznie przydzielonymi mu przez system zasobami. Wątek sekwencja działań, która może wykonywać się współbieżnie z innymi sekwencjami działań w kontekście danego procesu (programu).

Procesy i wątki Proces wykonuje się we własnej przestrzeni adresowej zarządzanej przez system operacyjny. Wątek wykonuje się w przestrzeni adresowej jednego procesu.

Wykorzystanie wątków Wątki umożliwiają programiście tworzenie współbieżnych obliczeń w ramach jednego programu, np. programy interakcyjne zawierają osobny wątek obsługujący zdarzenia związane z interfejsem użytkownika.

Programy wielowątkowe W kontekście danego procesu może być wykonywanych wiele wątków. Mówimy wówczas o programie wielowątkowym.

Tworzenie klas wątków Sposób 1: Utworzenie klasy wątku, która dziedziczy z klasy Thread. Sposób 2: Utworzenie klasy wątku, która implementuje interfejs Runnable.

Tworzenie i uruchamianie wątku sposób 1 Zdefiniować klasę wątku, która dziedziczy z klasy Thread. Przedefiniować metodę run, umieszczając w niej instrukcje, które ma wykonać wątek. Stworzyć obiekt utworzonej klasy wątku. Wywołać na rzecz utworzonego obiektu wątku metodę start.

Tworzenie i uruchamianie wątku sposób 2 Zdefiniować klasę wątku, która implementuje interfejs Runnable. Zdefiniować metodę run, umieszczając w niej instrukcje, które ma wykonać wątek. Stworzyć obiekt utworzonej klasy wątku. Stworzyć obiekt klasy Thread, przekazując w konstruktorze referencję do utworzonego obiektu wątku. Wywołać na rzecz utworzonego obiektu klasy Thread metodę start.

Zakończenie pracy wątku Sposób naturalny: wątek kończy działanie, gdy kończy się wykonywanie jego metody run. Zakończenie metody run można uzyskać np. przez sprawdzenie określonego warunku zakończenia pracy wątku i gdy jest on spełniony - wykonanie instrukcji return. Sposób niezalecany: wywołanie metody stop na rzecz obiektu wątku.

Stany wątku Nowy wątek (New Thread) stan w momencie stworzenia obiektu wątku. Wykonywany (Runnable) stan po wywołaniu metody start na rzecz obiektu wątku. Stan ten oznacza potencjalną gotowość wątku do działania, a nie tylko samo wykonywanie wątku. Wątek jest bowiem wykonywany tylko w chwilach czasowych, gdy zostanie mu przydzielony czas procesora.

Stany wątku (cd.) Nie wykonywany (Not Runnable) stan, do którego wątek przechodzi m.in. na skutek: wywołania metody sleep, wywołania metody wait, blokowania na operacjach wejścia-wyjścia, blokowania na obiekcie synchronizowanym.

Stany wątku (cd.)

Priorytety wątków Każdy wątek posiada priorytet określony przez liczbę naturalną z zakresu od 1 (najniższy priorytet) do 10 (najwyższy priorytet). Domyślnie wątek ma taki priorytet jak wątek, który go stworzył. Wątek główny (metoda main) ma priorytet 5. Priorytety wątków uwzględniane są przy przydzielaniu wątkom czasu procesora.

Priorytety wątków (cd.) Priorytet wątku można dynamicznie zmieniać przez wywołanie na rzecz obiektu wątku metody setpriority, np.: watek.setpriority(8);

Przykłady dodatkowych metod klasy Thread Metody statyczne (wywoływane na rzecz klasy): yield( ) - polecenie systemowi aby przerwał wykonywanie bieżącego wątku i przydzielił czas procesora następnemu wątkowi, sleep(int n) uśpienie bieżącego wątku na n milisekund. Metody wywoływane na rzecz obiektu wątku: suspend( ) - zwieszenie wykonywania wątku, resume( ) - wznowienie wykonywania zawieszonego wątku, setname(string nazwa) ustawienie nazwy dla wątku.