Wyklad 11 Języki programowania równoległego
|
|
- Alina Łukasik
- 9 lat temu
- Przeglądów:
Transkrypt
1 Wyklad 11 Języki programowania równoległego Części wykładu: 1. Środowisko programu równoległego - procesy i wątki 2. Podstawowe problemy języków programowania równoległego 3. Języki programowania w środowisku z rozproszoną pamięcią - model OCCAM 4. Języki programowania w środowisku ze wspólną pamięcią - model OpenMP
2 Środowisko programu równoległego - procesy i wątki Proces - zapis lub wykonanie szeregowe ciągu instrukcji. Procesami w systemie komputerowym zarządza zwykle system operacyjny komputera. Z punktu widzenia systemu operacyjnego, proces jest to obiekt tworzony w celu wykonania programu lub jego części. Stworzenie procesu odbywa się przez wykonanie przez system operacyjny następujących czterech czynności: utworzenie deskryptora procesu przydział przestrzeni adresowej w pamięci operacyjnej załadowanie programu do przydzielonej przestrzeni adresowej przekazanie deskryptora procesu programowi szeregowania.
3 Program szeregowania, który działa na kolejkach deskryptorów procesów przydziela procesom czas procesora. Operacje wejścia/wyjścia zwykle powodują zawieszenie procesu i przekazanie czasu procesora innemu procesowi gotowemu do wykonania. Procesy wykonują się z podziałem czasu procesora (ang. time sharing). Polega to na przydzielaniu procesom aktywnym kwantów czasu procesora. Zmiana procesu w procesorze powoduje wymianę tzw. kontekstu procesu (ang. process context) w procesorze, zawierającego podstawowe zmienne stanu, rejestry procesora, wskaźniki na zasoby. Kontekst usuwanego procesu zapisany jest w deskryptorze procesu (ang. process descriptor).
4 Aby zwiększyć zrównoleglenie obliczeń wewnątrz procesu wprowadzono nowy typ elementu programowego tzw. wątek (ang. thread). Wątek jest to osobno zadeklarowany przez odpowiednie instrukcje ciąg instrukcji wewnątrz procesu, wykorzystujący zasoby procesu. Podobnie jak procesy wątki dzielą czas procesora. Wątkami zarządza również program szeregowania wątków (ang. thread scheduler) należący do systemu operacyjnego komputera, ale zmiana wątku w procesorze zajmuje dużo mniej czasu, gdyż wymaga zmiany licznika rozkazów i rejestru stanu procesora. Stąd wątki nazywane są również lekkimi procesami (ang. lightweight process). Procesy i wątki mogą być w jednym z trzech stanów: wykonywany, gotowy do wykonania (oczekujący w kolejce na czas procesora), zawieszony w oczekiwaniu na zajście określonego zdarzenia w systemie, np. zakończenie operacji we/wy.
5 Program nazywamy współbieżnym (ang. concurrent), jeśli zamieszczono w nim specyfikację równoległego wykonywania procesów. Procesy składowe programu współbieżnego nazywamy procesami współbieżnymi (ang. concurrent processes). Program nazywamy równoległym jeśli jego procesy składowe zostały odwzorowane do wykonania na równolegle działających procesorach. Procesy programu równoległego nazywamy procesami równoległymi.
6 Sposoby wykonania programów współbieżnych: wieloprogramowość (ang. multiprogramming) - wykonywanie programów (procesów) współbieżnych przez podział czasu jednego procesora - wykonanie pozornie w sposób równoległy, wieloprzetwarzanie (ang. multiprocessing) - wykonywanie programów (procesów) na oddzielnych procesorach mających dostęp do wspólnej pamięci tzw. multiprocesorach - wykonanie rzeczywiście równoległe, przetwarzanie rozproszone (ang. distributed processing) - wykonywanie programów (procesów) na oddzielnych procesorach mających lokalne pamięci bez dostępu do wspólnej pamięci - wykonanie rzeczywiście równoległe
7 Sposoby uzyskiwania równoległości wykonania programów: wykorzystanie języków programowania równoległego (ang. parallel programming languages), w których równoległość wykonywania elementów programu (procesów, wątków) jest określona przez programistę bezpośrednio w programie. wykorzystanie tzw. kompilatorów zrównoleglających (ang. parallelizing compilers), które automatycznie przetwarzają programy w języku programowania sekwencyjnego na programy równoległe.
8 Podstawowe problemy języków programowania równoległego, których rozwiązanie musi zapewnić zapewnione w języku: deklaracje procesów i ich elementów składowych, określenie porządku aktywacji procesów w programie mechanizmy wzajemnej synchronizacji procesów w trakcje wykonywania programu, środki dla wyrażenia komunikacji danych czyli wymiany danych między procesami składowymi.
9 Deklaracja lub identyfikacja procesów w programie: Procesy strukturalne Ich składnia i semantyka są zbliżone do procedury(funkcji), wywoływane przez nazwę z podaniem parametrów aktualnych wywołania Przykłady: process z języka Concurrent Pascal, Concurrent C; procedure z języka C, Modula, OCCAM; task z języka Ada. Procesy niestrukturalne Są to ciągi sekwencyjnych instrukcji, których początki są wyznaczane przez operatory (instrukcje) zrównoleglające drogi sterowania, Przykłady: cobegin, coend z języka Algol 68, CSP; begin, end z języka OCCAM.
10 Porządek aktywacji procesów współbieżnych i ich zakończenia Wyróżniamy następujące metody aktywacji procesów współbieżnych: Porządek aktywacji określony bezpośrednio przez specjalne operatory działające na procesach strukturalnych lub niestrukturalnych Przykłady: cobegin, coend w Algol 68, CSP; FORK, JOIN w Unix, PL1; parbegin, parend w CCS, PAR w OCCAM. Porządek aktywacji określony pośrednio przez deklarację zbioru procesów współbieżnych lub inicjalizację równoległą wcieleń zadeklarowanych procesów, Przykłady w językach Concurrent Pascal, Modula.
11 Mechanizmy synchronizacji procesów równoległych Synchronizacja (ang. synchronization) w programie równoległym nazywamy oddziaływanie stanu określonych składowych procesów równoległych programu na stan (wykonywanie się) innych procesów. Podstawowe mechanizmy synchronizacji Mechanizmy dla wykluczania wzajemnego (ang. mutual exclusion) wykonywania fragmentów (sekcji) krytycznych (ang. critical section) programów równoległych. Operacje na zmiennych wspólnych dla wielu procesów równoległych Przykład: semafory z operacjami p, v Obiekty strukturalne w programie, grupujące procesy, których wykonanie odbywa się z wykluczaniem wzajemnym Przykład: monitory
12 Mechanizmy dla zatrzymywania i wznawiania biegu procesów równoległych Operacje bezpośredniego sterowania biegiem procesów równoległych Przykłady: wait(s), send(s) w języku Modula, systemie Unix; corroutines z operacjami call, resume, return w językach SIMULA, Modula 2. Synchroniczne przesyłanie komunikatów, wyrównujące bieg procesów równoległych na operacjach komunikacji Przykład: operacje wyślij (!), odbierz (?) w języku OCCAM. Synchroniczne zdalne wywoływanie procedur, wyrównujące bieg procesów na deklaracjach i wywołaniach procedur w procesach równoległych Przykłady: operatory ACCEPT i wywołania zadań w języku Ada.
13 Mechanizmy komunikacji między procesami równoległymi Komunikacja przez wspólne zmienne w buforze, do którego mają dostęp sekcje krytyczne umieszczone w procesach równoległych, Przykłady: semafory Komunikacja przez dostęp do procedur działających na wspólnych danych, pod osłoną mechanizmów wykluczania wzajemnego wywołań procedur, Przykład: monitory w języku Ada Komunikacja w realizacji zdalnie wywoływanych procedur przez przekazywanie parametrów i odbieranie wyników Przykład: zdalne wywoływanie procedur Komunikacja przez asynchroniczne przesyłanie komunikatów przy pomocy operacji dotyczących wydzielonych zmiennych Przykład: protokoły komunikacyjne sieci Ethernet, Myrinet, Cambridge Ring. Komunikacja przez synchroniczne przesyłanie komunikatów przy pomocy operacji dotyczących wydzielonych kanałów, Przykłady: operacje wyślij (!), odbierz (?) w języku OCCAM.
14 3. Języki programowania w środowisku z rozproszoną pamięcią - model OCCAM OCCAM jest modelowym językiem programowania równoległego dla systemów równoległych z rozproszoną pamięcią, w którym komunikację poprzez przesyłanie komunikatów umieszczono na poziomie programu aplikacyjnego. Język OCCAM jest językiem, który był wspomagany sprzętowo w latach 1980 i 90-ych przez architekturę transputerów a później przez emulację programową transputerów pod Windows NT. Innym podstawowym modelem programowania równoległego z przesyłaniem komunikatów jest model MPI (omówiony w Wykładzie 4), w którym komunikacje umieszczono na poziomie biblioteki komunikacyjnej, wywoływanej z programów w językach C, C++, Java. Język OCCAM został zaproponowany w Anglii w 1983 roku na Uniwersytecie w Oxfordzie. Nazwa pochodzi od filozofa szkockiego Wiliama Occama (XIII / XIV wiek), który głosił, że należy używać możliwie najmniejszej liczby pojęć dla opisywania wszelkich zagadnień. Takie założenie było motywem przewodnim przy definiowaniu języka OCCAM.
15 Ogólne cechy języka OCCAM: dwa rodzaje procesów: strukturalne - deklarowane i wywoływane przez nazwę oraz niestrukturalne, wynikające z przepływu sterowania w programie, porządek aktywacji procesów określony jest bezpośrednio przez operatory strukturalizacji sterowania (konstruktory) komunikacja między procesami współbieżnymi umieszczona na poziomie programu aplikacyjnego tj. bez pośrednictwa systemu operacyjnego. komunikacja poprzez synchroniczne przesyłanie komunikatów (niebuforowane) w kanałach (ang. channel), synchronizacja między procesami współbieżnymi zapewniona przez synchroniczne transmisje komunikatów w kanałach, brak wzajemnego dostępu do struktur danych należących do procesów współbieżnych - pamięci rozproszone procesów, język silnie formatowany - zakres działania operatora języka określony jest układem zapisu programu - przez linie wcięte o dwie spacje.
16 Podstawowe procesy języka OCCAM: v := e podstawienie wyniku obliczenia wyrażenia e pod zmienną v, c! e wysłanie komunikatu z wynikiem wyrażenia e do kanału c, c? v odebranie komunikatu z kanału c i podstawienie pod zmienną v. Konstruktory Podstawowe procesy są poddawane działaniu konstruktorów: SEQ - wyrażający sekwencyjne wykonanie procesów w kolejnych liniach, PAR - wyrażający współbieżność procesów w kolejnych liniach, ALT - wyrażający wykonanie jednego z procesów uzależnionych tzw. dozorami. Dozory w ALT są funkcją iloczynu zdaniowego (oznaczanego przez &) warunku logicznego (np. a=5) i odbioru komunikatu w kanale (np. c? v).
17 Podstawowe wyrażenia sterujące: IF, WHILE, CASE Replikatory stanowią zapisy, które generują kopie procesu ze względu na określoną zmienną, przebiegającą kolejne wartości. NP. KONSTRUKTOR i = 1 FOR 10 process [i] powoduje wygenerowanie w programie 10 kopii procesu {i} dla kolejnych wartości i od 1 do 10, umieszczonych po operatorem KONSTRUKTOR. Kanały są to deklarowane obiekty służące do komunikacji. Kanał ma nazwę oraz protokół, który określa typ zmiennej lub zmiennych przesyłanej (-ych) w kanale.
18 Przykłady prostych programów w języku OCCAM: Przykład 1. Mamy program równoległy po lewej oraz schemat blokowy tego programu ( z pominięciem deklaracji zmiennych i kanałów) Konstruktor SEQ wyznacza sekwencję fragmentów programu. Konstruktor PAR tworzy równoległe fragmenty programu poprzez rozgałęzienie ścieżki sterującej na dwie ścieżki równoległe zawierające dwie sekwencje instrukcji. Zawarte są tam dwie komunikacje, w kanałach chan3 i chan4, między procesami współbieżnymi określonymi przez PAR.
19 INT d: SEQ d:= 3 d:= d + 1 CHAN OF INT chan3, chan4: PAR INT a, b: SEQ a := d + 2 chan3! a chan4? b INT a: SEQ chan3? a a := d + a chan4! a d := d + 2
20 Przykład 2 Ten przykład zawiera konstruktor ALT, który zawiera dozorowane procesy. CHAN OF INT alfa, beta, delta: INT x, y: SEQ alfa? x ALT x = 1 & beta? y y := y + 1 x = 2 & delta? y y := y + 2 alfa! y Konstruktor ALT obejmuje dwa procesy: y := y + 1 oraz y := y + 2, dozorowane przez dwa dozory: x = 1 & beta? y oraz x = 2 & delta? y, zawierające sprawdzenie warunków logicznych ( x=1 oraz x=2) i odbiory komunikatów w kanałach beta i delta.
21 Dozory, dla których warunki logiczne są spełnione, zawieszają się w oczekiwaniu na komunikacje. Nadejście komunikatu w kanałach powoduje spełnienie całego dozoru, dla którego spełniony był warunek logiczny. Wtedy wykonuje się proces dozorowany przez ten warunek. Wysłanie komunikatów do dozorów następuje przez jakieś procesy równoległe do dozorowanych - nie pokazane w przykładzie. Gdy spełnionych jest więcej niż jeden dozór wybór procesu do wykonania jest określony porządkiem ich zapisu w programie. Zmienne, pod które podstawiane są wartości otrzymane w komunikacie mogą być użyte do wykonania procesu. W ten sposób dozory nie tylko kontrolują wykonanie procesów ale też mogą dostarczać im danych odebranych w kanałach.
22 Przykład 3 Przykład zawiera mechanizm replikatorów procesów równoległych i kanałów. [10] CHAN OF INT alfa: PAR i=0 FOR 9 WHILE TRUE INT x: SEQ alfa [i]? x alfa [i+1]! x W tym przykładzie występuje replikator, który tworzy 9 procesów współbieżnych umieszczonych pod konstruktorem PAR. Każdy proces to pętla nieskończona (z powodu warunku TRUE) zawierająca sekwencję odbioru w kanale i nadanie tej samej wiadomości do innego kanału. Kanały o nazwie alfa są tutaj indeksowane zmienną i od 0 do 9.
23 Do kanału alfa [0] w pierwszej pętli musi nadać komunikat jakiś proces nie pokazany w programie. Potem ten komunikat "wędruje" poprzez wszystkie pętle aż do nadania w kanale alfa [9]. To nadanie może się wykonać jeśli wykona się odbiór w tym kanale w nie pokazanym tutaj procesie równoległym do pętli programu.
24 W języku OCCAM istnieją instrukcje PLACE (umieść), które służą do umieszczania na konkretnych procesorach procesów strukturalnych ujętych w procedury. Przypisania procesów programu do procesorów systemu umieszczane są w tzw. programie konfigurującym dołączanym do zwykłego tekstu programu obliczeniowego. W programie konfigurującym na wstępie deklaruje się liczbę procesorów w systemie komputerowym oraz istniejące połączenia między procesorami. Łączom między procesorami odpowiadają kanały zewnętrzne, na które można odwzorować kanały logiczne występujące w programie. Instrukcje PLACE służą też do odwzorowania kanałów na łącza zewnętrzne procesora oraz dodatkowo do umieszczania zmiennych w konkretnych komórkach pamięci operacyjnej. Kanały nie odwzorowane na łącza zewnętrzne są traktowane jako tzw. kanały wewnętrzne, które realizują transmisje w obrębie pamięci operacyjnej, przydzielonej komunikującym się procesom.
25 4. Języki programowania w środowisku ze wspólną pamięcią - model OpenMP OpenMP (skrót od ang. Open Multi Processing) stanowi podstawowe środowisko programowe do tworzenia programów dla systemów równoległych ze wspólną pamięcią. OpenMP został opracowany pod koniec lat 1990-ych przez konsorcjum producentów systemów równoległych (IBM, SGI, Sun, HP, Compaq). OpenMP umożliwia pisanie programów równoległych przy wykorzystaniu standardowych języków sekwencyjnych C, C++ oraz Fortran 90 dla systemów operacyjnych Unix, Linux, Windows. Open MP zapewnia wprowadzenie do programu sekwencyjnego specyfikacji : równoległego wykonywania obliczeń na poziomie wątków; komunikacji pomiędzy poszczególnymi wątkami; synchronizacji wykonywania wątków. Odbywa się to poprzez wstawianie do programów, specyficznych dyrektyw, zmiennych środowiskowych oraz procedur bibliotecznych OpenMP.
26 Podstawowy model zrównoleglenia obliczeń w OpenMP. Program rozpoczyna się realizacją ciągu instrukcji pojedynczego wątku głównego (ang. main thread), wykonującego się w sposób sekwencyjny. Dyrektywa specyfikująca region równoległy tworzy grupę równolegle wykonujących się wątków, z których jednym jest wątek główny. Gdy przed wymienioną dyrektywą wyspecyfikowano zagnieżdżanie wątków, wątki składowe mogą być dalej zrównoleglane przez dyrektywy regionów równoległych. Na końcu każdego regionu równoległego występuje synchronizacja wątków tego regionu za pomocą wbudowanej bariery. Bariera wyrównuje bieg wszystkich wątków regionu, wstrzymując ich dalsze wykonywanie do wykonania (osiągnięcia) tej bariery przez wszystkie wątki składowe regionu. Po osiągnięciu synchronizacji wszystkich wątków wątek główny kontynuuje pracę sekwencyjną.
27 Zmienne środowiskowe Zmienne środowiskowe służą do globalnego ustalania parametrów dla potrzeb tworzonego równoległego fragmentu programu. OMP NUM THREADS określa liczbę wątków w równoległej grupie, OMP NESTED pozwala lub zabrania na zagnieżdżanie regionów równoległych (TRUE, FALSE), OMP DYNAMIC pozwala lub zabrania na dynamiczne dopasowywanie liczby wątków (TRUE, FALSE), OMP SCHEDULE definiuje sposób zrównoleglenia pętli (przydział iteracji do równoległych wątków) (static, dynamic, guided, runtime). OMP SCHEDULE static rozdziela iteracje na kolejne wątki przed rozpoczęciem wykonywania zgodnie z podaną liczbą iteracji na wątek, OMP SCHEDULE dynamic rozdziela iteracje na wolne wątki dynamicznie podczas wykonywania, OMP SCHEDULE guided rozdziela statycznie iteracje, tak że ich liczba na wątek maleje wykładniczo, OMP SCHEDULE runtime odkłada podział iteracji do wykonania programu. Zmienne środowiskowe ustawia się przez polecenia powłoki. Przykład Dla powłok sh oraz bash export OMP_NUM_THREADS= 8 Dla powłok csh oraz tcsh setenv OMP_NUM_THREADS 8
28 Specyfikacja równoległości obliczeń Dyrektywa parallel Dyrektywa parallel tworzy tzw. region równoległy czyli równoległą grupę wątków. #pragma omp parallel klauzule { // blok strukturalny... } W dyrektywie parallel mogą wystąpić następujące tzw. klauzule, czyli deklaracje uzupełniające podstawową dyrektywę: if(wyrażenie skalarne) num threads(wyrażenie skalarne) private(lista zmiennych) firstprivate(lista zmiennych) shared(lista zmiennych) default(shared albo none) copyin(lista zmiennych) reduction(operator : lista zmiennych)
29 Grupa wątków jest tworzona gdy nie występuje klauzula if albo wyrażenie w klauzuli if ma wartość różną od zera. Klauzula num_threads służy do zadeklarowania liczby wątków w tworzonej grupie równoległych wątków. Jeśli nie ma klauzuli num_threads to liczba wątków w grupie zależy od zmiennej środowiskowej OMP NUM THREADS - master staje się wątkiem 0 a numeracja nie zmienia się w trakcie wykonania. Każdy wątek wykonuje instrukcję zadaną blokiem strukturalnym. Po synchronizacji zakończenia wykonywania regionu dalsze instrukcje po ograniczniku } wykonuje sekwencyjnie watek główny.
30 Deklaracje zmiennych i ich zasięgu Z wyjątkiem klauzul if oraz num_threads, pozostałe klauzule dyrektywy parallel służą do zdefiniowania typu współdzielenia i zasięgu zmiennych używanych w bloku strukturalnym tej dyrektywy. Znaczenie tych klauzul jest następujące: private(lista): zmienne na liście są prywatnymi zmiennymi każdego wątku, (obiekty są automatycznie alokowane dla każdego wątku), firstprivate(lista): jak wyżej, ale w każdym wątku zmienne są inicjowane wartościami z wątku głównego, shared(lista): zmienne z listy są wspólne dla wszystkich wątków w grupie, default(shared): wszystkie zmienne domyślnie są wspólne (o ile nie znajdują się na żadnej liście typu private ), default: dla wszystkich zmiennych trzeba określić, czy są wspólne czy prywatne, reduction(operator : lista): dla zmiennych z listy jest wykonywana operacja redukcyjna określona przez operator. Zmienna nie wymieniona w żadnej z klauzul typu private, jest wspólna. Zmienne deklarowane w bloku są automatycznie prywatne.
31 Dyrektywa zrównoleglenia pętli for Dyrektywa for umożliwia rozdzielenie wykonania iteracji pętli między równoległe wątki w grupie. Dyrektywę for pisze się dopiero po dyrektywie parallel. #pragma omp parallel klauzule {... #pragma omp for klauzule for (... ;... ;... ) {... }... } Wymaga się, aby pętla for była w postaci kanonicznej, czyli przed jej wykonaniem musi być znana liczba iteracji.
32 Klauzule dyrektywy for : schedule(rodzaj, rozmiar) private(lista zmiennych) firstprivate(lista zmiennych) reduction(operator : lista zmiennych) lastprivate(lista zmiennych) nowait ordered Klauzula schedule specyfikuje sposób podziału wykonań iteracji pętli między wątki, gdzie rodzaj może przyjmować wartości static, dynamic, guided, runtime. Wartość parametru static rozdziela iteracje na wątki przed rozpoczęciem wykonywania zgodnie z podaną liczbą iteracji na wątek, dynamic rozdziela iteracje na wolne wątki dynamicznie podczas wykonywania, guided rozdziela iteracje, tak że ich liczba na wątek maleje wykładniczo, runtime odkłada podział iteracji do wykonania programu. Znaczenie klauzul private, firstprivate, reduction jest podobne jak dla dyrektywy parallel.
33 Klauzula lastprivate działa jak private, ale po zakończeniu wykonywania pętli, zmienne mają taką wartość, jak przy sekwencyjnym wykonaniu pętli. Klauzula nowait usuwa wykonanie synchronizacji na barierze po wykonaniu wszystkich wątków po pętli. Klauzula ordered umożliwia wykonanie wybranej części treści iteracji pętli for sekwencyjnie.
34 Dyrektywa zrównoleglenia kodu nieiteracyjnego sections Dyrektywa sections służy do zrównoleglenia wykonania nieiteracyjnego kodu sekwencyjnego przez wątki grupy zorganizowanej za pomocą dyrektywy parallel. Dyrektywa sections występuje w kodzie po dyrektywie parallel. #pragma omp parallel klauzule {... #pragma omp sections klauzule { #pragma omp section { // blok strukturalny 1... }... #pragma omp section { // blok strukturalny n... } } }
35 Dyrektywa sections przydziela blokom strukturalnym po dyrektywach section kolejne wątki w grupie utworzonej przez dyrektywę parallel. Przydział wątków blokom poprzedzającym dyrektywę sections odbywa się zawsze dynamicznie. Klauzule dyrektywy sections private(lista zmiennych) firstprivate(lista zmiennych) reduction(operator : lista zmiennych) lastprivate(lista zmiennych) nowait Znaczenie tych klauzul jest podobne jak dla dyrektywy for.
36 Skrócone formy dyrektyw zrównoleglania kodu w OpenMP Dyrektywa parallel for #pragma omp parallel for klauzule.. for (... ;... ;... ) {... } Możliwe do zastosowania klauzule są podobne jak dla dyrektyw parallel oraz for, z wyjątkiem nowait.
37 Dyrektywa parallel sections #pragma omp parallel sections klauzule.... { #pragma omp section { // blok strukturalny 1... }... #pragma omp section { // blok strukturalny n... } } Możliwe do zastosowania klauzule są podobne jak dla dyrektyw parallel oraz sections, z wyjątkiem nowait.
38 Dyrektywy synchronizacji grup wątków Dyrektywa barrier Dyrektywa barrier definiuje barierę dla wątków regionu równoległego w którym się znajduje. #pragma omp parallel klauzule {... #pragma omp barrier... } Dyrektywa barrier powoduje wstrzymanie wykonania wątków, które dotrą do bariery do czasu, gdy wszystkie wątki w regionie osiągną to miejsce w ich kodzie.
39 Dyrektywa master Dyrektywa master desygnuje zawierający ją wątek do wykonania na tylko przez wątek główny. Przy wykonaniu brak jest synchronizacji na wejściu i wyjściu. #pragma omp parallel klauzule {... #pragma omp master {... }... }
40 Dyrektywa sekcji krytycznej critical Dyrektywa critical deklaruje, że blok strukturalny następujący po niej ma być wykonywany w trybie wzajemnego wykluczania przez wszystkie wątki regionu, w którym się znajduje. Dyrektywa sekcji krytycznej występuje po dyrektywie parallel. #pragma omp parallel klauzule {... #pragma omp critical {... }... } Istnieje odmiana tej dyrektywy z nazwą sekcji krytycznej, w której nazwa sekcji krytycznej występuje po słowie critical w nawiasach okrągłych.
Przetwarzanie Równoległe i Rozproszone
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl
OpenMP. Programowanie aplikacji równoległych i rozproszonych. Wykład 2. Model programowania. Standard OpenMP. Dr inż. Tomasz Olas
OpenMP Programowanie aplikacji równoległych i rozproszonych Wykład 2 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenMP (Open Multi-Processing)
Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP
OpenMP p. 1/4 Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenMP OpenMP
Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................
Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Wiosna
Open MP wer. 2.5 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Wiosna 2019.0 OpenMP standard specyfikacji przetwarzania współbieżnego uniwersalny i przenośny model równoległości (typu rozgałęzienie
Wprowadzenie do OpenMP
Wprowadzenie do OpenMP OZUKO Kamil Dworak OZUKO Wprowadzenie do OpenMP Kamil Dworak 1 / 25 OpenMP (ang. Open Multi-Processing) opracowany w 1997 przez radę Architecture Review Board, obliczenia rówoległe
Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1
Programowanie systemów z pamięcią wspólną specyfikacja OpenMP Krzysztof Banaś Obliczenia równoległe 1 OpenMP Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 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
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 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Programowanie współbieżne Wykład 2. Iwona Kochańska
Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas
Równoległość i współbieżność
Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna
Równoległość i współbieżność
Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 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
Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI
Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI Patryk Mach Uniwersytet Jagielloński, Instytut Fizyki im. Mariana Smoluchowskiego OpenMP (Open Multi Processing) zbiór dyrektyw kompilatora, funkcji
Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional
Programowanie współbieżne i rozproszone
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:
Wstęp do programowania 2
Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 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
Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Obliczenia równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 15 czerwca 2001 Spis treści Przedmowa............................................
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania
Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania
OpenMP Elementy składowe: o o o dyrektywy dla kompilatorów funkcje biblioteczne zmienne środowiskowe Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania
Mechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
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 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć
procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych
Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)
Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1
Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów
Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm
Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Streszczenie Tematem pracy jest standard OpenMP pozwalający na programowanie współbieŝne w systemach komputerowych
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 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.
P O L I T E C H N I K A S Z C Z E C I Ń S K A Wydział Informatyki PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP. Autor: Wojciech
Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Podstawy programowania komputerów
Podstawy programowania komputerów Wykład 14: Programowanie współbieżne w C Definicja programowania współbieżnego Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie
Podstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014
Open MP wer. 2.5 Wykład PR część 3 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014 OpenMP standard specyfikacji przetwarzania współbieżnego uniwersalny (przenośny) model równoległości
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1
Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące
Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB
Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci
Programowanie Rozproszone i Równoległe
Programowanie Rozproszone i Równoległe OpenMP (www.openmp.org) API do pisania wielowątkowych aplikacji Zestaw dyrektyw kompilatora oraz procedur bibliotecznych dla programistów Ułatwia pisanie programów
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej
Mikroprocesor Operacje wejścia / wyjścia
Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych
Wprowadzenie do programowania współbieżnego
Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
1.1 Definicja procesu
1 Procesy pojęcia podstawowe 1 1.1 Definicja procesu Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Algorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp
Architektura komputerów. Układy wejścia-wyjścia komputera
Architektura komputerów Układy wejścia-wyjścia komputera Wspópraca komputera z urządzeniami zewnętrznymi Integracja urządzeń w systemach: sprzętowa - interfejs programowa - protokół sterujący Interfejs
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. 1 OpenMP Standard rozwinięty i zdefiniowany w latach 90 przez grupę specjalistów z przemysłu. Strona www: www.openmp.org Składa się ze zbioru
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Programowanie współbieżne Wstęp do OpenMP. Rafał Skinderowicz
Programowanie współbieżne Wstęp do OpenMP Rafał Skinderowicz Czym jest OpenMP? OpenMP = Open Multi-Processing interfejs programowania aplikacji (API) dla pisania aplikacji równoległych na komputery wieloprocesorowe
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
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 Wydział Matematyki i Informatyki Instytut Informatyki i
Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012
Projektowanie algorytmów równoległych Zbigniew Koza Wrocław 2012 Spis reści Zadniowo-kanałowy (task-channel) model algorytmów równoległych Projektowanie algorytmów równoległych metodą PACM Task-channel
Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium
SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)
(opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie
Ada95 przetwarzanie rozproszone
Ada95 przetwarzanie rozproszone 1. Model systemu rozproszonego 2. Partycje i jednostki kompilacji 3. Glade narzędzie gnatdist język opisu konfiguracji 4. Przykład programu rozproszonego Model systemu rozproszonego
Ada95 przetwarzanie rozproszone
1 Ada95 przetwarzanie rozproszone 1. Model systemu rozproszonego 2. Partycje i jednostki kompilacji 3. Glade narzędzie gnatdist język opisu konfiguracji 4. Przykład programu rozproszonego 2 węzeł Model
Wywoływanie procedur zdalnych
Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,
Wykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Java EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
16. Taksonomia Flynn'a.
16. Taksonomia Flynn'a. Taksonomia systemów komputerowych według Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna, opierająca się
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Procesy, wątki i zasoby
Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.
Definicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
Wprowadzenie do systemów operacyjnych
SOE - Systemy Operacyjne Wykład 1 Wprowadzenie do systemów operacyjnych dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW System komputerowy Podstawowe pojęcia System operacyjny
Systemy operacyjne. Zajęcia 11. Monitory
Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:
Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla
ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1
Instrukcja obsługi ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1 1 ArtPlayer to proste oprogramowanie umożliwiające odtwarzanie plików video i ich wybór poprzez protokół
Wywoływanie procedur zdalnych
Wywoływanie procedur zdalnych Mechanizm wywołania main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat
Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003
Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy
3URJUDPRZDQLHZVSyáELH*QHZVWS
3URJUDPRZDQLHZVSyáELH*QHZVWS Problem sortowania N liczb Algorytm sekwencyjny sortuj(1, N); NRV]WVRUWRZDQLDSU]H]SURVW]DPLDQN 2 SRUyZQD $OJRU\WPUyZQROHJá\ cobegin {wykonaj równolegle} VRUWXMSyáB1 VRUWXMSyáB11
Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki
Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A
Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1
Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. 1 OpenMP Standard rozwinięty i zdefiniowany w latach 90 przez grupę specjalistów z przemysłu. Strona www: www.openmp.org Składa się ze zbioru
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj
LEKCJA TEMAT: Zasada działania komputera.
LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem
Język UML w modelowaniu systemów informatycznych
Język UML w modelowaniu systemów informatycznych dr hab. Bożena Woźna-Szcześniak Akademia im. Jan Długosza bwozna@gmail.com Wykład 4 Diagramy aktywności I Diagram aktywności (czynności) (ang. activity
Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,
Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Pętle. Dodał Administrator niedziela, 14 marzec :27
Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać
4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24
Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Programowanie współbieżne Wykład 7. Iwona Kochaoska
Programowanie współbieżne Wykład 7 Iwona Kochaoska Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd żywotności - program współbieżny jest żywotny,