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.

Slides:



Advertisements
Podobné prezentace
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Advertisements

ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
Operační systémy. OPERAČNÍ SYSTÉMY pomoc operátorovi, podpora vlastností reálného času, víceuživatelských a více úlohových systémů.
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
Paralelní programování
Paralelní programování
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Algoritmizace a programování
Informatika I 3. přednáška
Procedury a funkce Základní charakteristika a použití v programu.
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í.
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
Informatika I 2. přednáška
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
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.
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.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
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,
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
2 CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Podle řídící proměnné proveď n-krát příkaz P1.
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)
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
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.
1/29 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Procesy 05.
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý.
Zablokování (deadlock, smrtelné objetí, uváznutí)
Typy cyklů Do...Loop For...Next For Each...Next.
A4B33OSS (J. Lažanský) verze: Podzim 2010 Meziprocesní komunikace a synchronizace procesů 1 Obsah Téma 5 – Meziprocesní komunikace a synchronizace procesů.
A4B33OSS (J. Lažanský) verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 1 Obsah Téma 5 – Synchronizace procesů a problém uváznutí 1.Problém.
3. konzultace (5 hodin) Studijní materiály najdete na adrese:
GYMNÁZIUM, VLAŠIM, TYLOVA
1/28 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Vlákna 06.
A3B33OSD (J. Lažanský) verze: Jaro 2013 Synchronizace procesů a problém uváznutí 1 Obsah Téma 5 – Synchronizace procesů a problém uváznutí 1.Problém soupeření,
doc. RNDr. Zdeněk Botek, CSc.
Základy operačních systémů Meziprocesová komunikace a synchronizace Jakub Yaghob.
PB 169 Počítačové sítě a operační systémy1 Synchronizace procesů Uváznutí PB 169 Počítačové sítě a operační systémy.
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
ZPRACOVÁNÍ VSTUPŮ POST a GET. METODY ZPRACOVÁNÍ VSTUPŮ 2.
Operační systémy Souběh a uváznutí © Milan Keršláger
Operační systémy 10. Souběh a uváznutí
Zvídavé otázky 1. Prevence a detekce uváznutí
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: 
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Operační systémy 9. Spolupráce mezi procesy
Operační systémy 10. Souběh a uváznutí
Souběh 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: 
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
PB 169 Počítačové sítě a operační systémy
Přednášky z distribuovaných systémů
Přepínání procesů 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: 
Monitor Object 1.
Transkript prezentace:

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 je to kritická sekce Jak se dá současný přístup řešit pomocí semaforu Jak se dá současný přístup řešit pomocí semaforu Instrukce TAS (test and set) Instrukce TAS (test and set) Boolean a integer semafor Boolean a integer semafor

Semafor a jeho řešení 1. Speciální instrukce asembleru a)Test And Set b)Lock c)Exchange d)Get and Inc Přestože existuje několik možných instrukcí, které jsou implementovány v různých procesorech, jejich použití je víceméně ekvivalentní.

Speciální instrukce asembleru Test And Set (už známe) Test And Set (už známe) If sem=0 Then Flag:=false; Else sem:=0; Flag=true; End;

Speciální instrukce asembleru Exchange (prohození) Exchange (prohození) Reg :=: sem Což je totéž jako tmp := sem; sem := Reg; Reg := tmp;

Speciální instrukce asembleru Lock (zámek) Lock (zámek) while sem=0 do; sem := 0; Nejvíce podobné tomu, co chceme. Musí být přerušitelná v cyklu!

Speciální instrukce asembleru Inkrement (Dekrement) And Set Inkrement (Dekrement) And Set Sem := sem +1; Reg := Sem;

Semafor a jeho řešení 2. Softwarové řešení Nalezl holandský matematik T. DEKKER, které využívá 3 proměnné! Obtížné na pochopení!

Semafor a jeho řešení 2. Optimální Disable, Enable IRQ Nalezl matematik DJIKSTRA v roce Využívá pouze jedinou proměnnou! Dá se pochopit Nalezl matematik DJIKSTRA v roce Využívá pouze jedinou proměnnou! Dá se pochopit

Semafor a jeho řešení Obsazeno := true; {pomocná proměnná} RepeatDI; Obsazeno := Semafor; Semafor := True; EI; Until Not Obsazeno;

Pasivní semafor Procedure Wait(var sem); ; zjednodušeno ohledně kritická sekce begin while (sem=0) do; sem := 0; End; Nelze použít v kooperativním režimu Nelze použít v kooperativním režimu Užírá zbytečně čas CPU, protože zůstává ve stavu READY Užírá zbytečně čas CPU, protože zůstává ve stavu READY

Aktivní semafor Procedure Wait(var sem); ; zjednodušeno ohledně kritická sekce Begin if (sem=0) then Sleep(Q); sem := 0; End; Poznámka: fronta Q přináleží k semaforu sem. Poznámka: fronta Q přináleží k semaforu sem. Je nutný v kooperativním režimu Je nutný v kooperativním režimu Zbytečně nespotřebovává čas CPU, protože usne ve frontě u semaforu, je tedy ve stavu waiting! Zbytečně nespotřebovává čas CPU, protože usne ve frontě u semaforu, je tedy ve stavu waiting!

SLEEP(Q) Procedura SLEEP vloží právě běžící proces (running process) do fronty Q Procedura SLEEP vloží právě běžící proces (running process) do fronty Q a zavolá plánovač (scheduler), který vybere nový proces, který se stane procesem běžícím. Potom je nutné přepnout (TaskSwitch) procesy. a zavolá plánovač (scheduler), který vybere nový proces, který se stane procesem běžícím. Potom je nutné přepnout (TaskSwitch) procesy.

SLEEP(Q) Procedure Sleep(var Q: Queue); Var NewProc, OldProc: Process; Begin OldProcess := RunningProces;{pamatujeme si RP} Enqueue(RunningProcess, Q);{strčíme ho do Q} NewProc := Schedule;{najdeme nový P} RunningProcess := NewProc;{pamatujeme si ho} TaskSwitch(NewProc,OldProc);{přepneme procesy} End;

Enqueue, Dequeue, … Enqueue(P,Q) Enqueue(P,Q) –Vloží proces P do fronty Q Dequeue(Q): P Dequeue(Q): P –Z fronty Q vyzvedne proces P EmptyQueue(Q) EmptyQueue(Q) –Vrací True, když je fronta Q neprázdná!

SCHEDULE() {plánovací funkce, nalezne nový proces pro běh} Function Schedule: Process; Begin Schedule := Dequeue(ReadyQueue); End;

TaskSwitch(New,Old) Procedure TaskSwitch(var new,old: process); Begin {Zakážeme IRQ. Uložíme kontext. Uložíme kontext. Prohodíme zásobníky. Prohodíme zásobníky. Obnovíme kontext. Obnovíme kontext. Povolíme IRQ. }End;

Aktivní semafor Procedure Signal(sem); Begin sem := sem + 1; If Not EmptyQueue(Q) Then WakeUp(Q) Else Sleep(ReadyQueue); End;

WakeUp(Q) Procedura WAKEUP vloží právě běžící proces do fronty READY. Jako nový proces vezme proces z fronty Q. Pote se provede přepnutí procesů (TaskSwitch). Procedura WAKEUP vloží právě běžící proces do fronty READY. Jako nový proces vezme proces z fronty Q. Pote se provede přepnutí procesů (TaskSwitch).

WakeUp(Q) Procedure WakeUp(Q: Queue) Var NewProc, OldProc: Process; Begin OldProc := RunningProcess;{uložíme běžící} Enqueue(RunningProcess,ReadyProcess);{bude ready} NewProc := Dequeue(Q);{nový je ze fronty Q} RunningProcess := NewProc;{pamatujeme si ho} TaskSwitch(NewProc,OldProc);{přepneme procesy} End;

Semafor s frontou Budeme si semafor implementovat jako record. Semaphore = Record Queue : QueueType; Queue : QueueType; Counter : Integer; Counter : Integer;End;

Aktivní semafor Procedure Wait(var sem); ; zjednodušeno ohledně kritická sekce Begin if (sem.counter=0) then Sleep(sem.queue); sem.counter := 0; End;

Aktivní semafor Procedure Signal(sem); Begin sem.counter := sem.counter + 1; If Not EmptyQueue(sem.queue) Then WakeUp(sem.queue)Else Sleep(ReadyQueue); End;

poznámky Ve skutečnosti je nutné řešit další problémy Ve skutečnosti je nutné řešit další problémy –Co se má udělat když nějaká fronta bude prázdná! –Co dělat, když má fronta konečnou délku? –…

Jak realizovat frontu ? Jako pole Jako pole –Výhoda – je to jednoduché –Nevýhoda – omezení počtu prvků Jako seznam Jako seznam –Výhoda – téměř neomezený počet prvků –Nevýhoda – je to složitější Co vlastně do fronty ukládáme? Co vlastně do fronty ukládáme? –Nejlépe ukazatel (pointer) na PCB (process control block)

DEADLOCK Jedná se o vzájemné zablokování procesů. Jedná se o vzájemné zablokování procesů. Jednoduše řečeno – procesy na sebe vzájemně čekají. Jednoduše řečeno – procesy na sebe vzájemně čekají. Příklad: Honza a Michal stojí na každé straně dveří. Každý z nich čeká, až dveře otevře ten druhý. Žádný z nich se ovšem nedočká. Příklad: Honza a Michal stojí na každé straně dveří. Každý z nich čeká, až dveře otevře ten druhý. Žádný z nich se ovšem nedočká.

DEADLOCK PROCES A Wait(S1); Wait(S2);Signal(S2); Signal (S1); PROCES B Wait(S2); Wait(S1);Signal(S1); Signal (S2);

Postupový prostor

Jak zabránit DEADLOCKu? PREVENCE – procesy se programují tak, aby zmizely nebezpečné oblasti. Použijeme vnořené přidělování prostředků. PREVENCE – procesy se programují tak, aby zmizely nebezpečné oblasti. Použijeme vnořené přidělování prostředků. VYHÝBÁNÍ – vyhýbáme se nebezpečné oblasti  bankéřův algoritmus. Při přidělení prostředku testujeme vstup do nebezpečné oblasti. VYHÝBÁNÍ – vyhýbáme se nebezpečné oblasti  bankéřův algoritmus. Při přidělení prostředku testujeme vstup do nebezpečné oblasti. DETEKCE a ZOTAVENÍ – Deadlock se připustí, ale OS ho násilím vyřeší. Odebere a pak znovu přidělí procesu prostředek. DETEKCE a ZOTAVENÍ – Deadlock se připustí, ale OS ho násilím vyřeší. Odebere a pak znovu přidělí procesu prostředek.

Začíná to bejt nějaký složitý co ! Pěkně jsme si to zavařily!