Práce se věnuje vizualizaci algoritmů a využívání nástrojů IPC v operačních systémech. Vizualizace byly vypracovány v jazyce JavaScript a zobrazují stěžejní situace usnadňující pochopení daného tématu. Vizualizace jsou buď statické, dynamické nebo interaktivní a zahrnují například plánovací algoritmy, algoritmy výměny stránek, algoritmy alokace paměti, nástroje IPC a další.
Anotace v angličtině
The thesis is devoted to visualization of algorithms and usage of the IPC tools in operating systems. The visualizations were developed in the JavaScript language and show important situations that ease understanding given topics. Visualizations are either static, dynamic, or interactive and include scheduling algorithms, page replacement algorithms, memory allocation algorithms, the IPC tools and others.
Klíčová slova
operační systémy, algoritmus, IPC, vizualizace, animace, JavaScript
Práce se věnuje vizualizaci algoritmů a využívání nástrojů IPC v operačních systémech. Vizualizace byly vypracovány v jazyce JavaScript a zobrazují stěžejní situace usnadňující pochopení daného tématu. Vizualizace jsou buď statické, dynamické nebo interaktivní a zahrnují například plánovací algoritmy, algoritmy výměny stránek, algoritmy alokace paměti, nástroje IPC a další.
Anotace v angličtině
The thesis is devoted to visualization of algorithms and usage of the IPC tools in operating systems. The visualizations were developed in the JavaScript language and show important situations that ease understanding given topics. Visualizations are either static, dynamic, or interactive and include scheduling algorithms, page replacement algorithms, memory allocation algorithms, the IPC tools and others.
Klíčová slova
operační systémy, algoritmus, IPC, vizualizace, animace, JavaScript
Budou popsány problémy a algoritmy pro jejich řešení vyučované na předmětu Operační systémy (viz níže).
Vždy bude uvedeno několik ukázkových příkladů vhodně zvolených tak, aby demonstrovaly co nejvíce možných typů vstupů a výstupů.
Algoritmy budou vizualizovány či animovány pomocí programu nezávislého na platformně (minimálně pro Windows a Linux, nejlépe i Android). Preferováno je řešení pomocí webových technologií (HTML5 canvas, JavaScript, CSS, Node.js) s dodržením příslušných norem W3C. Pro řešení lze využít existujících knihoven pro grafiku a animaci, např. Paper.js, jQuery (přehled vybraných dostupných knihoven je ve zdroji {\it Datavisualization.ch Selected Tools}).
Program umožní též parametrizovat vstupy (s vhodně nastaveným omezením). U algoritmů řešících nějaký problém (např. obědvající filosofové) budou implementovány i neřešené či nedořešené varianty demonstrující selhání.
Výčet problémů a algoritmů:
-- ukládání parametrů a lokálních proměnných na stack (simulace potřeby samostatného stacku pro každé vlákno),
-- plánování a plánovací algoritmy (context switch, FIFO, round-robin, prioritní, EDF),
-- řízení přístupu do KS (SW algoritmy včetně nefunkčních, HW algoritmy, problém CPU s pamětí cache, semafor, monitor),
-- řešení synchronizace (semafor, bariéra, podmínková proměnná, monitor),
-- kombinace KS a synchronizace (obědvající filosofové, producent/konzument),
-- alokace paměti (pevné dělení, dynamické dělení: best-fit, first-fit, next-fit, worst-fit, setřesení),
-- stránkování (alokace stránek, algoritmy výměny: LRU, FIFO + second chance, clock policy, working set clock policy, page buffering),
-- alokace bloků souboru (souvislá, řetězená, indexová),
-- zápis se zachováním konzistence souborového systému (žurnál, copy-on-write),
-- bezpečnost (buffer overflow).
Zásady pro vypracování
Budou popsány problémy a algoritmy pro jejich řešení vyučované na předmětu Operační systémy (viz níže).
Vždy bude uvedeno několik ukázkových příkladů vhodně zvolených tak, aby demonstrovaly co nejvíce možných typů vstupů a výstupů.
Algoritmy budou vizualizovány či animovány pomocí programu nezávislého na platformně (minimálně pro Windows a Linux, nejlépe i Android). Preferováno je řešení pomocí webových technologií (HTML5 canvas, JavaScript, CSS, Node.js) s dodržením příslušných norem W3C. Pro řešení lze využít existujících knihoven pro grafiku a animaci, např. Paper.js, jQuery (přehled vybraných dostupných knihoven je ve zdroji {\it Datavisualization.ch Selected Tools}).
Program umožní též parametrizovat vstupy (s vhodně nastaveným omezením). U algoritmů řešících nějaký problém (např. obědvající filosofové) budou implementovány i neřešené či nedořešené varianty demonstrující selhání.
Výčet problémů a algoritmů:
-- ukládání parametrů a lokálních proměnných na stack (simulace potřeby samostatného stacku pro každé vlákno),
-- plánování a plánovací algoritmy (context switch, FIFO, round-robin, prioritní, EDF),
-- řízení přístupu do KS (SW algoritmy včetně nefunkčních, HW algoritmy, problém CPU s pamětí cache, semafor, monitor),
-- řešení synchronizace (semafor, bariéra, podmínková proměnná, monitor),
-- kombinace KS a synchronizace (obědvající filosofové, producent/konzument),
-- alokace paměti (pevné dělení, dynamické dělení: best-fit, first-fit, next-fit, worst-fit, setřesení),
-- stránkování (alokace stránek, algoritmy výměny: LRU, FIFO + second chance, clock policy, working set clock policy, page buffering),
-- alokace bloků souboru (souvislá, řetězená, indexová),
-- zápis se zachováním konzistence souborového systému (žurnál, copy-on-write),
-- bezpečnost (buffer overflow).
Seznam doporučené literatury
HUDEC, Tomáš: {\it Operační systémy} [online]. 2016 [cit. 2016-10-21]. Materiály přednášek, dostupné pouze z vnitřní sítě Univerzity Pardubice. URL: http://asuei01.upceucebny.cz/usr/hudec/vyuka/os/
CASTRO, Elizabeth -- HYSLOP, Bruce: {\it HTML5 a CSS3: Názorný průvodce tvorbou WWW stránek}. 1. vyd. Brno: Computer Press, 2012. ISBN 978-80-251-3733-8.
{\it Node.js} [online]. Node.js Foundation, c 2016 [cit. 2016-10-21]. URL: https://nodejs.org/
Canvas API. {\it Mozilla Developer Network} [online]. 2016-10-16, c 2005--2016 [cit. 2016-06-07]. URL: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API
{\it HTML5 Canvas Tutorials} [online]. 2016 [cit. 2016-10-21]. URL: http://www.html5canvastutorials.com/
Eck, David J.: {\it xSortLab} [online]. Department of Mathematics and Computer Science at Hobart and William Smith Colleges, 2016-02-13 [cit. 2016-10-21]. URL: http://math.hws.edu/eck/js/sorting/xSortLab.html
{\it Datavisualization.ch Selected Tools} [online]. 2014-04-22 [cit. 2016-10-21]. URL: http://selection.datavisualization.ch/
LEHNI, Juerg -- PUCKEY, Jonathan: {\it Paper.js} [online]. 2016-07-09, c 2011 [cit. 2016-10-21]. URL: http://paperjs.org/
{\it jQuery} [online]. The jQuery Foundation, c 2016 [cit. 2016-10-21]. URL: https://jquery.com/
FLANAGAN, David. {\it JavaScript: The Definitive Guide}. 4th ed. Sebastopol, CA: O'Reilly, 2002. ISBN 0-596-00048-0.
FLANAGAN, David. {\it JavaScript: Kompletní průvodce}. 2. aktualiz. vyd. Praha: Computer Press, 2002. ISBN 80-7226-626-8.
ZAKAS, Nicholas C. {\it JavaScript pro webové vývojáře: Programujeme profesionálně}. Brno: Computer Press, 2009. ISBN 978-80-251-2509-0.
A re-introduction to JavaScript (JS tutorial). {\it Mozilla Developer Network} [online]. c 2005--2016 [cit. 2016-06-07]. URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
JavaScript reference. {\it Mozilla Developer Network} [online]. c 2005--2016 [cit. 2016-06-07]. URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
STONES, Richard -- MATTHEW, Neil: {\it Linux: Začínáme programovat}. Praha: Computer Press, 2000. ISBN 80-7226-307-2.
STONES, Richard -- MATTHEW, Neil: {\it Linux: Programujeme profesionálně}. Praha: Computer Press, 2001. ISBN 80-7226-532-6.
Seznam doporučené literatury
HUDEC, Tomáš: {\it Operační systémy} [online]. 2016 [cit. 2016-10-21]. Materiály přednášek, dostupné pouze z vnitřní sítě Univerzity Pardubice. URL: http://asuei01.upceucebny.cz/usr/hudec/vyuka/os/
CASTRO, Elizabeth -- HYSLOP, Bruce: {\it HTML5 a CSS3: Názorný průvodce tvorbou WWW stránek}. 1. vyd. Brno: Computer Press, 2012. ISBN 978-80-251-3733-8.
{\it Node.js} [online]. Node.js Foundation, c 2016 [cit. 2016-10-21]. URL: https://nodejs.org/
Canvas API. {\it Mozilla Developer Network} [online]. 2016-10-16, c 2005--2016 [cit. 2016-06-07]. URL: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API
{\it HTML5 Canvas Tutorials} [online]. 2016 [cit. 2016-10-21]. URL: http://www.html5canvastutorials.com/
Eck, David J.: {\it xSortLab} [online]. Department of Mathematics and Computer Science at Hobart and William Smith Colleges, 2016-02-13 [cit. 2016-10-21]. URL: http://math.hws.edu/eck/js/sorting/xSortLab.html
{\it Datavisualization.ch Selected Tools} [online]. 2014-04-22 [cit. 2016-10-21]. URL: http://selection.datavisualization.ch/
LEHNI, Juerg -- PUCKEY, Jonathan: {\it Paper.js} [online]. 2016-07-09, c 2011 [cit. 2016-10-21]. URL: http://paperjs.org/
{\it jQuery} [online]. The jQuery Foundation, c 2016 [cit. 2016-10-21]. URL: https://jquery.com/
FLANAGAN, David. {\it JavaScript: The Definitive Guide}. 4th ed. Sebastopol, CA: O'Reilly, 2002. ISBN 0-596-00048-0.
FLANAGAN, David. {\it JavaScript: Kompletní průvodce}. 2. aktualiz. vyd. Praha: Computer Press, 2002. ISBN 80-7226-626-8.
ZAKAS, Nicholas C. {\it JavaScript pro webové vývojáře: Programujeme profesionálně}. Brno: Computer Press, 2009. ISBN 978-80-251-2509-0.
A re-introduction to JavaScript (JS tutorial). {\it Mozilla Developer Network} [online]. c 2005--2016 [cit. 2016-06-07]. URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
JavaScript reference. {\it Mozilla Developer Network} [online]. c 2005--2016 [cit. 2016-06-07]. URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
STONES, Richard -- MATTHEW, Neil: {\it Linux: Začínáme programovat}. Praha: Computer Press, 2000. ISBN 80-7226-307-2.
STONES, Richard -- MATTHEW, Neil: {\it Linux: Programujeme profesionálně}. Praha: Computer Press, 2001. ISBN 80-7226-532-6.
Přílohy volně vložené
CD ROM
Přílohy vázané v práci
ilustrace
Převzato z knihovny
Ne
Plný text práce
Přílohy
Posudek(y) oponenta
Hodnocení vedoucího
Záznam průběhu obhajoby
V práci je vytvořena aplikace pro vizualizaci algoritmů, které se vyučují v předmětu Operačních systémů. Vizualizace usnadňuje pochopení, jakým způsobem konkrétní algoritmy pracují. Implementována byla vizualizace 22 různých algoritmů, setříděných do 7 skupin. Implementace je realizovaná v programovacím jazyce Javascript, s využitím souvisejících technologií LESS, paper.js a HTML5. Aplikace v podobě HTML souboru s přilinkovaným javascript kódem je plně funkční a všechny algoritmy fungují bezchybně. Použité technologie a knihovny/frameworky třetích stran jsou zvoleny vhodně, s ohledem na cíle a požadované chování aplikace. Díky nim je také aplikace responsibilní, a má potenciál být spustitelná i na více platformách než jen na běžném PC, jako jsou tablety nebo mobilní telefony.
Práce byla zkontrolována v systému IS STAG a byla vyhodnocena jako původní. Nejedná se o plagiát.