Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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)

Podobné prezentace


Prezentace na téma: "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)"— Transkript prezentace:

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

2 Co jsme se naučili naposled I. Co je to kontext úlohy Co je to kontext úlohy Task switching (přepnutí úlohy) Task switching (přepnutí úlohy) Stavy procesu Stavy procesu –Running (běžící) –Ready (připravený) –Waiting (čekající) –Suspend (odložený)

3 Stavy procesů (připomenutí)

4 Co jsme se naučili naposled II. Co je to scheduling (plánování) Co je to scheduling (plánování) Preemptivní multitask Preemptivní multitask Kooperativní multitask Kooperativní multitask Úloha Úloha –Asynchronní –Synchronní –Na pozadí

5 Problém sdílené paměti Dvě úlohy současně přistupují na to samé místo ve sdílené paměti Dvě úlohy současně přistupují na to samé místo ve sdílené paměti Problém se vyskytne pokud manipulace s pamětí není atomická! Problém se vyskytne pokud manipulace s pamětí není atomická! Atomická manipulace = není dělitelná na jednodušší manipulace Atomická manipulace = není dělitelná na jednodušší manipulace

6 Problém sdílené paměti (jazyk podobný Pascalu) Úloha 1 I:=I+1; A[I] := DATA_1 Úloha 2 I:=I+1; A[I] := DATA_2 I=index do pole, A=pole DATA_1,DATA_2=data DATA_1, DATA_2=data

7 Problém sdílené paměti (jazyk podobný Pascalu) Úloha 1 I:=I+1; A[I] := DATA_1 Úloha 2 I:=I+1; A[I] := DATA_2 I=0 →I=1 A[1] = DATA_1 přepnutí I=1 →I=2 A[2] = DATA_2

8 Problém sdílené paměti (jazyk podobný Pascalu) Úloha 1 I:=I+1; A[I] := DATA_1 Úloha 2 I:=I+1; A[I] := DATA_2 1: I=0 →I=1 4: A[2] = DATA_1 1 2323 2: I=1 →I=2 3: A[2] = DATA_2 4

9 Problém sdílené paměti (jazyk podobný Pascalu) Správně A[1]=DATA_1 A[2]=DATA_2 Správně A[1]=DATA_1 A[2]=DATA_2 Chybně A[1]=??? A[2]=DATA_1 Chybně A[1]=??? A[2]=DATA_1 PROČ? PROČ? –protože operace, která manipuluje s daty není atomická!

10 Obecně se jedná o problém sdílených zdrojů Paměť Paměť Tiskárna Tiskárna Disky Disky Periferie Periferie … Ve všech výše uvedených případech je nutné řešit problém, jak synchronizovat přístup více úloh ke sdíleným zdrojům! Ve všech výše uvedených případech je nutné řešit problém, jak synchronizovat přístup více úloh ke sdíleným zdrojům!

11 Kritická sekce Kritická sekce je část procesu, která se nesmí vykonávat současně s kritickou sekcí jiného procesu. Kritická sekce je část procesu, která se nesmí vykonávat současně s kritickou sekcí jiného procesu. Mezi dvěma kritickými sekcemi existuje vztah MUTUAL EXCLUSION. Mezi dvěma kritickými sekcemi existuje vztah MUTUAL EXCLUSION. Třída kritických sekcí je množina kritických sekcí, které jsou všechny vzájemně ve vztahu mutual exclusion Třída kritických sekcí je množina kritických sekcí, které jsou všechny vzájemně ve vztahu mutual exclusion POZNÁMKA: V kooperativních systémech tento problém nevzniká pokud ho sami nevytvoříme. V systémech preemptivních jeho vznik neovlivníme. POZNÁMKA: V kooperativních systémech tento problém nevzniká pokud ho sami nevytvoříme. V systémech preemptivních jeho vznik neovlivníme.

12 Jak řešit problém kritické sekce Zákaz přerušení Zákaz přerušení DI; disable IRQ I := I + 1 A[I] := DATA_1 EI; enable IRQ Není moc výhodné Není moc výhodné –Mohu zablokovat celý program –Úsek kódu musí být co nejkratší

13 Zákaz přerušení (další problémy) Mohou jen programy, které pracují v privilegovaném režimu Mohou jen programy, které pracují v privilegovaném režimu Pokud je přerušení zakázáno, ostatní programy jsou pozastaveny Pokud je přerušení zakázáno, ostatní programy jsou pozastaveny Pokud se jedná o víceprocesorové systémy – tak nám stejnak nepomůže Pokud se jedná o víceprocesorové systémy – tak nám stejnak nepomůže

14 Jak řešit problém kritické sekce Hardwarová řešení (speciální instrukce procesoru) Hardwarová řešení (speciální instrukce procesoru) –TAS (test and set) –… Softwarová řešení Softwarová řešení –Semafor –Monitor –… Jsou to výhodnější řešení nežli zákaz IRQ. Jsou to výhodnější řešení nežli zákaz IRQ. –Existuje více variant –Brzy si je ukážeme

15 Proces AProces B Čti 1 byte „1“ Čti 2 byte „9“ Dekrementuje 10 09 1909 přepnutí Sdílená proměnná

16 Proces AProces B Čti 1 byte „1“ Čti 2 byte „0“ Test (úspěšný) 10 09 přepnutí Sdílená proměnná semafor Test (neúspěšný) set reset přepnutí dekrementace volný obsazený volný

17 Semafor PROCES A while sem = 0 do; sem := 0; kritická sekce; sem := 1; PROCES B while sem = 0 do; sem := 0; kritická sekce; sem := 1; KSKS KSKS PROBLEM: testování a nastavení musí být atomická operace!!!

18 TAS (test and set) Vysvětlení instrukce TAS v pseudojazyce If (sem=0) then flag := false; Else sem := 0; flag := true; End; Jak se instrukce TAS používá Jak se instrukce TAS používá Label: TAS sem;test and set JIFFLabel;jump if false ; kritická sekce movsem, 1 Zde může nastat IRQ!

19 Semafor - zjednodušeně PROCES A Wait(sem); kritická sekce; Signal(sem); PROCES B Wait(sem); kritická sekce; Signal(sem); KS Init(sem, 1); Init, Wait, Signal – jsou funkce pro práci se semaforem. funkce Wait – je atomická z hlediska test and set. Během funkce Wait dochází k přepínání procesů! KS

20 Boolean semafor Init(sem,value) Nastaví semafor sem na hodnotu value (0 nebo 1) Wait(sem) Čekání na semafor Signal(sem) Uvolnění semaforu while sem=0 do; sem := 0; Sem := 1; sem := value;

21 Integer semafor Init(sem,value) Nastaví semafor sem na hodnotu value (≥0) Wait(sem) Čekání na semafor Signal(sem) Uvolnění semaforu while sem=0 do; sem := sem - 1; Sem := sem + 1; sem := value;

22 Rozdíl – boolean a integer semafor Boolean semafor Boolean semafor –Umožňuje sdílet jeden zdroj, například místo v paměti Integer semafor Integer semafor –Umožňuje sdílet několik zdrojů, například několik tiskáren

23


Stáhnout ppt "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)"

Podobné prezentace


Reklamy Google