Synchronizace vjj 1

Rozměr: px
Začít zobrazení ze stránky:

Download "Synchronizace vjj 1"

Transkript

1 Synchronizace vjj 1

2 vjj 2 Synchronizace obraz a zvuk

3 vjj 3 Synchronizace procesy/vlákna

4 vjj 4 čeho?!?!?! Synchronizace dvou (a více) paralelně běžících procesů dvou (a více) paralelně běžících vláken jednoho procesu dvou (a více) paralelně běžících vláken dvou (a více) procesů

5 vjj 5 proč?!?!?! Synchronizace sdílení dat čekání na zprávu, že data jsou připravena exkluzivní práce se sdílenými daty (kritické sekce)

6 vjj 6 1. proces / vlákno synchronizace I. Signalizace (že data jsou už připravena) 2. proces / vlákno Čekání (až budou data připravena)

7 vjj 7 příklad F1 () { }... return X ; F2 () { }... return Y ; main (... ) { A = F1() ; B = F2() //nezávislé na výsledku F1 } ; F3(A,B)

8 vjj 8 příklad F1 () { }... return X ; F2 () { }... return Y ; main (... ) { B = F2() ; A = F1() //nezávislé na výsledku F2 } ; F3(A,B)

9 vjj 9 problém F1 () { }... return X ; F2 () { }... return Y ; main (... ) { A = F1() ; B = F2() ; čekej na F1 a F2 } ; F3(A,B)

10 vjj 10 problém F1 () { }... return X ; F2 () { }... return Y ; main (... ) { CreateThread (..., F1,... ) ; CreateThread (..., F2,... ) ; čekej na F1 a F2 } ; F3(A,B)

11 vjj 11 to umí každý F1 () {... HOTOVO1 = TRUE ; return X ; } F2 () {... HOTOVO2 = TRUE ; return Y ; } main (... ) { bool HOTOVO1 = FALSE ; bool HOTOVO2 = FALSE ; CreateThread (..., F1,... ) ; CreateThread (..., F2,... ) ; while (! ( HOTOVO1 and HOTOVO2 ) ) ; } ; F3(A,B)

12 vjj 12 malé vylepšení F1 () {... HOTOVO1 = TRUE ; return X ; } F2 () {... HOTOVO2 = TRUE ; return Y ; } main (... ) { bool HOTOVO1 = FALSE ; bool HOTOVO2 = FALSE ; CreateThread (..., F1,... ) ; CreateThread (..., F2,... ) ; while (! ( HOTOVO1 and HOTOVO2 ) ) Sleep(...) ; } ; F3(A,B)

13 vjj 13 ale jde to i jinak F1 () {... } SetEvent (HOTOVO1) ; return X ; F2 () {... } SetEvent (HOTOVO2) ; return Y ; main (... ) { event HOTOVO1 = CreateEvent (NULL, true, false, ""); event HOTOVO2 = CreateEvent (NULL, true, false, ""); CreateThread (..., F1,... ) ; CreateThread (..., F2,... ) ; Wait ( HOTOVO1, HOTOVO2 ) ; } ; F3(A,B)

14 vjj 14 a ještě jinak F1 () { }... return X ; F2 () { }... return Y ; main (... ) { mythread1 = CreateThread (..., F1,... ) ; mythread2 = CreateThread (..., F2,... ) ; Wait (mythread1, mythread2 ) ; } ; F3(A,B)

15 vjj 15 Event HANDLE CreateEvent (LPSECURITY_ATTRIBUTES lpsa, BOOL bmanualreset, BOOL InitialState, LPCTSTR lpszname) ; HANDLE OpenEvent (DWORD fdwaccess, BOOL finherit, LPCTSTR lpszname) ;

16 vjj 16 Event BOOL SetEvent (hevent) ; Wait... manuální - zůstane nastaven automatický - zruší se nastavení BOOL ResetEvent (hevent) ; BOOL PulseEvent (hevent) ; Wait... manuální - všichni automatický - první

17 vjj 17 AutoResetEvent static 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 () ;

18 vjj 18 ManualResetEvent static 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 () ;

19 synchronizace II vjj 19

20 vjj 20 kritické sekce 1. proces / vlákno... úprava fotografie v RAM proces / vlákno... jiná úprava fotografie v RAM...

21 vjj 21 kritické sekce 1. proces / vlákno Wait... úprava fotografie v RAM Release proces / vlákno Wait... jiná úprava fotografie v RAM Release...

22 vjj 22 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)... kritické místo S <- 0 (zavři)... a pokračuj Signal(S) : S <- 1 (otevři) vzbuď (první) vlákno, které čeká ve frontě před semaforem S

23 Wait co znamená "čekej ve frontě"??? TryToGetThrough: if S = goto TryToGetThrough kdyby to takhle jednoduše dělali i ostatní, nebyla by to fronta (proč?)

24 vjj 25 Wait DWORD WaitForSingleObject (HANDLE hobject, DWORD milisekundy) ; xFFFFFFFF = INFINITE WAIT_OBJECT_0 WAIT_TIMEOUT WAIT_ABANDONED WAIT_FAILED DWORD WaitForSingleObjectEx (HANDLE hobject, DWORD milisekundy, BOOL falert) ;

25 vjj 26 Wait DWORD WaitForMultipleObjects (DWORD počet, CONST HANDLE * lphobjects, BOOL fwaitall, DWORD milisekundy) ; MAXIMUM_WAIT_OBJECTS WAIT_OBJECT_0 WAIT_OBJECT_ WAIT_OBJECT_0 + počet 1 WAIT_TIMEOUT WAIT_ABANDONED_0 WAIT_ABANDONED_ WAIT_ABANDONED_0 + počet 1 WAIT_FAILED

26 vjj 27 Č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, ) ;

27 vjj 28 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ý interval

28 vjj 29 QS_ALLINPUT QS_HOTKEY QS_INPUT QS_KEY QS_MOUSE QS_MOUSEBUTTON QS_MOUSEMOVE QS_PAINT QS_POSTMESSAGE QS_SENDMESSAGE QS_TIMER Způsob čekání

29 vjj 30 Semafor HANDLE 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) ;

30 vjj 31 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...

31 vjj proces / vlákno sdílení semaforu HANDLE hsemafor ; hsemafor = CreateSemaphore (..., "mys") ; 2. proces / vlákno HANDLE hsemafor ; hsemafor = CreateSemaphore (..., "mys") ; if (GetLastError() == ERROR_ALREADY_EXISTS) { // je to sdílený semafor

32 vjj 33 Mutex HANDLE CreateMutex (LPSECURITY_ATTRIBUTES lpsa, BOOL InitialOwner, LPSTR lpszmutexname) ; HANDLE OpenMutex (DWORD fdwaccess, BOOL finherit, LPCTSTR lpszmutexname) ; MUTEX_ALL_ACCESS SYNCHRONIZE BOOL ReleaseMutex (HANDLE mutex) ;

33 vjj 34 Mutex using System. Threading ; static Mutex gm1 ; gm1. WaitOne () ; gm1. WaitOne (Timeout.Infinite, false) ; gm1. ReleaseMutex () ;

34 vjj 35 Mutex static 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))

35 vjj 36 aplikace Synchronizační objekty binární semafor vícehodnotový semafor mutex událost, event monitor system semaphor spin-lock

36 vjj 37 System semaphor omezený počet spinlock test-and-set fronty čekajících vláken nemůže dojít během práce se semaforem a s frontami čekajících vláken k přerušení a přepnutí kontextu? IRQL = "hardwarové priority" - režim procesoru

37 IRQL Windows Priority vjj 38

38 tak v čem je problém? vjj 39

39 vjj 40 tak v čem je problém? DEADLOCK

40 vjj 41 deadlock producent x konzument

41 producent x konzument v průměru pracují producent i konzument přibližně stejně rychle, krátkodobě se jejich rychlosti mohou podstatně lišit producent konzument ~~~ compile (X) F ~~~... send (X, F) receive (X, F) ~~~ process (X) ~~~

42 vjj 43 pravidla / podmínky producent zapisuje do fronty stále dokola, ale nesmí přepsat data, která konzument ještě nepřečetl nebo je právě čte konzument čte z fronty stále dokola, ale nesmí předběhnout producenta a číst data, která už jednou přečetl, nebo data, která producent právě zapisuje

43 vjj 44 producent x konzument sdílení dat -> semaphore Allow binary (0 / 1) producent konzument ~~~ compile(x) ~~~ Wait(Allow) send (X, F) Signal(Allow) F... Wait(Allow) receive (X, F) Signal(Allow) ~~~ process (X) ~~~

44 vjj 45 producent x konzument sdílení dat -> semaphore Allow binary (0 / 1) čekání na událost producent konzument ~~~ compile (X) ~~~ if (Empty(F)) { Wait(Allow) send (X, F) Signal(Allow) } F... if (Full(F)) { Wait(Allow) receive (X, F) Signal(Allow) } ~~~ process (X) ~~~

45 vjj 46 producent x konzument sdílení dat -> semaphore Allow binary (0 / 1) čekání na událost producent konzument ~~~ compile (X) ~~~ Wait(Allow) if (Empty(F)) { send (X, F) } Signal(Allow) F... Wait(Allow) if (Full(F)) { receive (X, F) } Signal(Allow) ~~~ process (X) ~~~

46 vjj 47 producent x konzument semaphore Allow binary (0 / 1) semaphore Empty 0, 1,..., N (= queue capacity) semaphore Full 0, 1,..., N (= queue capacity) producent konzument ~~~ compile (X) ~~~ Wait(Allow) Wait(Empty) send (X, F) Signal(Full) Signal(Allow) F... Wait(Full) Wait(Allow) receive (X, F) Signal(Allow) Signal(Empty) ~~~ process (X) ~~~

47 vjj 48 producent x konzument nastane-li delší zdržení Konzumenta, může nastat situace, kdy Empty = 0 a Full = N pokud se Producent pokusí zapsat do fronty, zůstane čekat, dokud konzument něco z fronty nepřečte producent konzument ~~~ compile (X) ~~~ Wait(Allow) Wait(Empty) send (X, F) Signal(Full) Signal(Allow) x x x x F... x x x Wait(Full) Wait(Allow) receive (X, F) Signal(Allow) Signal(Empty) ~~~ process (X) ~~~

48 vjj 49 producent x konzument Konzument se konečně vzpamatuje a pokusí se něco z fronty přečíst Ale přístup k frontě je zablokován... producent konzument ~~~ compile (X) ~~~ Wait(Allow) Wait(Empty) send (X, F) Signal(Full) Signal(Allow) x x x x F... x x x Wait(Full) Wait(Allow) receive (X, F) Signal(Allow) Signal(Empty) ~~~ process (X) ~~~

49 vjj 50 nebezpečí: deadlock (deadly embrace) Deadlock podmínky nutné pro vznik deadlocku protiopatření

50 Dining philosophers vjj 51

51 vjj 52 Dining philosophers problem It was originally formulated in 1965 by Edsger Wybe Dijkstra 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.

52 vjj 53 Dining philosophers problem Plato Confucius Socrates Voltaire Descartes

53 vjj 54 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

54 deadlock vjj 55

55 Dining philosophers problem P1 P2 get LEFT fork LEFT fork RIGHT get LEFT fork get RIGHT fork get RIGHT fork dining release RIGHT fork release LEFT fork RIGHT fork LEFT dining release RIGHT fork release LEFT fork

56 Dining philosophers problem P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

57 start P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

58 za chvíli P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

59 a dále P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

60 a dále P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

61 a dále P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

62 a dále P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

63 a dále P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

64 a dále - deadlock P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

65 vjj 66 detekce deadlocku dynamický orientovaný graf kdo na co čeká co komu patří vznikne-li cyklus, nastal deadlock

66 deadlock P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

67 deadlock P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

68 vjj 69 podmínky vzniku deadlocku Coffman conditions (pro binární semafory) 1. mutual exclusion vzájemná vyloučenost prostředek má vždy jen jediného (dočasného) uživatele/vlastníka (tj. nikdo jiný ho nesmí používat) 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 wait tj. mohu blokovat jeden prostředek a přitom čekat na jiný, resp. o prostředky lze žádat postupně/jednotlivě a v libovolném pořadí 4. může dojít k cyklickému čekání

69 vjj 70 deadlock aby mohlo dojít k deadlocku, musí "systém" splňovat všechny Coffmanovy podmínky najednou k tomu, aby byl "systém" bezpečný (tj. aby nemohlo dojít k cyklickému čekání) stačí, aby v systému alespoň jedna z těchto podmínek neplatila

70 vjj 71 virtuální prostředky 1. prevence deadlocku 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 prostředkům není zapotřebí prostředky jejich majitelům odebírat

71 vjj 72 preempce 2. ukončení deadlocku jeden z procesů je zavražděn (proč?) prostředky, které vlastnil, jsou opět volné násilné odebírání prostředků slouží jen k rozseknutí už vzniklého deadlocku

72 vjj prevence deadlocku a) povinnost žádat o všechny používané prostředky najednou Wait (F1, F2) dining Signal (F1) Signal (F2)

73 vjj 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)

74 virtuální vidličky (???) P1 fork P2 Wait (F1) Wait (F2) F1 F1 Wait (F2) Wait (F1) dining F2 F2 dining Release (F1) Release (F2) Release (F1) Release (F2) fork

75 preempce P1 P2 Wait (F1) Wait (F2) dining Release (F1) Release (F2) F1 F2 Wait (F2) Wait (F1) dining Release (F1) Release (F2)

76 předepsané pořadí P1 P2 Wait (F1) Wait (F2) dining Release (F2) Release (F1) F1 F2 Wait (F1) Wait (F2) dining Release (F2) Release (F1)

77 vše najednou P1 P2 Wait (F1, F2) F1 Wait (F1, F2) dining Release (F2) Release (F1) F2 dining Release (F2) Release (F1)

78 vjj prevence deadlocku zabrá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án financování. Ihned po dokončení projektu klient všechny zapůjčené miliardy vrátí. Nesmí se stát, aby bankéř neměl prostředky na dokončení již započatého projektu. Bankéř může vyplácet jednotlivé části půjčky s libovolně dlouhou prodlevou

79 vjj 80 1) nový požadavek Bankéřův algoritmus 2) simulace přidělení 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 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? 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

80 vjj 81 nový požadavek Bankéřův algoritmus 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? ano simuluj jeho dokončení, tj. nastav jeho příznak "skončil" a simuluj vrácení všech jeho prostředků ne existuje proces, který ještě nemá nastaven příznak "skončil"? ne ano přiděl požadovaný prostředek odmítni požadavek

81 vjj 82 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

82 vjj 83 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ý)

83 vjj 84 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 dál to nejde, tj. splněním nového požadavku by vzniknul nebezpečný stav, požadavek bude odmítnut 1+4

84 vjj 85 kritická sekce různá řešení

85 vjj 86 podmíněná kritická sekce = semafor + podmínka region Přístup when Plných<N do send(x,f) Plných = Plných + 1

86 vjj 87 Kritická sekce - příprava CRITICAL_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) ;

87 vjj 88 kritická sekce - synchronizace 2. a 3. vlákno DWORD WINAPI mythread (LPVOID parm) {... EnterCriticalSection (&mycritsect) ;... kritická sekce } LeaveCriticalSection (&mycritsect) ;... return (0) ;

88 vjj 89 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)

89 vjj 90.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 ) {... }

90 vjj 91.NET Monitor Monitor. Wait (buffer) ; Monitor. Pulse (buffer) ; Monitor. PulseAll (buffer) ;

Vývoj aplikačních programů pro systémy DAQ Možnosti vývoje aplikačního SW Jazyk C/C++ Pokročilé techniky programování Vícevláknové aplikace

Vývoj aplikačních programů pro systémy DAQ Možnosti vývoje aplikačního SW Jazyk C/C++ Pokročilé techniky programování Vícevláknové aplikace Vývoj aplikačních programů pro systémy DAQ Možnosti vývoje aplikačního SW Jazyk C/C++ Pokročilé techniky programování Vícevláknové aplikace A3B38PRT Přístrojová technika - přednáška 5 Jaké znalosti jsou

Více

Virtuální přístroje. Použitá literatura. Operační systémy, vývoj aplikačních programů, speciální techniky programování

Virtuální přístroje. Použitá literatura. Operační systémy, vývoj aplikačních programů, speciální techniky programování Virtuální přístroje Operační systémy, vývoj aplikačních programů, speciální techniky programování 1 Použitá literatura [1] Stallings, W.: Operating Systems. Internals and Design Principles. 4th Edition.

Více

Cvičení č. 6. Synchronizace ve Windows. 3 Body

Cvičení č. 6. Synchronizace ve Windows. 3 Body Cvičení č. 6 Synchronizace ve Windows 3 Body Datum: 3.4.2008 1 Obsah 1. Úvod...2 2. Pokyny pro odevzdání...2 3. Příprava...2 4. Úlohy...3 4.1 Doporučení pro implementaci...3 4.5 Přehled použitých funkcí

Více

Virtuální přístroje. Operační systémy, vývoj aplikačních programů, speciální techniky programování

Virtuální přístroje. Operační systémy, vývoj aplikačních programů, speciální techniky programování Virtuální přístroje Operační systémy, vývoj aplikačních programů, speciální techniky programování 1 Použitá literatura [1] Stallings, W.: Operating Systems. Internals and Design Principles. 4th Edition.

Více

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu. 6.1.1 Obědvající filosofové

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu. 6.1.1 Obědvající filosofové Operační systémy Tomáš Hudec 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu, 6.1.1 Obědvající filosofové, 6.1.2 Producenti a konzumenti, 6.1.3 Problém spících holičů, 6.1.4 Problém pisatelů

Více

Procesy a vlákna - synchronizace

Procesy a vlákna - synchronizace ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna - synchronizace České vysoké učení technické Fakulta elektrotechnická 2010 Studijní materiály a informace o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody

Více

Možnosti programování se sdílenými proměnnými. Týden 6 Programování se sdílenými proměnnými (Shared Variables, SV) Procesy a vlákna.

Možnosti programování se sdílenými proměnnými. Týden 6 Programování se sdílenými proměnnými (Shared Variables, SV) Procesy a vlákna. Možnosti programování se sdílenými proměnnými Týden 6 Programování se sdílenými proměnnými (Shared Variables, SV). Sekvenční jazyk + paralelizující kompilátor = zatím málo efektivní (implicitní paralelismus).

Více

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP.

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP. Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP. Dvě sémantiky vzhledem k hodnotám čítače: 1. čítač >= 0 Operace DOWN zkontroluje

Více

Operační systémy. Přednáška 5: Komunikace mezi procesy

Operační systémy. Přednáška 5: Komunikace mezi procesy Operační systémy Přednáška 5: Komunikace mezi procesy 1 Semafory Datový typ semafor obsahuje čítač a frontu čekajících procesů. Nabízí tři základní operace: Init(): Čítač se nastaví na zadané číslo (většinou

Více

Principy počítačů a operačních systémů

Principy počítačů a operačních systémů Principy počítačů a operačních systémů Operační systémy Synchronizace procesů, zablokování Zimní semestr 2011/2012 Přístup ke sdíleným datům Terminologie: souběžné vs. paralelní zpracování Paralelní provádění

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 16 Semafory Await synchronizace používající await běží na železe = využívají

Více

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

Principy operačních systémů. Lekce 7: Obrana proti deadlocku Principy operačních systémů Lekce 7: Obrana proti deadlocku Deadlock Deadlock = uváznutí, zablokování Vznik problému: proces drží určité prostředky, požaduje přidělení dalších prostředků, tyto nedostane

Více

Pavel Procházka. 3. prosince 2014

Pavel Procházka. 3. prosince 2014 Jazyk C# (seminář 11) Pavel Procházka KMI 3. prosince 2014 Motivace Dnes už se prakticky nedělají jednojádrové procesory pokud potřebujeme výkon, musíme zapojit všechna jádra Často potřebujeme dělat více

Více

Principy operačních systémů. Lekce 6: Synchronizace procesů

Principy operačních systémů. Lekce 6: Synchronizace procesů Principy operačních systémů Lekce 6: Synchronizace procesů Kritická sekce Při multitaskingu (multithreadingu) různé procesy často pracují nad společnou datovou strukturou (např. zápis a čtení do/z fronty)

Více

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce. Operační systémy Tomáš Hudec 7 Prostředky programovacích jazyků pro IPC Obsah: 7.1 Monitor, 7.1.1 Použití monitoru pro řízení přístupu do kritické sekce, 7.1.2 Použití monitoru pro synchronizaci, 7.1.3

Více

vjj 1. Priority. Dispatcher

vjj 1. Priority. Dispatcher 13.06.18 vjj 1 Priority Dispatcher 13.06.18 vjj 2 round-robin cyklická fronta připravených vláken 13.06.18 vjj 3 round-robin cyklická fronta připravených vláken čekající vlákna 13.06.18 vjj 4 Priority

Více

Přidělování zdrojů (prostředků)

Přidělování zdrojů (prostředků) Přidělování zdrojů (prostředků) Proces potřebuje zdroje (prostředky) hardware (I/O zařízení, paměť) software (data, programy) Klasifikace zdrojů (z hlediska multitaskingového režimu) Násobně použitelné

Více

PARA Filozofové, kuřáci a holič

PARA Filozofové, kuřáci a holič PARA Filozofové, kuřáci a holič Lenka Carr Motyčková 22. duben 2014 PDS Semafory 1 1. Večeřící filozofové (Dijkstra 1968) Problém: N (typicky 5) flozofů sedí u kulatého stolu, přemýšlí nebo jedí pomocí

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 17 Monitor Semafor vedle aktivní (čekací smyčka, busy-wait) i pasivní implementace

Více

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication) ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication) České vysoké učení technické Fakulta elektrotechnická 2010 Studijní materiály a informace

Více

Von Neumannovo schéma

Von Neumannovo schéma Multitasking Von Neumannovo schéma RAM 3 ADD SUB ZA input 20 28 010 100 registr dat 2 registr instrukcí op. code adr 7 LOAD 28 mikroprogramy 30 32 LOAD 28 ADD 20 registr adres 1 4 6 R W 30 čítač instrukcí

Více

Operační systémy. Přednáška 4: Komunikace mezi procesy

Operační systémy. Přednáška 4: Komunikace mezi procesy Operační systémy Přednáška 4: Komunikace mezi procesy 1 Časově závislé chyby Dva nebo několik procesů používá (čte/zapisuje) společné sdílené prostředky (např. sdílená paměť, sdílení proměnné, sdílené

Více

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end; Cvičení 9 - Monitory na rozdíl od semaforů je monitor jazyková konstrukce monitor = Pascalský blok podobný proceduře nebo fci uvnitř monitoru jsou definovány proměnné, procedury a fce proměnné monitoru

Více

PB153 Operační systémy a jejich rozhraní

PB153 Operační systémy a jejich rozhraní PB153 Operační systémy a jejich rozhraní Uváznutí 1 Problém uváznutí Existuje množina blokovaných procesů, každý proces vlastní nějaký prostředek (zdroj) a čeká na zdroj držený jiným procesem z této množiny

Více

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

ÚVOD DO OPERAČNÍCH SYSTÉMŮ ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna Plánování procesů (Process Scheduling) České vysoké učení technické Fakulta elektrotechnická 2010 Studijní materiály a informace o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody

Více

Synchronizace paralelních procesů

Synchronizace paralelních procesů SU Media: Student Středník ČWUT AVC SH Akropolis ikariéra Synchronizace paralelních procesů z ČWUT Obsah 1 Časově závislé chyby, kritické sekce, vzájemné vyloučení 2 Metody vzájemného vyloučení

Více

2010/2011 ZS. Operační systém. prostředky, zablokování

2010/2011 ZS. Operační systém. prostředky, zablokování Principy počítačů a operačních systémů Operační systém prostředky, zablokování Základní pojmy Prostředek cokoliv, k čemu je potřeba hlídat přístup např.hwzařízení, záznamy v DB Odnímatelné vs. neodnímatelné

Více

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21 Stručný obsah 1. Hardware, procesory a vlákna... 19 2. Programování s ohledemna výkon... 45 3. Identifikování příležitostí pro paralelizmus... 93 4. Synchronizace a sdílení dat... 123 5. Vlákna v rozhraní

Více

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, / 23

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, / 23 Operační systémy Správa procesoru Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, 2014 1 / 23 Procesy (1/2) neformálně: proces = běžící

Více

OS Deadlock a prevence

OS Deadlock a prevence OS Deadlock a prevence Tomáš Hudec Tomas.Hudec@upce.cz http://asuei01.upceucebny.cz/usr/hudec/vyuka/os/ Prostředky poskytované OS OS poskytuje procesům systémové prostředky (zdroje, resources) HW zařízení,

Více

C++ a vnitřní svět. David Bednárek Jakub Yaghob Filip Zavoral

C++ a vnitřní svět. David Bednárek Jakub Yaghob Filip Zavoral C++ a vnitřní svět David Bednárek Jakub Yaghob Filip Zavoral Vazby na OS Co není řešeno ISO normou Pokročilá práce se soubory Paměťově mapované soubory, asynchronní soubory Práce s adresáři Práce s procesy

Více

Synchronizace Mgr. Josef Horálek

Synchronizace Mgr. Josef Horálek Synchronizace Mgr. Josef Horálek Synchronizace procesu = Kooperující proces je proces, který může ovlivnit nebo být ovlivněn jiným procesem právě spuštěným v systému = Spolupracující procesy mohou sdílet:

Více

2010/2011 ZS. Operační systém. procesy a vlákna. interakce a synchronizace

2010/2011 ZS. Operační systém. procesy a vlákna. interakce a synchronizace Principy počítačů a operačních systémů Operační systém procesy a vlákna plánování interakce a synchronizace Základní pojmy proces vykonávaný program vlákno (thread) oddělení místa vykonávání instrukcí

Více

Přednáška 3. Synchronizace procesů/vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška 3. Synchronizace procesů/vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška 3 Synchronizace procesů/vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným

Více

Chapter 7: Process Synchronization

Chapter 7: Process Synchronization Chapter 7: Process Synchronization Background The Critical-Section Problem Synchronization Hardware Semaphores Classical Problems of Synchronization Critical Regions Monitors Synchronization in Solaris

Více

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch ZOS 9. cvičení, ukázky kódu Pavel Bžoch Obsah Komunikace mezi procesy Atomické operace TSL a CAS Zámky Semafory Semafory vypsání věty Monitor Bariéra pomocí monitoru Implementace semaforu pomocí monitoru

Více

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty Vlákna a přístup ke sdílené paměti B4B36PDV Paralelní a distribuované výpočty Minulé cvičení: Paralelizace nám může pomoct... 1 Minulé cvičení: Paralelizace nám může pomoct... B4B36PDV: Ale ne všechny

Více

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011 Operační systémy Správa procesoru Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 11. březen, 2011 Petr Krajča (UP) KMI/XOSY: Přednáška III. 11. březen, 2011 1 / 18 Procesy (1/2) neformálně:

Více

Ukázka zkouškové písemka OSY

Ukázka zkouškové písemka OSY Ukázka zkouškové písemka OSY Jméno a příjmení:.......................................... Odpovězte na otázky zaškrtnutím příslušného políčka. Otázky označené znakem mohou mít více než jednu správnou odpověď.

Více

Paralelní programování

Paralelní programování Paralelní programování cvičení Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 13 Cvičení 1 Jazyk C POSIX Threads (UNIX) hlavičkový soubor pthread.h, knihovna

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 14 Atomické akce dále nedělitelná = neproložitelná jiným procesem izolovaná =

Více

Služba ve Windows. Služba (service) je program

Služba ve Windows. Služba (service) je program 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 www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav pro vzdělávání, školské

Více

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů Distribuovaná synchronizace Využití kritické sekce při vzájemném vyloučení v distribuovaném systému Paralelní a distribuované systémy 11. Přednáška Vzájemné vyloučení Logicky distribuovaný systém s vlákny

Více

04. Mutexy, monitory. ZOS 2006, L. Pešička

04. Mutexy, monitory. ZOS 2006, L. Pešička 04. Mutexy, monitory ZOS 2006, L. Pešička Administrativa změna termínů zápočtových testů 7.11.2006 (út), EP130, 18:30 12.12.2006 (út), EP130, 18:30 Semafory Ošetření kritické sekce ukázka více nezávislých

Více

C++ 0x aka C++11. Základním kamenem je třída std::thread

C++ 0x aka C++11. Základním kamenem je třída std::thread C++ 0x aka C++11 Jako jiné jazyky, např. Free/Object Pascal, se C++ ve standardu ++0x dočkal podpory vláken Výhodou je, že standardní knihovna je platformě nezávislá na úrovni zdrojového kódu Základním

Více

Operační systémy - modelování a algoritmy paralelních výpočtů

Operační systémy - modelování a algoritmy paralelních výpočtů Operační systémy - modelování a algoritmy paralelních výpočtů texty pro distanční studium Doc. Ing. Cyril Klimeš, CSc. Ostravská univerzita v Ostravě, Přírodovědecká fakulta Katedra informatiky a počítačů

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 11 Literatura Ben-Ari M.: Principles of concurrent and distributed programming.

Více

Paralelní a asynchronní programování. Zdeněk Jurka

Paralelní a asynchronní programování. Zdeněk Jurka Paralelní a asynchronní programování Zdeněk Jurka Obsah přednášky Paralelní vs. Asynchronní programování Thread ThreadPool TPL Async await Synchronizace PLINQ Paralelní vs. Asynchronní programování Paralelní

Více

Přidělování CPU Mgr. Josef Horálek

Přidělování CPU Mgr. Josef Horálek Přidělování CPU Mgr. Josef Horálek Přidělování CPU = Přidělování CPU je základ multiprogramového OS = pomocí přidělování CPU různým procesům OS zvyšuje výkon výpočetního systému; = Základní myšlenka multiprogramování

Více

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2

Více

Synchronizace procesů

Synchronizace procesů Synchronizace procesů Tomáš Vojnar vojnar@fit.vutbr.cz Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, 612 66 BRNO 11. dubna 2011 Operační systémy Synchronizace procesů Současný

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 11 Literatura Ben-Ari M.: Principles of concurrent and distributed programming.

Více

Téma 36. Petr Husa

Téma 36. Petr Husa Přesné zadání: Téma 36 Petr Husa husap1@fel.cvut.cz Sdílení prostředků, časově závislé chyby, kritické sekce procesu. Synchronizační nástroje, uváznutí - původ, detekce, prevence. Komponenty JOS pro podporu

Více

Management procesu I Mgr. Josef Horálek

Management procesu I Mgr. Josef Horálek Management procesu I Mgr. Josef Horálek Procesy = Starší počítače umožňovaly spouštět pouze jeden program. Tento program plně využíval OS i všechny systémové zdroje. Současné počítače umožňují běh více

Více

Procesy a vlákna (Processes and Threads)

Procesy a vlákna (Processes and Threads) ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna (Processes and Threads) Správa procesů a vláken České vysoké učení technické Fakulta elektrotechnická 2012 Použitá literatura [1] Stallings, W.: Operating

Více

Asynchronní programování v.net

Asynchronní programování v.net Asynchronní programování v.net Tomáš Jecha Microsoft MVP Mail: tomas@jecha.net Twitter: @jechtom http://www.jecha.net http://www.vbnet.cz Agenda Procesy, vlákna, synchronizační primitiva, ThreadPool Task

Více

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ Ing. Ivo Špička, Ph.D. Ostrava 2013 Ing. Ivo Špička, Ph.D. Vysoká škola báňská Technická univerzita Ostrava

Více

Cvičení č. 5. Programování ve Windows program stopky 3 Body

Cvičení č. 5. Programování ve Windows program stopky 3 Body Cvičení č. 5 Programování ve Windows program stopky 3 Body Datum: 31.3.2008 1 Obsah 1. Úvod...2 2. Pokyny pro odevzdání...2 3. Příprava...2 4. Úlohy...3 4.1. Požadavky na program SleepTest...3 4.2. Požadavky

Více

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Středoškolská technika 2017 Setkání a prezentace prací středoškolských studentů na ČVUT PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Vojtěch Pchálek Střední škola technická Kouřílkova 8, Přerov ANOTACE Bratr, který

Více

Synchronizace procesů

Synchronizace procesů Synchronizace procesů Tomáš Vojnar vojnar@fit.vutbr.cz Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, 612 66 BRNO 3. dubna 2018 Operační systémy Synchronizace procesů Současný

Více

Chapter 6: Process Syncronization

Chapter 6: Process Syncronization Chapter 6: Process Syncronization Chapter 6: Process Syncronization Background The Critical-Section Problem Peterson s Solution Synchronization Hardware Mutex Locks Semaphores Classic Problems of Synchronization

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické

Více

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5 Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou

Více

03. Synchronizace procesů. ZOS 2006, L. Pešička

03. Synchronizace procesů. ZOS 2006, L. Pešička 03. Synchronizace procesů ZOS 2006, L. Pešička Administrativa 1. zápočtový test 7.11.2006 (út), EP130, 18:30 praktická cvičení před testem (slide upraven na aktuální termín) Plánování procesů Krátkodobé

Více

Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz. Paralelní programování

Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz. Paralelní programování Tomáš Foltýnek foltynek@pef.mendelu.cz Paralelní programování strana 2 Opakování Co je to síť? Co je to tok? Co je to velikost toku? Co je to řez? Co je to velikost řezu? Jaký je vztah mezi velikostí toku

Více

PRINCIPY OPERAČNÍCH SYSTÉMŮ

PRINCIPY OPERAČNÍCH SYSTÉMŮ Metodický list č. 1 Název tématického celku: Přehled operačních systémů a jejich funkcí Základním cílem tohoto tematického celku je seznámení se s předmětem (vědním oborem) Operační systémy (OS) a se základními

Více

08. Deadlock Přidělování paměti. ZOS 2006, L. Pešička

08. Deadlock Přidělování paměti. ZOS 2006, L. Pešička 08. Deadlock Přidělování paměti ZOS 2006, L. Pešička Obsah Deadlock Jak předcházet, detekovat, reagovat Metody přidělování paměti Jak se vypořádat s uvíznutím 1. Problém uvíznutí je zcela ignorován 2.

Více

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1 Ovladače Windows A4M38KRP Str. 1 Struktura OS Windows Str. 2 Typy ovladačů Str. 3 Typy ovladačů Virtual Device Driver User mode ovladač Virtualizace HW pro DOS aplikace Legacy Driver Pro zařízení nepodporující

Více

Jazykové konstrukce pro paralelní výpočty

Jazykové konstrukce pro paralelní výpočty Paralelismus se vyskytuje na: Jazykové konstrukce pro paralelní výpočty 1. Úrovni strojových instrukcí 2. Úrovni příkazů programovacího jazyka 3. Úrovni podprogramů 4. Úrovni programů Vývoj multiprocesorových

Více

Poslední aktualizace: 21. května 2015

Poslední aktualizace: 21. května 2015 Operační systémy seznam otázek ke zkoušce Poslední aktualizace: 21. května 2015 Průběh zkoušky: Zkouška je písemná, obvykle cca 6 7 otázek vybraných z níže uvedených. Po vyhodnocení budou výsledky na webu

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

Vzájemné vyloučení procesů

Vzájemné vyloučení procesů PDV 10 2017/2018 Vzájemné vyloučení procesů Michal Jakob michal.jakob@fel.cvut.cz Centrum umělé inteligence, katedra počítačů, FEL ČVUT Příklad Bankovní server v cloudu. Dva zákaznici současně vloží 10

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Paralelní a distribuované výpočty (B4B36PDV)

Paralelní a distribuované výpočty (B4B36PDV) Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech

Více

Přednáška 4. Klasické synchronizační úlohy. Implementace procesů, vláken.

Přednáška 4. Klasické synchronizační úlohy. Implementace procesů, vláken. Přednáška 4 Klasické synchronizační úlohy. Implementace procesů, vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika

Více

Vlákna. První jednoduchý program s vlákny:

Vlákna. První jednoduchý program s vlákny: Vlákna Současné operační systémy jsou víceúlohové. Z uživatelského pohledu se zdá, že běží několik úloh zároveň. Je tedy možné napsat i jeden program tak, aby v něm běželo vedle sebe několik relativně

Více

07. Plánování procesů Deadlock. ZOS 2006, L. Pešička

07. Plánování procesů Deadlock. ZOS 2006, L. Pešička 07. Plánování procesů Deadlock ZOS 2006, L. Pešička Pozvánka na přednášku Xen na ZČU architektura migrace virtuálního stroje reálná konfigurace na ZČU praktická ukázka konfigurace a instalace virtuálního

Více

ZOS. Verze 2010-srpen-31, v3 L. Pešička

ZOS. Verze 2010-srpen-31, v3 L. Pešička ZOS Verze 2010-srpen-31, v3 L. Pešička Základní znalosti vhodné k opakování Rozhodně prosím neberte jako jediný materiál na učení ke zkouškám / státnicím obsahuje jen vybrané části Jde zde o zopakování,

Více

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti MS WINDOWS II Jádro Správa objektů Správa procesů Zabezpečení Správa paměti JÁDRO I ntoskrnl.exe napsán v C (příp. assembler) základní mechanismy poskytované executivám trap dispečink synchronizace přístupů

Více

30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ)

30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ) 30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ) Procesy a vlákna Proces Každá aplikace je vlastně běžící proces. Pokud je aplikace spuštěna vícekrát, vytvoří

Více

Windows a real-time. Windows Embedded

Windows a real-time. Windows Embedded Windows a real-time Windows Embedded Windows pro Embedded zařízení Současnost (2008): Windows Embedded WINDOWS EMBEDDED Windows Embedded CE Windows XP Embedded Windows Embedded for Point of Service Minulé

Více

Zablokování (Deadlock) Mgr. Josef Horálek

Zablokování (Deadlock) Mgr. Josef Horálek Zablokování (Deadlock) Mgr. Josef Horálek Deadlock = V multiprogramovém prostředí si mohou různé prostředky konkurovat v získaní konečného počtu zdrojů = může se tedy stát, že čekající proces svůj stav

Více

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Jazyk VHDL konstanty, signály a proměnné Jazyk VHDL paralelní a sekvenční doména Kurz A0B38FPGA

Více

IRAE 07/08 Přednáška č. 7. Začátek (head)

IRAE 07/08 Přednáška č. 7. Začátek (head) Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků

Více

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština) Instalace OS Linux Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav pro vzdělávání,

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor květen 2011 Jan Outrata (KI UP) Paralelní programování únor květen 2011 1 / 15 Simulátor konkurence abstrakce = libovolné proložení atom. akcí sekvenčních

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Druhá generace palivoměru LUN 5275 pro letoun EV-55

Druhá generace palivoměru LUN 5275 pro letoun EV-55 Druhá generace palivoměru LUN 5275 pro letoun EV-55 The second generation of the fuel gauge measuring system LUN 5275 for the EV-55 airplane Ing. Martin Moštěk, Ph.D. MESIT přístroje spol. s r. o., email:

Více

Řídicí struktury. alg3 1

Řídicí struktury. alg3 1 Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení

Více

Vlákna. První jednoduchý program s vlákny:

Vlákna. První jednoduchý program s vlákny: Vlákna Současné operační systémy jsou víceúlohové. Z uživatelského pohledu se zdá, že běží několik úloh zároveň. Jednotlivé úlohy se nazývají procesy nebo také vlákna (tento termín používá i Java). Operační

Více

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více

Petr Štěpán, K13133 KN-E-129 Téma 5. Synchronizace a deadlock

Petr Štěpán, K13133 KN-E-129 Téma 5. Synchronizace a deadlock Operační systémy a sítě Petr Štěpán, K13133 KN-E-129 stepan@fel.cvut.cz Téma 5. Synchronizace a deadlock A4B33OSS 1 Problém synchronizace vláken Souběžný přístup ke sdíleným datům může způsobit jejich

Více

Grafické znázornění vláken a klasické problémy synchronizace

Grafické znázornění vláken a klasické problémy synchronizace Grafické znázornění vláken a klasické problémy synchronizace Naďa Jašíková Vít Koumar Jindřich Samec 1 Grafické znázornění vláken a jejich komunikace v UML Unified Modelling Language (UML) se používá k

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first

Více

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

Více

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol. Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start

Více

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy) Architektura a koncepce OS OS a HW (archos_hw) Aby fungoval OS s preemptivním multitaskingem, musí HW obsahovat: 1. (+2) přerušovací systém (interrupt system) 2. (+2) časovač Při používání DMA: 1. (+1)

Více

Paralelní programování

Paralelní programování Paralelní programování přednáška 5 Michal Krupka 15. března 2011 Michal Krupka (KI UP) Paralelní programování 15. března 2011 1 / 13 Ještě ke kritickým sekcím Použití v praxi obvykle pomocí zámků (locks)

Více