13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Makra v Excelu.
Bakalářská práce Prostředí pro výuku algoritmů
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Programování v Pascalu Přednáška 10 RNDr. Hana Havelková.
Algoritmizace a programování Podprogramy v Delphi - 10
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Paralelní programování
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Programování PA - 2.
Materiály k přednášce Úvod do programování Ondřej Čepek.
Generování mezikódu Jakub Yaghob
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
Algoritmizace a programování
Informatika I 3. přednáška
13AMP 8. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled RT jazyky RT jazyky Modula Modula Modula II Modula II.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Základy algoritmizace a programování
13AMP 9. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled ADA ADA Java Java.
Algoritmy a programovací techniky
Objektové programování
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Simulační modely a programové vybavení. Vývoj simulačních programů  Původně pouze strojový kód –Příliš dlouhé, náročné na programátora, obtížné hledání.
13AMP 2. přednáška Ing. Martin Molhanec, CSc.. Stav procesu (kontext) Stav procesu je úplná informace, kterou je nutné uschovat při přerušení procesu,
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
VISUAL BASIC PRALG.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Programovací jazyk PASCAL
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
13AMP 3. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled I. Co je to kontext úlohy Co je to kontext úlohy Task switching (přepnutí úlohy)
JavaScript Funkce.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
VYTVOŘENÍ TŘÍDY KOMPLEXNÍHO ČÍSLA Vytvořte třídu proměnné, která bude prezentovat komplexní číslo. Zadávat se budou dvě složky, reálná a imaginární. Dále.
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
13/04/20151 Multitasking Schopnost operačního systému mít spuštěno více programů současně Operační systém používá hardwarové hodiny a každému běžícímu.
Šesté cvičení Výjimky Balíky.
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
Multithread programming Java vs. OpenMP Pavel Zavoral Martin Kugler.
Distribuovaná sdílená paměť Přednášky z Distribuovaných systémů Ing. Jiří Ledvina, CSc.
13AMP 4. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Problém sdílených zdrojů Problém sdílených zdrojů Co je to kritická sekce Co.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
doc. RNDr. Zdeněk Botek, CSc.
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Základy operačních systémů Meziprocesová komunikace a synchronizace Jakub Yaghob.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Služby Windows Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Programovací jazyk C# 4. část - cykly.
Filosofie Základy logiky.
Strukturované typy proměnných v programovacím jazyce Pascal - 1.hodina
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
Operační systémy 9. Spolupráce mezi procesy
Databázové systémy a SQL
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Přednáška 9 Triggery.
Monitor Object 1.
Transkript prezentace:

13AMP 6. přednáška Ing. Martin Molhanec, CSc.

Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument Posílání zpráv Posílání zpráv MAILBOX MAILBOX

Podpora v programových jazycích PROČ ? Bezpečnost Bezpečnost Nelze chybovat. Například na nějaký příkaz zapomenout. Srozumitelnost Protože je méně příkazů, je programový kód snáze pochopitelný. Opět je výsledkem méně chyb. Srozumitelnost Protože je méně příkazů, je programový kód snáze pochopitelný. Opět je výsledkem méně chyb.

Bez podpory Standardní Pascal, C, C++ Standardní Pascal, C, C++ Implementace pomocí stávajících prostředků (procedury, funkce). Nejčastější řešení, nemá ovšem mnohé výhody a eleganci. PROTO  Vznik speciálních jazyků, které mají na programování paralelismu speciální jazykovou podporu!

S podporou Speciální a moderní jazyky, například Ada, Modula, Java, … Speciální a moderní jazyky, například Ada, Modula, Java, … Tyto jazyky obsahují speciální jazykové konstrukce na podporu programování paralelismu (semafory, monitory, …)

Druhy podpory Vytváření úloh (procesů, tásků) Vytváření úloh (procesů, tásků) Práce s kritickou sekcí (semafory, monitory nebo podobné prostředky) Práce s kritickou sekcí (semafory, monitory nebo podobné prostředky) Synchronizace Synchronizace Zprávy Zprávy

Podpora vytváření procesů Programové konstrukce, které dovolí definovat, které části programového kódu se budou vykonávat současně (paralelně). Programové konstrukce, které dovolí definovat, které části programového kódu se budou vykonávat současně (paralelně).

FORK, JOIN prikaz_1; FORK L1; prikaz_2; GOTO L2; L1: prikaz_3; L2: JOIN 2; prikaz_4; prikaz_1; prikaz_2; prikaz_3; prikaz_4; POZOR: Tento FORK není totožný s fork z UNIXu!

COBEGIN prikaz_1; COBEGINprikaz_2;prikaz_3;COEND; prikaz_4; prikaz_1; prikaz_2; prikaz_3; prikaz_4; POZOR: příkaz_2 i přikaz_3 mohou být procedury!

Deklarace TASK nebo … Programovací jazyk dovoluje definovat procedury nebo funkce, které se budou vykonávat současně (nahrazuje to naší „registraci“). Programovací jazyk dovoluje definovat procedury nebo funkce, které se budou vykonávat současně (nahrazuje to naší „registraci“). Například (jazyk podobný Pascalu): Například (jazyk podobný Pascalu): procedure X; task; begin … … end; end; POZOR: musíme se nějak postarat o jejich spuštění!

Deklarace TASK nebo … Statická definice Statická definice V programu neexistuje hlavní program, všechny definované tasky se spustí současně. Program se ukončí až se všechny tasky ukončí. Dynamická definice Dynamická definice Program má hlavní program, který většinou vykonává nějakou inicializaci. Existuje příkaz pro spuštění všech nebo jednotlivých tasků.

Podpora práce s kritickou oblastí Programové konstrukty, které umožňují ošetřit problém současného přístupu úloh (tásků) ke sdíleným prostředkům. Například paměti, periferiím, …. Programové konstrukty, které umožňují ošetřit problém současného přístupu úloh (tásků) ke sdíleným prostředkům. Například paměti, periferiím, …. Mimo samotného SEMAFORU, se využívají konstrukce vyššího typu: Kritická oblast a Monitor Mimo samotného SEMAFORU, se využívají konstrukce vyššího typu: Kritická oblast a Monitor

Kritická oblast (Hansen, Hoare ) { jazyk podobný Pascalu } Var X: shared integer; {sdílený zdroj - paměť} … Region X do {kritická sekce} Begin X := 25; End; POZOR: S proměnnou X je možné pracovat pouze v bloku REGION X! Přístup do bloku hlídá semafor!

Kritická oblast (Hansen, Hoare ) Přepsáno pomocí semaforu! Přepsáno pomocí semaforu! Var X: integer; Var X_sem: semafor; Init(X_sem, 1); …Wait(X_sem); X := 25; X := 25;Signal(X_sem); NEVÝHODA: Musíme si vytvořit vlastní semafor a pracovat s nim. Nikdo nehlídá, kde se s proměnnou X pracuje!

MONITOR (využívají jazyky: Modula II a Ada) Monitor X{jazyk podobný Pascalu} Var Z: integer; Procedure PLUS; begin Z := Z+1; end; Procedure MINUS; begin Z := Z-1; end; End; Monitor je spojení sdílených zdrojů a procedur nebo funkcí, které s nimi pracují! Syntaxí se podobá definici třídy! Proměnná Z je dostupná pouze procedurám nebo funkcím v monitoru!

MONITOR Přepsáno pomocí semaforu! Var Z: integer; Var X_sem: semafor; Init(X_sem, 1); … Procedure PLUS; Begin Wait(X_sem); Z := Z+1; Signal(X_sem); End; Procedure MINUS; Begin Wait(X_sem); Z:=-1;Signal(X_sem); End; Jak je vidět monitor vkládá kód všech procedur a funkcí mezi volání Wait a Signal automaticky vytvořeného semaforu příslušného k danému monitoru!

Podpora synchronizace Základní podpora synchronizace je založen na principu tzv. randezvous čili schůzce – setkání. Základní podpora synchronizace je založen na principu tzv. randezvous čili schůzce – setkání. Tento princip obsahuje například jazyk ADA. Tento princip obsahuje například jazyk ADA.

Synchronizace (obecně) Process A; Var X: data; …Begin… B ! X; …End; Process B; Var Y: data; …Begin… A ? Y; …End; X Přijmy z procesu A data a ulož je do Y. Data z X pošli procesu B.

Synchronizace (ADA) process A; var X: data; begin…B.send(X);…end; process B; var Y: data; begin… accept send(in X: data); Y := X; end;…end; X Přijmy z procesu A data a ulož je do Y. Data z X pošli procesu B. POZOR: Tento způsob nám umožňuje definovat tzv. channel s názvem send!