Operační systémy 2: Zápočtové úkoly

Podobné dokumenty
Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Šifrování/Dešifrování s použitím hesla

VISUAL BASIC. Práce se soubory

Pavel Procházka. 3. prosince 2014

Tabulkový procesor. Základní rysy

Zadání soutěžních úloh

C2110 Operační systém UNIX a základy programování

Práce se soubory. Základy programování 2 Tomáš Kühr

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ

VISUAL BASIC. Přehled témat

Disková pole (RAID) 1

Střední odborná škola a Střední odborné učiliště, Hořovice

Stručný návod k programu Octave

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Transformace digitalizovaného obrazu

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

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

Základy programování (IZP)

Komprimace/Dekomprimace

SYSTÉM ZPRACOVÁNÍ DAT FOTOVOLTAICKÉHO SYSTÉMU A METEOSTANICE

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Management procesu I Mgr. Josef Horálek

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

Procesy a vlákna (Processes and Threads)

Textové, datumové a časové funkce

Paralelní programování

Uživatelská příručka pro respondenty

2. úkol MI-PAA. Jan Jůna (junajan)

ˇ razen ı rychlejˇ s ı neˇ z kvadratick e Karel Hor ak, Petr Ryˇsav y 20. dubna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Reporting. Ukazatele je možno definovat nad libovolnou tabulkou Helios Orange, která je zapsána v nadstavbě firmy SAPERTA v souboru tabulek:

Principy operačních systémů. Lekce 7: Souborový systém

Algoritmus. Algoritmus je posloupnost kroků, které jsou potřeba k vyřešení problému.

ZÁPOČTOVÁ PRÁCE z UIR

Co vás čeká. Osvojení si základy analytického myšlení při psaní algoritmů pomocí jazyka Python.

Systém adresace paměti

Disková pole (RAID) 1

8.3 Popis dialogových oken

programátorský manuál

Západočeská univerzita v Plzni. Správce virtuálních strojů

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

12 Metody snižování barevného prostoru

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Autorizovaný software DRUM LK 3D SOFTWARE PRO VYHODNOCENÍ MĚŘENÍ ODCHYLEK HÁZIVOSTI BUBNOVÝCH ROTAČNÍCH SOUČÁSTÍ

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student:

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Střední odborná škola a Střední odborné učiliště, Hořovice

Projektč.3dopředmětuIZP. Maticové operace

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Cílem seminární práce je aplikace teoretických znalostí z přednášky na konkrétní úlohy. Podstatu algoritmu totiž

Datové struktury 2: Rozptylovací tabulky

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Operační systémy. Cvičení 1: Seznámení s prostředím

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Semestrální práce 2 znakový strom

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Projekt: Přístupový terminál

Dotazy tvorba nových polí (vypočítané pole)

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

1 Uživatelská dokumentace

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

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

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)

Činnost počítače po zapnutí

POČÍTAČE A PROGRAMOVÁNÍ

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

PA152. Implementace databázových systémů

MS EXCEL 2010 ÚLOHY. Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b.

Konvertor diakritiky 3. Instalace

PB002 Základy informačních technologií

Správa bodů. Všechny uživatelské body se v Locusu spravují ve Správci bodů. Do něj se dostanete několika způsoby: z hlavního menu: z panelu funkcí:

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Pivovar Chmelokvas. KIV/PT Semestrální práce

Správce virtuálních strojů

Z znam workshopu k projektu QJ Program workshopu: 4. Diskuse. s metodice. H

1. Databázové systémy (MP leden 2010)

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Pavel Klavík. CompEvid. Programátorská reference.

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi).

Základy programování (IZP)

Struktury a dynamická paměť

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Programy na PODMÍNĚNÝ příkaz IF a CASE

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

Zápis programu v jazyce C#

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

log in AHD_DVR Průvodce rychlým startem První část: základní operace

které lze s touto proměnnou provádět, k přechodnému ukládání dat, ukládání dat, ukládání rozličných dat.

Textové popisky. Typ dat

Princip funkce počítače

Transkript:

Operační systémy 2: Zápočtové úkoly 18. listopad 2010 1 Paralelní Mergesort Implementujte paralelní verzi algoritmu Merge sort, který bude řadit celá čísla uložená v textovém souboru. Program bude mít tři argumenty (v tomto pořadí): vstupní soubor, výstupní soubor a počet vláken použitých k výpočtu. Vstupní i výstupní soubor jsou běžné textové soubory, kde na každém řádku je jedno číslo. Při implementaci použijte vlákna a omezte použití synchronizačních primitiv na nutné minimum. K načtení a uložení dat z/do souboru použijte mapovaní souboru do paměti. Ověřte na víceprocesorovém/vícejádrovém počítači, že algoritmus škáluje při použití více vláken běží rychleji. Příklad použití./pmergesort input-1.txt output-1.txt 5 Hodnocení Za tuto úlohu je možné získat 9 bodů. 2 Map-Reduce Framework 2.1 Úvod do problematiky Při zpracování opravdu rozsáhlých dat (tj. dat se kterými běžně pracuje Google, Yahoo! či Facebook) se používá reprezentace hodnot v podobě dvojice klíč-hodnota (dále jen k, v ) a data jsou zpracovávána ve dvou fázích map a reduce odtud název Map- Reduce Framework. 1 V prvním kroce jsou vstupní data rozdělena na menší bloky a případně převedena do tvaru k, v. V následujícím kroce se provede operace map a na jednotlivá načtená 1 http://labs.google.com/papers/mapreduce.html 1

data se aplikuje funkce f, která pro každou dvojici k, v vrací multimnožinu dvojic k, v, i.e., f ( k, v ) = { k 1, v 1,..., k n, v n } V dalším kroce se provede operace reduce a všechny hodnoty (dvojice k, v ) jsou roztříděny podle svého klče k a na dvojice mající stejný klíč k je aplikována agregační funkce g vracející hodnotu ve tvaru k, v, i.e,. g({ k, v 1, k, v 2,..., k, v n }) = k, v Příklad Uvažujme, že chceme spočítat četnost znaků ve slovech alice, barbara, carol. Nejdříve text rozdělíme na jednotlivá slova a na ně pak aplikujeme funkci f, která pro každý znak ve slově vrací dvojici ve tvaru znak, 1. Tedy: f (alice) = { a, 1, l, 1, i, 1, c, 1, e, 1 }, f (barbara) = { b, 1, a, 1, r, 1, b, 1, a, 1, r, 1, a, 1 }, f (carol) = { c, 1, a, 1, r, 1, o, 1, l, 1 }. V následujícím kroce aplikujeme na páry se stejným klíčem funkci pro redukci, která sečte jednotlivé hodnoty v. Tedy: g({ a, 1, a, 1, a, 1, a, 1, a, 1 }) = a, 5, g({ b, 1, b, 1 }) = b, 2, g({ c, 1, c, 1 }) = c, 2, g({ e, 1 }) = e, 1, g({ l, 1, l, 1 }) = l, 2, g({ i, 1 }) = i, 1, g({ o, 1 }) = o, 1, g({ r, 1, r, 1, r, 1 }) = r, 3. Z povahy algoritmu a předpokladu, že funkce f a g nemají vedlejší efekt, lze vidět, že výpočet lze snadno paralelizovat a distribuovat. V praxi pak pro výpočet stačí dodat frameworku funkce f a g a ten se o výpočet postará sám. V praxi se pak taky ukázalo, že je dobré rozdělit fázi reduce na dva kroky. V prvním kroce se provede operace combine, která nedělá nic jiného než, že aplikuje agregační funkci na dvojice vytvořené jednou aplikací funkce map. Na hodnoty vzešlé z operace combine je následně použita funkce reduce. 2.2 Zadání úkolu S využitím procesů a rour implementujte model Map-reduce frameworku. Program bude mít tři parametry: program reprezentující funkci map, program reprezentující funkci reduce a počet instancí procesu map, které se mají vytvořit. 2

Reduce Příklad použití cat foo map-reduce./map.py./reduce.py 5 Program vytvoří daný počet procesů map a ke každému procesu map vytvoří proces reduce. Program pak bude číst textový soubor řádek po řádku ze standardního vstupu a předávat jednotlivé řádky střídavě jednotlivým procesům map. Ten data zpracuje a předá je svému procesu reduce. Následně budou data uložena do souborů. Potom, co jsou všechny vstupní data zpracována, jsou data v souborech předána programu reduce a výsledek zapsán na standardní výstup procesu. Soubory na disku jsou následně odstraněny. Tok dat (nikoliv závislost procesů) zobrazuje následující schéma. Map #1 Reduce #1 (combine) File #1 stdin map reduce Map/Reduce Framework Map #2 Reduce #2 (combine) File #2 stdout Map #3 Reduce #n (combine) File #n Programy map a reduce mohou být libovolné programy, které načítají data ze standardního vstupu a vypisují výsledek na standardní výstup. Při testování můžete využít přiložené programy, které demonstrují počítání slov. Jejich funkci si můžete ověřit následovně: cat foo.txt./map./reduce Hodnocení Za tuto úlohu je možné získat 11 bodů. 3 Paralelní REPL S použitím vláken implementujte program, který bude simulovat známou smyčku read-eval-print, kde fáze eval a print budou trvat nezanedbatelnou dobu. Program bude mít tři vlákna: první vlákno bude ze standardního vstupu načítat řetezce; poté, co se načte jeden řetězec, je předán druhému vláknu přes sdílenou globální proměnnou druhé vlákno načte hodnotu ze sdílene proměnné, převede text na velká písmena, počká jednu sekundu a předá výsledek přes další globální proměnnou třetímu vláknu 3

třetí vlákno načte hodnotu vypočítanou ve druhém vláknu; počká dvě sekundy a výpíše ji na standardní výstup Program bude ukončen potom, co bude ukončen vstup. Všechna předaná data musí být zpracována a žádná hodnota nesmí být zahozena. Pokud vlákno předává hodnotu druhému, které dosud nezpracovalo svůj vstup, bude zablokováno pomocí condition variable (Linux) nebo SuspendThread (Windows). Místa, kde bude docházet k čekání, umístěte tak, aby program běžel, co nejefektivněji, tzn. pokud probíhá výstup může současně probíhat i výpočet. Při přístupu ke sdíleným proměnným si dejte pozor, aby k nim nepřistupovala dvě vlákna současně nežádoucím způsobem. Hodnocení Za tuto úlohu je možné získat 9 bodů. 4 Společná sprcha Typickou vlastností levného ubytování je sdílené sociální zařízení. V tomto příkladě máte za úkol pomocí procesů a sdílené paměti namodelovat chování osob v koupelně, kde jsou společné sprchy. Předpokládejme, že: koupelna má konečné množství sprch v každé sprše může být jeden muž, nebo jedna žena pokud je v některé sprše muž, nemůže do koupelny vstoupit žena (a opačně) pokud jsou všechny sprchy obsazeny nebo nelze do koupelny vstoupit z předchozího důvodu (je dotyčná osoba nucena počkat před vstupem) Společné sprchy reprezentujte pomocí bloku sdílené paměti a jednotlivé osoby jako samostatné procesy, které budou synchronizovány pomocí semaforů pro procesy. 2 Vytvořte program shower, který bude mít následující parametry: shower --create n vytvoří koupelnu mající n sprch; pokud se ji nepodaří vytvořit, vypíše chybovou hlášku shower --destroy zruší koupelnu, i.e., odstraní všechny zdroje v paměti související s programem shower --man n simuluje muže jdoucího do sprchy; parametr n udává, jak dlouho mu bude sprchování trvat (v sekundách) 2 Pokud budete tuto úlohu implementovat ve Windows, použijte pro sdílenou pamět mapovaný soubor a místo procesů vlákna a uživatelské rozhraní simulujte pomocí standardního vstupu. 4

shower --woman n simuluje ženu jdoucí do sprchy; parametr n udává, jak dlouho jí bude sprchování trvat (v sekundách) shower --status zobrazí informace o koupelně, tj. počet sprch, kdo může vstoupit do sprchy a obsazení jednotlivých sprch Každý proces bude vypisovat informaci o svém stavu následovně: po vytvoření proces oznamí, že jde do sprchy když se mu podaří získat místo ve sprše, oznámí, že vstoupil do sprchy potom, co dokončil sprchávání, oznamí, že vyšel ze sprchy Příklad použití shower --create 2 shower --man 10 & shower --man 12 & shower --woman 10 & shower --man 10 & Výstup může vypadat následovně: Proces #10533 (muz) jde do sprchy. Proces #10533 (muz) vstoupil do sprchy. Proces #10536 (muz) jde do sprchy. Proces #10536 (muz) vstoupil do sprchy. Proces #10535 (zena) jde do sprchy. Proces #10534 (muz) jde do sprchy. Proces #10533 (muz) vysel ze sprchy. Proces #10534 (muz) vstoupil do sprchy. Proces #10536 (muz) vysel ze sprchy. Proces #10534 (muz) vysel ze sprchy. Proces #10535 (zena) vstoupil do sprchy. Proces #10535 (zena) vysel ze sprchy. Příklad výstupu pro: shower --status Pocet sprch: 3 Do sprchy muze vstoupit: zena Sprcha #1: proces 10482 Sprcha #2: prazdna Sprcha #3: prazdna Hodnocení Za tuto úlohu je možné získat 9 bodů. 5

Poznámky k implementaci a odevzdávání všechny úlohy je možné implementovat na platformně Linux (preferovaná volba) i Windows, ale je přípustné odevzdat řešení jen pro jednu z nich, tj. nelze například odevzdat 1. úlohu ve verzi pro Linux i Windows úlohy je možné odevzdat do konce zápočtového týdne (tzn. do 17. prosince 23:59 CET) a na později odevzdané úlohy nebude brán zřetel; úlohy odevzdané před zápočtovým týdnem bude v případě potřeby možné odevzdat opakovaně jednotlivé řešení zásílejte jako samostatné soubory ve tvaru login-číslo příkladu.c na email krajcap (at) inf.upol.cz jednotlivé programy by měly být vhodně okomentovány tak, aby bylo možné pochopit činnost programu; dbejte na dobrý programátorský styl a konvence (včetně těch o formátování kódu) 6