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

Podobné dokumenty
Cvičení č. 2. Komunikace mezi procesy Program Hodiny. 4 body

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

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

Projekt: Přístupový terminál

OBSAH. Word. První spuštění a hlavní obrazovka Wordu 3 Základní nastavení Wordu 6 Kontrola pravopisu a mluvnice 8 Nastavení ukládání dokumentu 12

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

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

Zadání příkazu k převodu do zahraničí a v cizí měně do tuzemska ve službě ČSOB BusinessBanking 24

Redakční systém Joomla. Prokop Zelený

emanuál Rozvoj ICT kompetencí žáků a pedagogů v oblasti zpracování grafiky a předtiskové přípravy pro studenty kurzu v LMS systému Moodle

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

INFORMATIKA vyšší úroveň obtížnosti

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

PŘÍKAZY OVLÁDÁNÍ SHELLU

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

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

Programování II. Návrh programu I 2018/19

SOFTWARE 5P. Instalace. SOFTWARE 5P pro advokátní praxi Oldřich Florian

Paralelní programování

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Ukázka úkolů z databáze testů QTB5

Faxový server společnosti PODA s.r.o.

Procesy a vlákna - synchronizace

Zadání semestrálního projektu Algoritmy I. zimní semestr 2018/2019

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

Zadání maturitní práce ve školním roce 2016/2017

Projekt: Přístupový terminál

Příručka Google Cloud Print

Uživatelská příručka SBOX

1. DATOVÉ SCHRÁNKY OBECNÝ PŘÍSTUP K DATOVÉ SCHRÁNCE DATOVÉ ZPRÁVY... 3

Aktualizace software tabletů GoClever TAB A73 / A101 / A103 (pomocí aplikace LiveSuit 1.05)

DUM 06 téma: Tvorba makra pomocí VBA

8. Cvičení Kopírování objektů mezi aplikacemi MS Office

Uživatelský manuál pro lektora e-learningového portálu MAFIDIS+

Používejte jen ty konstrukty jazyka C/C++, které jsme doposud probírali (nepoužívejte STL apod.)

Souhrn výukových materiálů ke kurzu: Tvorba výukových materiálů pomocí tabletu (B3.6)

Propojení Pohoda a Virtuemart 2. popis funkcí, instalace a nastavení. (verze ) MICHAL KOPECKÝ, MILAN PASTOR

Objektové modelování BI-OMO 6. cvičení

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

Příručka Google Cloud Print

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

7. Enterprise Search Pokročilé funkce vyhledávání v rámci firemních datových zdrojů

Hodnocení soutěžních úloh

Programování II. Dědičnost změna chování 2018/19

MOODLE PRO STUDENTY návod č. 1 (verze 3, září 2010)

Microsoft Excel kopírování vzorců, adresování, podmíněný formát. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Programování II. Objektová dekompozice Třída jako objekt 2018/19

15. Projekt Kalkulačka

Rozklad na prvočinitele. 3. prosince 2010

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

Dokumentace software

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Úvodem... 4 Co je to vlastně formulář Co je to šablona dokumentu Jak se šablona uloží Jak souvisí formulář se šablonou...

Profilová část maturitní zkoušky 2013/2014

Reliance 3 design OBSAH

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

ČSOB Business Connector instalační příručka

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

Zadání semestrální práce IKTZ 2 letní semestr 2009/2010

Pracovní list VY_32_INOVACE_33_20 Databáze Databáze Databáze Projekt II. Ing. Petr Vilímek

SIPVZ. Máme Z a co dál? Cíle projektu P1 a P2. Co je cílem projektu P0? Obsah modulu P0. Obsah modulu P0. Oblast P Úvodní modul 2003/2004

Příručka Google Cloud Print

Celostátní kolo soutěže Mladý programátor 2016, kategorie C

Windows a real-time. Windows Embedded

Profilová část maturitní zkoušky 2017/2018

Modul Ankety verze 1.11 pro redakční systém Marwel 2.8 a 2.7

JAK ZASLAT VÝSLEDKY V SOUTĚŽI LÉTO S GOLDSTARWAY

Google Apps. weby 1. verze 2012

Návod na elektronické odevzdání ročních statistik na ÚZIS

Návod k použití služby

Prosper Basic Upgrade Příručka uživatele. verze 7Xpa01. RKA SW Systems s.r.o.

Průvodce pro přenos dat

AC FORM FILLER. aplikace pro podání žádosti o poskytnutí finančního příspěvku. Verze z 13

Metodicky na vod pro Roc nı hodnocenı ISP DSP

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/ MS Excel

Slovo na úvod FTG 1 ZS Jasné vymezení hřiště a domluva pravidel hry usnadňuje vzájemnou komunikaci.

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

Provozní pokyny Průvodce Mopria

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

Paralelní programování

Příručka Google Cloud Print

DUM 20 téma: Test dávky

Elektronická spisová služba a elektronické skartační řízení

Manuál pro studenty. Obsah

Nápověda pro možnosti Fiery 1.3 (klient)

MS Word pro administrátory projektů Pokročilí

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

Google Apps. kalendář 2. verze 2012

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

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

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

M4 PDF rozšíření. Modul pro PrestaShop.

TÉMATICKÝ OKRUH Softwarové inženýrství

Nejprve je nutné vyplnit formulář nastavení. Následně mohou být vložena jednotlivá hesla do modulu.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-220

NOVINKY V INTERNETOVÉM BANKOVNICTVÍ PRO PODNIKATELE ÚNOR 2019 SEZNAMTE SE S NOVINKAMI, KE KTERÝM JSTE NÁS INSPIROVALI.

InsideBusiness Payments CEE

ČSOB Business Connector Instalační příručka

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Transkript:

Cvičení č. 3 Sdílené prostředky a synchronizace Program Banka 4 body Datum: 12.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...3 4.2. Požadavky na implementaci...3 4.3. Komunikace s Grafickým uživatelským rozhraním...4 4.4. Doporučení pro implementaci...4 1. Úvod V tomto cvičení si vysvětlíme, co je to sdílený prostředek a synchronizace. Vytvoříme ukázkové programy s využitím systému RTMON demonstrující synchronizaci přístupu ke sdíleným prostředkům. Cílem cvičení je získat představu o problematice přístupu ke sdíleným prostředkům (např. proměnným) v prostředí víceúlohového operačního systému a na ukázkových programech získat praktické zkušenosti s řešením této problematiky. V rámci cvičení bude vytvořen ukázkový program vypisující na obrazovku střídavě dva různé texty. Text bude uložen v proměnné sdílené mezi dvěma procesy; jeden proces bude do proměnné zapisovat a druhý z ní číst. Bez synchronizace bude docházet ke konfliktům při přístupu a zobrazené texty budou nesprávné. 2. Pokyny pro odevzdání Výstupem cvičení bude protokol krátká zpráva o řešení úloh na cvičení. Šablonu protokolu si stáhněte z Moodle. Protokol by měl obsahovat odpovědi na otázky, zdrojový kód Vašich řešení podle zadání, případně stručný popis úprav v ukázkovém kódu podle bodu 4 v tomto dokumentu. Dále bude výstupem cvičení upravený soubor banka.cpp, viz zadání níže. Zdrojový kód musí být přehledně formátovaný a komentovaný. Oba soubory (protokol i zdrojový kód) pojmenujte svým jménem ve formátu Prijmeni_Jmeno, a zabalte to archivu ZIP. Soubor ZIP také pojmenujte svým jménem podle výše uvedeného vzoru a odevzdejte na Moodle. 3. Příprava Prostudujte si prezentaci na Moodle Sdílené prostředky a synchronizace a Základní informace o synchronizaci (Synchronizace.pdf). 2

4. Úlohy o Stáhněte si z Moodle soubor synchron1.cpp. o Soubor obsahuje program, který periodicky vypisuje na obrazovku textové zprávy. Proces, který vypisuje zprávy načítá údaj, který má vypsat ze sdílené proměnné. Do této proměnné druhý proces zapisuje střídavě text 1111.111 a 9999.999. Na obrazovce by se tedy měly objevovat pouze texty obsahující samé jedničky nebo samé devítky. o Prostudujte zdrojový kód programu a ujistěte se, že se chová tak, jak je popsáno. o Přeložte a spusťte program. o Dochází při běhu programu k nějakým chybám ve výpisech? K jakým a proč? o Stáhněte si soubor synchron2.cpp. o Tento soubor obsahuje stejný program jako synchron1.cpp, ale doplněný o synchronizaci přístupu ke sdílené proměnné. o Vyzkoušejte tento program a ověřte, že tentokrát se chyby ve výpisech neobjevují. o Stáhněte si ukázkový soubor Banka.cpp a opravte tento program podle zadání uvedeného v hlavičce souboru. Do protokolu uveďte jaké úpravy jste provedli a proč. K protokolu přiložte i upravený soubor banka.cpp. o Navrhněte a implementujte rozšíření systému RTMON o synchronizační objekty (mutexy). Do protokolu uveďte kód, který toto rozšíření zajistí. Podrobnosti viz. dále v části Požadavky na implementaci. o Upravte program Banka tak, aby používal vámi implementované funkce pro práci s mutexy. Tyto úpravy už pouze zkopírujte do protokolu, nemusíte odevzdávat i upravenou verzi zdrojového souboru. Shrnutí úkolů: 1. Vysvětlete, proč dochází k chybným výpisům u programu synchron1.cpp. 2. Upravte program v souboru Banka.cpp. Přiložte k protokolu jeho zdrojový kód (banka.cpp). 3. Vytvořte funkce pro práci s mutexem s využitím schránek RTMON. 4. Upravte program Banka tak, aby využíval tyto funkce. Do protokolu uveďte pouze kód, který jste změnili. 4.1. Požadavky na program Viz komentář v hlavičce souboru banka.cpp. 4.2. Požadavky na implementaci V programu banka proveďte pouze úpravu pro zajištění synchronizace při přístupu k bankovnímu účtu pomocí schránek OS RTMON. 3

Implementace funkcí pro práci s mutexem v RTMON: Implementace bude využívat schránek RTMON. Jedná se tedy pouze o jakýsi obal (wrapper) kolem použití schránek pro synchronizaci ukázaného výše. Implementujte tři funkce: rtm_createmutex rtm_waitformutex rtm_freemutex. Funkce rtm_createmutex bude sloužit k vytvoření mutexu (schránky). Funkce rtm_waitformutex bude sloužit k získání vlastnictví mutexu. Proces, který ji zavolá musí být uspán dokud nebude mutex k dispozici (použijte rtm_read_q_w). Funkce rtm_freemutex bude sloužit k uvolnění mutexu (tedy vlastně zapsání zprávy zpět do schránky). Pro mutex můžete zavést vlastní datový typ (odkazující zřejmě na identifikátor schránky), nebo mohou funkce pracovat přímo s identifikátorem schránky IDQUEUE*. V tom případě by prototypy funkcí mohli vypadat např. takto: IDQUEUE* rtm_createmutex(); void rtm_waitformutex(idqueue* m); void rtm_freemutex(idqueue* m); Funkce pro práci s mutexem by bylo vhodné implementovat ve zvláštním modulu (souboru) i s vlastním hlavičkovým souborem, tj. např. mutex.cpp a mutex.h. Budeme je totiž využívat i v dalších programech. 4.3. Komunikace s Grafickým uživatelským rozhraním Programy v tomto cvičení nevyužívají GUI. 4.4. Doporučení pro implementaci V programu Banka stačí upravit funkci BankaOperace() tak, aby byla operace měnící stav účtu prováděna jako atomická. V systému RTMON je k synchronizaci možno využít schránek. Na zprávu ve schránce můžeme pohlížet jako na objekt chránící sdílenou proměnnou. Před tím, než začne pracovat se sdílenou proměnnou, musí proces získat zprávu ze schránky. Po skončení práce se sdílenou proměnnou musí proces zprávu zapsat zpět do schránky, tak aby ke sdílené proměnné mohl získat přístup další proces. Proces vyžadující přístup ke sdíleným datum tedy bude postupovat takto: Pro získání výhradního přístupu k datum volá: rtm_read_q_w( schranka, &data); Pracuje se sdílenými daty Pro uvolnění přístupu, po skončení práce se sdílenými daty volá: rtm_write_q(schranka, &data); 4

Jak víme, jestliže proces zavolá rtm_read_q_w() a schránka neobsahuje zprávu, bude pozastaven až do doby, kdy se ve schránce zpráva objeví. To je ekvivalentní čekání na vlastnictví synchronizačního objektu (mutexu, semaforu). Pokud naopak schránka zprávu obsahuje, je zpráva přečtena, schránka vyprázdněna, a proces pokračuje ihned dál ve své činnosti. Protože je ale nyní schránka prázdná, každý další proces, který se pokusí (korektně) pracovat se sdílenými daty a zavolá funkci rtm_read_q_w bude pozastaven až do doby, než proces, který zprávu přečetl, ji zase zapíše zpět do schránky. Zavoláním funkce rtm_write_q() se do schránky zapíše zpráva, což zde indikuje že s daty nikdo nepracuje, odpovídá to uvolnění mutexu tak, aby si jej mohl přivlastnit někdo jiný. 5. Odkazy Moodle podpora předmětu na http://vyuka.fai.utb.cz. Magisterské Studium, Programování realtime aplikací. Klíč k zápisu je PR2008. 5