principy počítačů a operační systémy · podmínky vzniku deadlocku •coffman conditions...
TRANSCRIPT
![Page 1: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/1.jpg)
Synchronizace
11/4/2020 vjj 1
![Page 2: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/2.jpg)
Synchronizace
film - obraz a zvuktanec
automatická plnící linka
11/4/2020 vjj 2
![Page 3: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/3.jpg)
Synchronizace
• čeho ?!?!?!
• dvou (a více) paralelně běžících procesů(studenti střídající se v labu PC)
• dvou (a více) paralelně běžících vláken jednoho procesu(jeden účet na společném notebooku)
• dvou (a více) paralelně běžících vláken dvou (a více) procesů(cloud pro sdílení dat)
11/4/2020 vjj 3
![Page 4: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/4.jpg)
Synchronizace
• proč ?!?!?!
• sdílení prostředků
• čekání na zprávu, že data jsou připravena(autor píše článek a vybírá vhodné ilustrace a výsledek pošle do sdíleného uložiště v cloudu,grafik potom upravuje celkový vzhled článku)
• exkluzivní práce se sdílenými daty (kritické sekce)(dva autoři se střídají v práci na společném článku)
11/4/2020 vjj 4
![Page 5: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/5.jpg)
synchronizace I.
• 1. proces / vlákno
Signalizace(že data jsou už připravena)
• 2. proces / vlákno
Čekání(až budou data připravena)
11/4/2020 vjj 5
![Page 6: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/6.jpg)
příkladF1 (X)
{
...
X = výsledek
}
main (. . . )
{F1(A) // výpočet A nezávislý na B
F2(B) // výpočet B nezávislý na A
F3(A,B)}
11/4/2020 vjj 6
F2 (X)
{
...
X = výsledek
}
![Page 7: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/7.jpg)
příkladF1 (X)
{
...
X = výsledek
}
main (. . . )
{F2(B) // výpočet B nezávislý na A
F1(A) // výpočet A nezávislý na B
F3(A,B)}
11/4/2020 vjj 7
F2 (X)
{
...
X = výsledek
}
![Page 8: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/8.jpg)
problém
main (. . . )
{
...
čekej na F1 a F2
F3(A,B)}
11/4/2020 vjj 8
F1(A) ; F2(B) ;
F1 (X)
{
...
X = výsledek
}
F2 (X)
{
...
X = výsledek
}
MAINF1 F2
WAIT
![Page 9: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/9.jpg)
round-robin
• Main, F1 a F2 se stále točí v Round-Robinu společně s ostatními vlákny
11/4/2020 vjj 9
![Page 10: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/10.jpg)
to umí každýF1 (X)
{ ...
X = výsledek
HOTOVO1 = TRUE
}
main (. . . )
{ bool HOTOVO1 = FALSE
bool HOTOVO2 = FALSE
while ( ! ( HOTOVO1 and HOTOVO2 ) )
F3(A,B)}
11/4/2020 vjj 10
F2 (X)
{ ...
X = výsledek
HOTOVO2 = TRUE
}
F1(A) F2(B)
![Page 11: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/11.jpg)
malé vylepšeníF1 (X)
{ ...
X = výsledek
HOTOVO1 = TRUE
}
main (. . . )
{ bool HOTOVO1 = FALSE
bool HOTOVO2 = FALSE
while ( ! ( HOTOVO1 and HOTOVO2 ) ) Sleep(...)
F3(A,B)}
11/4/2020 vjj 11
F2 (X)
{ ...
X = výsledek
HOTOVO2 = TRUE
}
F1(A) F2(B)
![Page 12: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/12.jpg)
round-robin
• Main, F1 a F2 se stále točí v Round-Robinu společně s ostatními vlákny, jen Main nespotřebovává pokaždé celé kvantum
11/4/2020 vjj 12
![Page 13: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/13.jpg)
ale jde to i jinakF1 (X)
{ ...
X = výsledek
SetEvent (HOTOVO1)
}
main (. . . )
{ event HOTOVO1 = CreateEvent (..., false, ...)
event HOTOVO2 = CreateEvent (..., false, ...)
Wait ( HOTOVO1, HOTOVO2 )
F3(A,B)}
11/4/2020 vjj 13
F2 (X)
{ ...
X = výsledek
SetEvent (HOTOVO2)
}
F1(A) F2(B)
![Page 14: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/14.jpg)
round-robin
• F1 a F2 se stále točí v Round-Robinu společně s ostatními vlákny, ale Main odpočívá mezi čekajícími vlákny
11/4/2020 vjj 14
![Page 15: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/15.jpg)
a ještě jinakF1 (X)
{
...
X = výsledek
}
main (. . . )
{myThread1 = CreateThread (. . . , F1, A, . . )
myThread2 = CreateThread (. . . , F2, B, . . )
Wait (myThread1, myThread2 )
F3(A,B)} ;
11/4/2020 vjj 15
F2 (X)
{
...
X = výsledek
}
![Page 16: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/16.jpg)
EventHANDLE CreateEvent
(LPSECURITY_ATTRIBUTES lpsa,BOOL bManualReset,BOOL InitialState,LPCTSTR lpszName) ;
HANDLE OpenEvent(DWORD fdwAccess,BOOL fInherit,LPCTSTR lpszName) ;
11/4/2020 vjj 16
![Page 17: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/17.jpg)
Event
• Wait...
• manuální - zůstane nastaven
• automatický - zruší se nastavení
BOOL SetEvent (hEvent) ;
BOOL ResetEvent (hEvent) ;
11/4/2020 vjj 17
![Page 18: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/18.jpg)
AutoResetEventstatic AutoResetEvent autoEv =
new AutoResetEvent (false) ;
• po zasignalizování propustí jedno vlákno a opět přejde do nesignalizovaného stavu
autoEv . Set () ; autoEv . WaitOne () ; autoEv . WaitOne (int ms, false) ;autoEv . Reset () ;
11/4/2020 vjj 18
![Page 19: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/19.jpg)
ManualResetEventstatic ManualResetEvent autoEv =
new ManualResetEvent (false) ;
• po zasignalizování propouští všechna vlákna dokud není explicitně resetován
autoEv . Set () ; autoEv . WaitOne () ;autoEv . WaitOne (int ms, false) ;autoEv . Reset () ;
11/4/2020 vjj 19
![Page 20: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/20.jpg)
Pulse
• Wait...
• manuální - všichni
• automatický - první
BOOL PulseEvent (hEvent) ;
11/4/2020 vjj 20
![Page 21: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/21.jpg)
synchronizace II.
11/4/2020 vjj 21
![Page 22: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/22.jpg)
kritické sekce• 1. proces / vlákno
. . .
práce na společném článku
. . .
• 2. proces / vlákno
. . .
práce na společném článku
. . .11/4/2020 vjj 22
![Page 23: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/23.jpg)
problém
main (. . . )
{
...
}
11/4/2020 vjj 23
F1() ; F2() ;
F1 ()
{
práce na společném článku
}
F2 ()
{
práce na společném článku
}
MAIN
F1 F2
![Page 24: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/24.jpg)
round-robin
• Main, F1 a F2 se stále točí v Round-Robinu společně s ostatními vlákny
11/4/2020 vjj 24
![Page 25: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/25.jpg)
kritické sekce• 1. proces / vlákno
Wait ... až nebude na článku pracovat nikdo jiný
práce na společném článku
Release . . .
• 2. proces / vlákno
Wait ... až nebude na článku pracovat nikdo jiný
práce na společném článku
Release . . .
11/4/2020 vjj 25
![Page 26: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/26.jpg)
binární semafor• Dijkstra
• proměnná typu integer
• hodnota 1 znamená volno/pokračuj
• hodnota 0 znamená obsazeno/čekej
• Wait(S) :if S = 0 (zavřeno) ... čekej ve frontě
if S = 1 (otevřeno) ... zavři za sebouS <- 0 ... a pokračuj dál
• Signal(S) :S <- 1 (otevři) … vzbuď (první) vlákno,
které čeká ve frontěpřed semaforem S
11/4/2020 vjj 26
![Page 27: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/27.jpg)
Wait
• co znamená "čekej ve frontě" ???
TryToGetThrough: if S = 0. . . . .goto TryToGetThrough
• kdyby to takhle jednoduše dělali i ostatní, nebyla by to (u)spořádaná fronta na semafor S, ale výběr podle nejlepšího postavení v RoundRobinu v okamžiku kdy je semafor S zvednutý (vadilo by to?)
while ( S = 0 ) { }
![Page 28: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/28.jpg)
WaitDWORD WaitForSingleObject
(HANDLE hObject,DWORD milisekundy) ;
• 0 . . . 0xFFFFFFFF = INFINITE
• WAIT_OBJECT_0WAIT_TIMEOUTWAIT_ABANDONEDWAIT_FAILED
DWORD WaitForSingleObjectEx(HANDLE hObject,DWORD milisekundy,BOOL fAlert) ;
11/4/2020 vjj 29
![Page 29: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/29.jpg)
WaitDWORD WaitForMultipleObjects
(DWORD počet,CONST HANDLE * lphObjects,BOOL fWaitAll,DWORD milisekundy) ;
• MAXIMUM_WAIT_OBJECTS• WAIT_OBJECT_0
WAIT_OBJECT_0 . . .. . . WAIT_OBJECT_0 + počet – 1
WAIT_TIMEOUTWAIT_ABANDONED_0WAIT_ABANDONED_0 . . .
. . . WAIT_ABANDONED_0 + počet – 1WAIT_FAILED
11/4/2020 vjj 30
![Page 30: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/30.jpg)
Čekání na "už mám čas"DWORD WaitForInputIdle
(HANDLE hProcess,DWORD milisekundy) ;
PostMessage (hWin2, WM_KEYDOWN, VK_MENU, 0);PostMessage (hWin2, WM_KEYDOWN, VK_F, 0);PostMessage (hWin2, WM_KEYUP, VK_F, 0);PostMessage (hWin2, WM_KEYUP, VK_MENU, 0);PostMessage (hWin2, WM_KEYDOWN, VK_O, 0);PostMessage (hWin2, WM_KEYUP, VK_O, 0);WaitForInputIdle (hProc2, 120000) ;
11/4/2020 vjj 31
![Page 31: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/31.jpg)
Kombinované čekáníDWORD MsgWaitForMultipleObjects
(DWORD počet,LPHANDLE pHandles,BOOL ČekejNaVšechny,DWORD Milisekundy,DWORD ZpůsobČekání);
• Jeden nebo všechny (v závislosti na třetím parametru) objekty signalizují konec
• Specifikovaný typ vstupu se nově objevil ve frontě vlákna
• Uplynul předepsaný interval11/4/2020 vjj 32
![Page 32: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/32.jpg)
Způsob čekání
• QS_ALLINPUTQS_HOTKEYQS_INPUTQS_KEYQS_MOUSEQS_MOUSEBUTTONQS_MOUSEMOVEQS_PAINTQS_POSTMESSAGEQS_SENDMESSAGEQS_TIMER
11/4/2020 vjj 33
![Page 33: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/33.jpg)
SemaforHANDLE hSemafor = CreateSemaphore
(LPSECURITY_ATTRIBUTES lpsa,LONG MaxValue,LPSTR lpszName) ;
HANDLE hSemafor = OpenSemaphore(DWORD Access,BOOL fInherit,LPCTSTR lpszName) ;
BOOL ReleaseSemaphore(HANDLE hSemaphore,LONG Počet,LPLONG PůvodníPočet) ;
11/4/2020 vjj 34
![Page 34: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/34.jpg)
parametr "access"
• 1. parametr funkce OpenSemaphor
• SEMAPHORE_ALL_ACCESS
• úplný přístup
• SEMAPHORE_MODIFY_STATE
• použití v ReleaseSemaphor
• SYNCHRONIZE
• použití v libovolné funkci Wait...
11/4/2020 vjj 35
![Page 35: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/35.jpg)
sdílení semaforu
• 1. proces / vlákno
HANDLE hSemafor ;hSemafor = CreateSemaphore (. . . , "myS") ;
• 2. proces / vlákno
HANDLE hSemafor ;hSemafor = CreateSemaphore (. . . , "myS") ;
if (GetLastError() == ERROR_ALREADY_EXISTS){ // je to sdílený semafor
11/4/2020 vjj 36
![Page 36: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/36.jpg)
MutexHANDLE CreateMutex
(LPSECURITY_ATTRIBUTES lpsa,BOOL InitialOwner,LPSTR lpszMutexName) ;
HANDLE OpenMutex(DWORD fdwAccess,BOOL fInherit,LPCTSTR lpszMutexName) ;
• MUTEX_ALL_ACCESS
• SYNCHRONIZE
BOOL ReleaseMutex (HANDLE mutex) ;
11/4/2020 vjj 37
![Page 37: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/37.jpg)
Mutexusing System . Threading ;static Mutex gM1 ;
gM1 . WaitOne () ;
gM1 . WaitOne (Timeout.Infinite, false) ;
gM1 . ReleaseMutex () ;
11/4/2020 vjj 38
![Page 38: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/38.jpg)
Mutexstatic Mutex gM2 ;static Mutex[] gMs = new Mutex[2] ; gMs[0] = gM1 ;gMs[1] = gM2 ;
Mutex . WaitAll (gMs) ;
Mutex . WaitAny (gMs) ;if (gM1.WaitOne (0, false))
11/4/2020 vjj 39
![Page 39: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/39.jpg)
Synchronizační objekty
• aplikace
• binární semafor
• vícehodnotový semafor
• mutex
• událost, event
• monitor
• system
• semaphor
• spin-lock
11/4/2020 vjj 40
![Page 40: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/40.jpg)
System• semaphor – omezený počet
• spinlock – test-and-set
• fronty čekajících vláken
• během práce Systému se semaforem a s frontami čekajících vláken nemusí být synchronizační data v konzistentním stavu
• nemůže v té době dojít k přerušení, k přepnutí kontextu a k jinému požadavku na změnu v synchronizaci, tj. k požadavku na práci s momentálně nekonzistentními daty?
• IRQL = "hardwarové priority" - režim procesoru
11/4/2020 vjj 41
![Page 41: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/41.jpg)
IRQL ≠ Windows Priority
11/4/2020 vjj 42
![Page 42: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/42.jpg)
už umíme synchronizovat
tak v čem je problém?
11/4/2020 vjj 43
![Page 43: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/43.jpg)
tak v čem je problém?
DEADLOCK
11/4/2020 vjj 44
![Page 44: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/44.jpg)
Dining philosophers
11/4/2020 vjj 55
![Page 45: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/45.jpg)
Dining philosophers problem
• It was originally formulated in 1965 by Edsger WybeDijkstra as a student exam exercise, presented in terms of computers competing for access to tape drive peripherals.
• Soon after, Tony Hoare gave the problem its present formulation.
11/4/2020 vjj 56
![Page 46: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/46.jpg)
Dining philosophers problem
11/4/2020 vjj 57
Plato
Confucius
Socrates
Voltaire
Descartes
![Page 47: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/47.jpg)
philosopher's algorithm
• think until the left fork is available; when it is, pick it up;
• think until the right fork is available; when it is, pick it up;
• when both forks are held, eat for a fixed amount of time;
• then, put the right fork down;
• then, put the left fork down;
• repeat from the beginning
11/4/2020 vjj 58
![Page 48: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/48.jpg)
thinking
get LEFT fork
thinking
get RIGHT fork
dining
release RIGHT forkrelease LEFT fork
Dining philosophers problem
P1
thinking
get LEFT fork
thinking
get RIGHT fork
dining
release RIGHT forkrelease LEFT fork
fork
P2
fork
LEFT
LEFT
RIGHT
RIGHT
![Page 49: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/49.jpg)
Dining philosophers problem
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 50: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/50.jpg)
start
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 51: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/51.jpg)
za chvíli
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 52: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/52.jpg)
a dále
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 53: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/53.jpg)
a dále
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 54: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/54.jpg)
a dále
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 55: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/55.jpg)
a dále
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 56: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/56.jpg)
a dále
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 57: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/57.jpg)
a dále
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 58: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/58.jpg)
a dale? - už nic - deadlock
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 59: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/59.jpg)
detekce deadlocku
• dynamický orientovaný graf
• kdo na co čeká (červené přerušované)
• co komu patří (obracené zelené)
• vznikne-li cyklus, nastal deadlock
• musíme změnit šipky z "kdo co má" (zelené plné) na "co komu patří" (opačně orientované červené)
11/4/2020 vjj 71
![Page 60: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/60.jpg)
cyklus
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 61: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/61.jpg)
deadlock
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 62: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/62.jpg)
podmínky vzniku deadlocku• Coffman conditions (pro binární semafory)
1. mutual exclusion – vzájemná vyloučenost – prostředek má v jeden okamžik vždy nejvýše jednoho (dočasného) uživatele/vlastníka (tj. nikdo jiný ho nesmí používat zároveň)
2. přidělování bez preempce (bez odebírání) – prostředek může uvolnit jen jeho (dočasný) majitel, tj. cyklické čekání nelze násilně ukončit nějakým externím správcem
3. hold and waito prostředky lze žádat postupně/jednotlivě (tj. mohu blokovat jeden prostředek a přitom čekat na jiný) a v libovolném pořadí
4. může dojít k cyklickému čekání11/4/2020 vjj 74
![Page 63: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/63.jpg)
deadlock
• aby mohlo dojít k deadlocku, musí "systém" splňovat všechny Coffmanovy podmínky najednou
• takže k tomu, aby byl "systém" bezpečný (tj. aby nemohlo dojít k deadlocku) stačí, aby v "systému" alespoň jedna z těchto podmínek neplatila
11/4/2020 vjj 75
![Page 64: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/64.jpg)
1. prevence deadlocku
– práce s virtuálními prostředky
– každý si myslí, že má žádaný prostředek sám pro sebe a taky se tak chová (např. tiskárny - Spooling)
– není nutné omezovat přístup k (virtuálním) prostředkům
– není zapotřebí prostředky jejich majitelům odebírat
11/4/2020 vjj 76
![Page 65: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/65.jpg)
virtuální vidličky (???)
P1
thinking
Wait (F1)Wait (F2)
dining
Release (F1)Release (F2)
F1
P2
thinking
Wait (F2)Wait (F1)
dining
Release (F1)Release (F2)
F2
F1
F2
fork
fork
![Page 66: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/66.jpg)
virtuální tiskárny
P1
thinking
Wait (F1)Wait (F2)
dining
Release (F1)Release (F2)
F1
P2
thinking
Wait (F2)Wait (F1)
dining
Release (F1)Release (F2)
F2
F1
F2
spooling for F1
spooling for F2
![Page 67: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/67.jpg)
2. ukončení deadlocku
• preempce
• jeden z procesů v cyklu je zavražděn (proč?)
• prostředky, které vlastnil, jsou opět volné
• násilné odebírání prostředků slouží jenk rozseknutí už vzniklého deadlocku
11/4/2020 vjj 79
![Page 68: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/68.jpg)
preempce
P1
F1
P2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
F2
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 69: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/69.jpg)
preempce
P1
F1
P2
F2
thinking
Wait (F2)
thinking
Wait (F1)
dining
Release (F1)Release (F2)
thinking
Wait (F1)
thinking
Wait (F2)
dining
Release (F1)Release (F2)
![Page 70: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/70.jpg)
3. prevence deadlocku
a) povinnost žádat o všechny používané prostředky najednou
Wait (F1, F2)
dining
Signal (F1)
Signal (F2)
11/4/2020 vjj 82
![Page 71: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/71.jpg)
vše najednou
P1
thinking
Wait (F1, F2)
dining
Release (F2)Release (F1)
F1
P2
thinking
Wait (F1, F2)
dining
Release (F2)Release (F1)
F2
![Page 72: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/72.jpg)
4. prevence deadlocku
b) hierarchie prostředků – pokud proces potřebuje více prostředků najednou, musí o ně žádat v předepsaném pořadí
Wait (F1)Wait (F2)
dining
Signal (F2) Signal (F1)
11/4/2020 vjj 84
![Page 73: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/73.jpg)
předepsané pořadí
P1
thinking
Wait (F1)Wait (F2)
dining
Release (F2)Release (F1)
F1
P2
thinking
Wait (F1)Wait (F2)
dining
Release (F2)Release (F1)
F2
![Page 74: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/74.jpg)
5. prevence deadlockuzabránit vzniku cyklu – Bankéřův algoritmus
Bankéř průběžně financuje investiční projekty svých klientů - bezúročně (!?).
Klienti nemusí požadovat celou potřebnou sumu najednou
Při žádosti o schválení projektu musí ale každý klient předložit celkový plánfinancování.
Ihned po dokončení projektu klient všechny zapůjčené miliardy vrátí.
Nesmí se stát, aby bankéř neměl pro klienta prostředky na dokončení již započatého projektu.
Bankéř může vyplácet jednotlivé části půjčky s libovolně dlouhou prodlevou
11/4/2020 vjj 86
![Page 75: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/75.jpg)
Bankéřův algoritmus1) nový požadavek
2) simulace přidělení požadovaného prostředku
3) zrušení příznaku "skončil" u všech procesů
4) existuje proces, který ještě nemá nastaven příznak "skončil"?
a) ano:existuje proces na jehož dokončení má bankéř momentálně dost prostředků?a. ano: simuluj jeho dokončení, tj. nastav jeho příznak "skončil" a simuluj vrácení
všech jeho prostředků, potom se vrať do bodu 4) .b. ne: odmítni nový požadavek
b) ne: přiděl požadovaný prostředek
11/4/2020 vjj 87
![Page 76: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/76.jpg)
Bankéřův algoritmus
11/4/2020 vjj 88
nový požadavek simulace přidělení prostředku
zrušení příznaku "skončil" u všech procesů
existuje proces, který ještě nemá nastaven příznak "skončil" a který by za dané situace mohl skončit, tj. má
bankéř dost prostředků, aby mohl uspokojit jeho již dříve oznámené požadavky ?
simuluj jeho dokončení, tj. nastav jeho příznak "skončil" a simuluj vrácení
všech jeho prostředků
existuje proces, který ještě nemá nastaven
příznak "skončil"?
přiděl požadovaný prostředek odmítni požadavek
ne ano
ano ne
![Page 77: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/77.jpg)
příklad• bankéř:
celkem 12 mld, 10 půjčeno, 2 zbývají
• přišel požadavek na jednu miliardu s tím, že před jejím vrácením budou požadovány ještě tři další (1+3)
• zápis: x+y = klient si už vypůjčil x miliard, před jejich vrácením bude (postupně) požadovat ještě y dalších
11/4/2020 vjj 89
3+5
1+2
1+1
5+4
2
1+3
3+5
1+2
1+1
5+4
1
1+3
3+5
1+2
1+1
5+4
2
1+3
3+5
1+2
1+1
5+4
9
1+3
3+5
1+2
1+1
5+4
4
1+3
3+5
1+2
1+1
5+4
3
1+3
3+5
1+2
1+1
5+4
12
1+3
![Page 78: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/78.jpg)
bankéř• na začátku, tj. když má bankéř ještě všechno, se jedná
o tzv. bezpečný stav
• bezpečný stav - existuje alespoň jedna posloupnost postupného ukončování projektů (procesů), která skončí tím, že bankéř má zase všechno
• bankéř si vždy ověřuje, vznikne-li splněním nového požadavku opět bezpečný stav, jinak požadavek odmítne
• v předchozím příkladu se předpokládalo, že počáteční stav je bezpečný (taky že byl), a ověřilo se, že splněním požadavku "1+3" vznikne opět bezpečný stav (tím se dodatečně dokázalo, že i ten předchozí byl bezpečný)
11/4/2020 vjj 90
![Page 79: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/79.jpg)
příklad
• ze stejného bezpečného počátečního stavu by splněním požadavku "1+4" vzniknul nebezpečný stav
11/4/2020 vjj 91
3+5
1+2
1+1
5+4
2
1+4
3+5
1+2
1+1
5+4
1
1+4
3+5
1+2
1+1
5+4
2
1+4
3+5
1+2
1+1
5+4
3
1+4
dál to nejde, tj. splněním nového požadavku by
vzniknul nebezpečný stav, požadavek bude odmítnut
![Page 80: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/80.jpg)
kritická sekce
různá pgm řešení
11/4/2020 vjj 92
![Page 81: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/81.jpg)
11/4/2020 vjj 93
P1
thinking
Wait (F1)Wait (F2)
dining
Release (F1)Release (F2)
kritická sekce
![Page 82: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/82.jpg)
podmíněná kritická sekce
region Přístup when Plných<N do
send(X,F)
Plných = Plných + 1
• = semafor + podmínka
11/4/2020 vjj 94
![Page 83: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/83.jpg)
Kritická sekce - přípravaCRITICAL_SECTION myCritSect ;InitializeCriticalSection (&myCritSect) ;
HANDLE hThreads[2] ;hThread[0] = CreateThread ( , myThread, ) ;hThread[1] = CreateThread ( , myThread, ) ;
WaitForMultipleObjects(2, hThreads, TRUE, INFINITE) ;
CloseHandle (hThread[0]) ;CloseHandle (hThread[1]) ;
DeleteCriticalSection (&myCritSect) ;
11/4/2020 vjj 95
![Page 84: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/84.jpg)
kritická sekce - synchronizace
DWORD WINAPI myThread (LPVOID parm){
. . .EnterCriticalSection (&myCritSect) ;
. . . kritická sekce
LeaveCriticalSection (&myCritSect) ;. . .return (0) ;
}
• 2. a 3. vlákno
11/4/2020 vjj 96
![Page 85: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/85.jpg)
monitor• kritické sekce jsou soustředěny do objektu Monitor,
který hlídá jejich exkluzivní volání
monitor Přístup
function Zapiš(X) ...
function Přečti(X) ...
• producent
Přístup.Zapiš(X)
• klient
Přístup.Přečti(X)11/4/2020 vjj 97
![Page 86: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/86.jpg)
.NET Monitor• pro práci se sdílenými daty
static byte[] buffer = new byte[100] ;
static void myFce(){
Monitor.Enter( buffer ) ;. . .Monitor.Exit( buffer ) ;
}
• C#
lock( buffer ) { . . . }
11/4/2020 vjj 98
![Page 87: Principy Počítačů a operační systémy · podmínky vzniku deadlocku •Coffman conditions (pro binární semafory) 1. mutual exclusion –vzájemná vyloučenost–prostředek](https://reader034.vdocuments.pub/reader034/viewer/2022052007/601c123a24070520f33b9e46/html5/thumbnails/87.jpg)
.NET Monitor
Monitor . Wait (buffer) ;
Monitor . Pulse (buffer) ;
Monitor . PulseAll (buffer) ;
11/4/2020 vjj 99