Wstęp do programowania 2

Podobne dokumenty
Ada-95. Dariusz Wawrzyniak

Wstęp do programowania

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Wstęp do programowania 2

Pakiety podprogramów Dynamiczny SQL

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Język PL/SQL Pakiety podprogramów

Programowanie współbieżne Zadanie nr 4 Spotkania

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie systemów czasu rzeczywistego laboratorium. Ćwiczenie 2. Temat zajęć: pakiety, zadania, synchronizacja czasowa, mechanizm spotkań

Podstawy programowania komputerów

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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


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

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Diagramy klas. dr Jarosław Skaruz

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

Wstęp do programowania 2

Technologie obiektowe

Wykład 8: klasy cz. 4

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone

15. Funkcje i procedury składowane PL/SQL

4. Procesy pojęcia podstawowe

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Wstęp do programowania

Procedury i funkcje składowane

NIFIED M L ODELLING ANGUAGE. Diagramy czynności

Język PL/SQL Procedury i funkcje składowane

PODSTAWY BAZ DANYCH 13. PL/SQL

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

4. Procesy pojęcia podstawowe

Programowanie obiektowe

Podstawy Programowania Obiektowego

Język programowania. Andrzej Bobyk

Wprowadzenie do programowania współbieżnego

Programowanie współbieżne i rozproszone

Wykład 9: Polimorfizm i klasy wirtualne

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

ZASADY PROGRAMOWANIA KOMPUTERÓW

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

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

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

Oracle PL/SQL. Paweł Rajba.

Diagramy czynności Na podstawie UML 2.0 Tutorial

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Programowanie strukturalne

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe - 1.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Lab 9 Podstawy Programowania

Technologie i usługi internetowe cz. 2

Programowanie - wykład 4

UML w Visual Studio. Michał Ciećwierz

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Systemy operacyjne. Zajęcia 11. Monitory

Podstawy projektowania systemów komputerowych

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Język C zajęcia nr 11. Funkcje

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Lista 5 Typy dynamiczne kolejka

PL/SQL. Zaawansowane tematy PL/SQL

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

Rozproszona pamiêæ dzielona - 1

Wykład 5: Klasy cz. 3

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Programowanie Równoległe i Rozproszone

4. Procesy pojęcia podstawowe

Programowanie współbieżne i rozproszone

Wprowadzenie. Dariusz Wawrzyniak 1

Programowanie usług działających w tle

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ęzyk UML w modelowaniu systemów informatycznych

TEMAT : KLASY DZIEDZICZENIE

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Algorytmika i pseudoprogramowanie

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Modelowanie. Wykład 1: Wprowadzenie do Modelowania i języka UML. Anna Kulig

Zaawansowane bazy danych i hurtownie danych semestr I

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

Transkrypt:

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 również pisanie programów, w których program wykonuje kilka sekwencji akcji równolegle Każda sekwencja akcji jest wykonywana przez inne zadanie (task)

Programy wielozadaniowe Programy z wieloma zadaniami mogą być wykonywane zarówno na komputerze o wielu procesorach, jak i o jednym procesorze Komputer z wieloma procesorami każdy procesor może wykonywać równocześnie inne zadanie (ang. overlapped concurrency) W przypadku komputerów z jednym procesorem zadaniom przydziela się kolejno czas procesora (ang. interleaved concurrency) w każdym przypadku możemy uważać, że każde zadanie korzysta z odrębnego wirtualnego procesora

Po co współbieżność Współbieżność jest bardziej naturalnym podejściem niż wykonanie sekwencyjne np. w przypadku modelowania rzeczywistości programów do analizy danych z kilku urządzeń monitorujących programów nadzorujących pracę kilku urządzeń Dodatkowa zaleta: obliczeniowe programy współbieżne mogą dać wynik szybciej niż sekwencyjne jest to możliwe nawet w przypadku jednego procesora (jedno zadanie wykonuje się, inne czeka na operacje I/O)

Wykonanie zadań Różne procesory mogą wykonywać zadania z różną prędkością W ogólnym przypadku nie można nic założyć o relatywnej prędkości wykonywania zadań (zadania wykonują się asynchronicznie) Zadania, które mają współdziałać, muszą synchronizować się ze sobą

Mechanizmy synchronizacji Ada zawiera trzy mechanizmy umożliwiające synchronizację i wzajemną komunikację zadań: zmienne dzielone (ang. shared variables) obiekty chronione (ang. protected objects) randki (spotkania) (ang. rendezvous)

zmienna dzielona zmienna która może być sprawdzana lub modyfikowana przez więcej niż jedno zadanie zadania powinny zawierać synchronizację dostępu do zmiennych, aby uniknąć sytuacji, w której jedno zadanie czyta zmienną, a drugie ją równocześnie modyfikuje

obiekt chroniony służy do przechowywania danych wykorzystywanych przez więcej niż jedno zadanie na obiekcie można wykonywać tylko pewne operacje, jeśli jedno zadanie wykonuje operację modyfikującą obiekt chroniony, to inne zadania muszą czekać na dostęp do obiektu do czasu jej zakończenia

randka (spotkanie) jest rodzajem interakcji, w której zadania synchronizują się i jedno z nich wykonuje pewną usługę na rzecz drugiego. Komunikacja następuje za pomocą działania podobnego do wywołania procedury jeśli jedno z zadań będzie gotowe do wykonania tej operacji wcześniej niż drugie, zatrzymuje się i czeka na drugie zadanie. Po spotkaniu zadania mogą dalej wykonywać się niezależnie

Zadanie w Adzie Każde zadanie jest obiektem typu zadaniowego (task object) Z obiektem typu zadaniowego związane są: sekwencja instrukcji do wykonania zadanie które je wykonuje zbiór zmiennych używanych wyłącznie przez to zadanie interfejs umożliwiający synchronizację i komunikację z innymi zadaniami

Deklaracja zadania Zadania umieszczamy w części deklaracyjnej programu, bloku, ciała zadania lub w odrębnym pakiecie task T is... end T; -- specyfikacja task body T is... end T; -- ciało

Przykłady zadań zakupy.adb taski1.adb przykłady deklaracji, uruchomienia i zakończenia zadań aktywowanie zadania następuje automatycznie zadanie zadeklarowane w pewnej jednostce (procedurze, pakiecie) nazywamy zależnym od tej jednostki jednostki nie można zakończyć dopóki nie zakończą się wszystkie zależne od niej zadania program główny jest traktowany jako zadanie główne

Typ zadaniowy Poza pojedynczymi obiektami typu zadaniowego można deklarować typy deklaracja typu: task type nazwa [opcjonalna część wyróżnikowa] is... end nazwa; task body nazwa is... end nazwa; definicja zadania: t: nazwa;

przykład programu z typami zadaniowymi: zakupy_typy.adb wyróżnik może być typu dyskretnego lub wskaźnikowego

Interakcja - spotkania Spotkanie dwóch zadań: jedno zadanie wykonuje wejście (entry) zadeklarowane w innym zadaniu Wejścia deklaruje się w specyfikacji zadania w podobny sposób jak procedury w specyfikacji pakietów: task T is entry E (...); end T;

Wejście może mieć parametry in, out i in out (jak procedura) Nie może zwracać wyniku jak funkcja Wejście jest wywoływane w sposób podobny do procedury T.E(..); (potrzebna notacja kropkowa standardowe zasady widoczności) Zadanie może mieć część prywatną, zawierającą wejścia, które nie będą widoczne dla zewnętrznego użytkownika

Instrukcje, które mają być wykonane po wywołaniu wejścia, są umieszczane w odpowiedniej instrukcji accept w ciele zadania accept E(...) do -- instrukcje exception --- obsługa wyjątków --- (część opcjonalna) end E; Accept nie ma części deklaracyjnej, wszelkie lokalne deklaracje należy umieścić w bloku

Wykonanie wejścia Jeśli zadanie wywołuje procedurę, to wykonuje jej wszystkie instrukcje Jeśli zadanie wywołuje wejście, to odpowiednia instrukcja accept jest wykonywana przez zadanie do którego należy wejście Zadanie wywołujące pozostaje w stanie oczekiwania Po wykonaniu instrukcji accept oba zadania działają dalej niezależnie

Zadanie może mieć kilka wejść (chociaż najczęściej ma jedno) każde wejście ma kolejkę zadań oczekujących na wywołanie wejścia kolejka jest obsługiwana jako FIFO każde wykonanie instrukcji accept usuwa jedno zadanie z kolejki liczbę zadań oczekujących w kolejce wejścia E możemy określić za pomocą atrybutu E Count. Można go wywołać tylko w zadaniu do którego należy wejście

Ograniczenia instrukcji accept: instrukcja może zawierać wywołania wejść, podprogramów, bloki i kolejne instrukcje accept może zawierać blok obsługi wyjątków nie może zawierać instrukcji select ani instrukcji accept dla tego samego wejścia lub wejścia z tej samej rodziny rodzina wejść i instrukcja select będą wyjaśnione później

wywołanie instrukcji return wewnątrz accept zakańcza spotkanie instrukcje goto i exit wewnątrz accept nie mogą spowodować wyjścia poza instrukcję accept zadanie może wywołać własne wejście, ale prowadzi to do zakleszczenia

przykłady programów ze spotkaniami: taski2.adb prod_kon.adb kli_ser.adb kli3_ser.adb