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

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

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

Procesy a vlákna - synchronizace

Procesy a vlákna (Processes and Threads)

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

Synchronizace vjj 1

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

Operační systém (Operating System)

Von Neumannovo schéma

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Windows a real-time. Windows Embedded

Operační systémy pro systémy sběru dat (=DAQ systems). Vývoj aplikačních programů. Operační systémy pro DAQ RTOS VxWorks Windows CE RTX LabVIEW RT

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

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.

Operační systémy. Přednáška 1: Úvod

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

ÚVOD DO OPERAČNÍCH SYSTÉMŮ. Vývoj SW aplikací. Unix, POSIX, WinAPI, programování komunikace s periferními zařízeními, ovladače zařízení

Paralelní programování

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Paralelní programování

Management procesu I Mgr. Josef Horálek

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

Pavel Procházka. 3. prosince 2014

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Principy operačních systémů. Lekce 1: Úvod

Paralelní programování

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

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

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

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

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. Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, / 23

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

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

Principy operačních systémů. Lekce 4: Správa procesů

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

Paralelní programování

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

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

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

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)

Úvod do Linuxu. SŠSI Tábor 1

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

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

Paralelní programování

vjj 1. Priority. Dispatcher

Ukázka zkouškové písemka OSY

Stavba operačního systému

Operační systémy. Přednáška 2: Procesy a vlákna

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

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

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)

Definice OS. Operační systém je základní programové vybavení počítače, nezbytné pro jeho provoz.

Synchronizace Mgr. Josef Horálek

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

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

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

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

Využijte plný výkon procesorů s více jádry v LabVIEW 8.5

OPERAČNÍ SYSTÉMY. Operační systém je prostředník mezi hardwarem (technickým vybavením počítače) a určitým programem, který uživatel používá.

Základní informace. Operační systém (OS)

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Operační systém. Logické prostředky výpoč etního systému jsou:

IT ESS II. 1. Operating Systém Fundamentals

1. Zpracování událostí na pozadí aplikace

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

Principy operačních systémů

Přidělování paměti II Mgr. Josef Horálek

LABORATORNÍ CVIČENÍ Střední průmyslová škola elektrotechnická

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

Když se Linux nevejde. Jiné operační systémy Lenka Kosková Třísková, LinuxDays2018

Konzistentnost. Přednášky z distribuovaných systémů

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

OPS Paralelní systémy, seznam pojmů, klasifikace

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

Struktura programu v době běhu

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Činnost počítače po zapnutí

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

2010/2011 ZS. Operační systém. úvod základní architektury

IUJCE 07/08 Přednáška č. 6

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

Výpočetní technika. PRACOVNÍ LIST č. 7. Ing. Luděk Richter

Česká letecká servisní a. s.

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Operační systémy. Přednáška 3: Plánování procesů a vláken

Distribuovaný systém je takový systém propojení množiny nezávislých počítačů, který poskytuje uživateli dojem jednotného systému.

ČÁST 1. Základy 32bitového programování ve Windows

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

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

PB002 Základy informačních technologií

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

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

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

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

Paralelní programování

Transkript:

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. Prentice Hall, New Jersey, 2001. [2] Silberschatz, A. Galvin, P. B. - Gagne, G.: Operating System Concepts. 6th Edition. John Wiley & Sons, 2003. [3] Tanenbaum, A.: Modern Operating Systems. Modern Operating Systems. Prentice Hall, New Jersey, 2008. [4] Richter, J.: Windows pro pokročilé a experty. Computer Press, 1997. 2 1

Úvod Jaké technické prostředky (HW) použijeme? (viz první přednáška) Jaké operační systémy (OS) zvolíme? Jaké vývojové prostředky pro tvorbu aplikačních programů nasadíme? Jaké techniky programování budeme využívat? 3 Operační systémy (OS) - 1 Operační systém je software který: řídí provádění uživatelských programů, funguje jako rozhraní mezi aplikačním programem a fyzickými prostředky (resources) počítače, spravuje všechny fyzické prostředky počítače, vytváří lepší, jednodušší, přehlednější prostředí pro efektivní využití počítače. 4 2

Operační systémy (OS) - 2 [1] Stallings, W.: Operating Systems. 4 th Ed.Prentice Hall, New Jersey, 2001. 5 Typy OS vhodné pro virtuální přístroje OS pro osobní počítače příklady: Windows 95/98/ME, Windows 2000/XP/VISTA/Win2007, Macintosh OS,Linux. RTOS (Real Time OS) Speciální aplikace (průmysl, doprava, vědecké experimenty, vestavěné aplikace) Hard/soft RTOS příklady: VxWorks, RT Linux, RTX, PharLap, (a většina Embedded OS) Vestavěné OS (Embedded OS) OS pro komerční i nekomerční aplikace (TV přijímače, mobilní telefony, pračky, digitální fotoaparáty, aj.) OS pro speciální paměťové karty, PDA, aj. většinou mají vlastnosti RTOS příklady: uclinux, FreeRTOS, Android, QNX, Symbian 6 3

OS pro distribuované aplikace Paralelní systémy Multiprocesorové systémy pro speciální účely Clusters Distribuované systémy Využívají vhodné sítě LAN, WAN, aj. Architektury klient-server, peer-to-peer 7 Vývojové prostředky Vývojové systémy na bázi textově orientovaných programovacích jazyků: LabWindows/CVI MS.NET (resp. Visual C/C++) Vývojové systémy na bázi grafického programování: LabVIEW Agilent VEE Matlab/Simulink 8 4

Procesy a vlákna základní témata Procesy/vlákna Výhody a nevýhody použití vláken Jaké operační systémy podporují multithreading? Synchronizace vláken Techniky programování 9 Procesy a vlákna Proces (process) - běžící program (= instance programu ). Proces vlastní: privátní adresový prostor systémové prostředky (soubory, dynamicky alokovanou paměť, synchronizační prostředky apod.) nejméně jedno vlákno 10 5

Procesy a vlákna Vlákno (thread) vznikápři inicializaci procesu (primární vlákno). Primární vlákno může vytvářet vlákna sekundární. Vlákna: sdílejí privátní adresový prostor procesu mohou přistupovat ke globálním proměnným a systémovým prostředkům procesu každé vlákno má vlastní zásobník a vlastní kontext 11 Multitasking Multiprocessing / multithreading [1] Stallings, W.: Operating Systems. 4 th Ed.Prentice Hall, New Jersey, 2001. 12 6

Multiprocessing / multithreading [1] Stallings, W.: Operating Systems. 4 th Ed.Prentice Hall, New Jersey, 2001. 13 Multitasking Stavy vlákna (procesu) ve víceúlohovém OS PŘIDĚLENÍ PROCESORU RUNNING READY ODEBRÁNÍ PROCESORU USPÁNÍ PROBUZENÍ WAITING (SLEEPING) 14 7

Výhody vláken Vícevláknový proces není blokován při zablokování jednoho z vláken (např. při čekání na událost) Paměť a systémové prostředky jsou sdíleny (na rozdíl od procesů), zvyšuje se efektivita jejich využití, zjednodušuje se přenos dat mezi vlákny (např. použití globálních proměnných ale POZOR na kritické sekce!!! v programu) Přepínání kontextu vláken je výrazně rychlejší než přepínání kontextu u procesů Efektivní provádění pomalých I/O operací (I/O operace se mohou překrývat s výpočetními operacemi) Výrazné zrychlení programu v případě multiprocesorové architektury (= počítačový systém obsahuje několik procesorů nebo vícejádrové procesory); vlákna běží skutečně paralelně (NE pseudoparalelně!!!) Lepší strukturování programu (Ale s rozumem!!! Nepřehánět počet vláken, zvyšuje časovou režii při přepínání kontextu) 15 Nevýhody vláken Obtížnější programování Nutnost synchronizace při přístupu ke sdíleným prostředkům (globálním proměnným, periferiím) Velmi obtížné až nereálné ladění programu 16 8

MULTITASKING / MULTITHREADING Programování vláken ve Win32 Vytvoření vlákna: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpthreadattributes, DWORD dwstacksize, LPTHREAD_START_ROUTINE lpstartaddress, LPVOID lpparameter, DWORD dwcreationflags, LPDWORD lpthreadid ); Programování vláken ve Win32 Ukončení vlákna: VOID ExitThread ( DWORD dwexitcode ); Ukončení z jiného vlákna: BOOL TerminateThread ( HANDLE hthread, DWORD dwexitcode ); 9

Programování vláken ve Win32 Pozastavení vlákna: DWORD SuspendThread( HANDLE hthread ); Opětovné spuštění vlákna: DWORD ResumeThread( HANDLE hthread ); Přístup ke sdíleným prostředkům operace jsou prováděny ve více krocích při souběžném přístupu může dojít k jejich přerušení vlákno je přeplánováno uprostřed operace výsledek závisí na pořadí provádění vláken nastává tzv. race condition (chyba souběhu) 20 10

Řešení chyby souběhu Kritická sekce dokud není operace dokončena, není možné začít jinou, bez ohledu na počet kroků (atomická změna datové struktury) je nutné identifikovat kritické sekce programu systém zajistí vzájemné vyloučení (mutual exlusion) kód kritické sekce může provádět jen jedno vlákno!! 21 Realizace vzájemného vyloučení Vlákno 1 Vlákno 2 p1_locked = TRUE; p2_locked = TRUE; turn = P2; turn = P1; while (p2_locked && turn = P2); while (p1_locked && turn == P1); //critical section //critical section p1_locked = FALSE; p2_locked = FALSE; 22 11

Synchronizace vláken - 1 Cíle: zabránit konfliktům mezi vlákny při přístupu ke sdíleným prostředkům (paměti, souborům, periferním zařízením, ap.) pozastavení běhu vláken, dokud nejsou splněny specifikované podmínky nebo nenastane určená událost; zajistit vykonání určitých programových sekvencí v požadovaném pořadí. 23 Synchronizace vláken - 2 Optimální mechanismus synchronizace vláken je založen na možnosti převedení vlákna do stavu čekání resp. spánku (waiting, sleeping), kdy mu není přidělován čas procesoru (viz obr. Stavy vlákna ). V tomto stavu vlákno setrvá tak dlouho, dokud nebudou splněny požadované podmínky (např. ukončení jiného vlákna nebo procesu, nenulový stav semaforu, signalizovaná událost, uplynutí nastaveného časového intervalu apod.). Jakmile podmínky nastanou, systém vlákno probudí, tzn. přesune je (v závislosti na jeho prioritě) do příslušné fronty aktivních procesů připravených na přidělení procesoru. 24 12

Synchronizace pomocí objektů jádra ve Win32 Synchronizace vláken pomocí funkce: DWORD WaitForSingleObject ( HANDLE hobject, DWORD dwtimeout ); DWORD WaitForMultipleObjects ( DWORD cobjects, CONST HANDLE *lphobjects, BOOL fwaitall, DWORD dwtimeout ); hobject = manipulátor (handle) synchronizačního objektu (mutex, semafor, událost, soubor, proces, vlákno, ) Mutex (Mutual Exclusion) synchronizační objekt typu binární semafor signalizován, pokud není vlastněn žádným vláknem typicky se používá pro přístup do kritické sekce Vytvoření mutexu: HANDLE CreateMutex ( LPSECURITY_ATTRIBUTES lpmutexattributes, BOOL binitialowner, LPCTSTR lpname ); Otevření mutexu: HANDLE OpenMutex ( DWORD fdwaccess, BOOL finherit, LPCTSTR lpszmutexname ); Uvolnění mutexu: BOOL ReleaseMutex ( HANDLE hmutex ); 13

Příklad vícevláknového programu - 1 #include <windows.h> HANDLE hthreads[2]; HANDLE g_hmutex; DWORD dwthreadid1, dwthreadid2; int WinMain(...) { // Vytvoření mutexu g_hmutex = CreateMutex (NULL, FALSE, NULL); Příklad vícevláknového programu - 2 // Vytvoření vláken a jejich okamžité spuštění hthreads[0] = CreateThread (NULL, 0, FirstThread, NULL, 0, &dwthreadid1); hthreads[1] = CreateThread (NULL, 0, SecondThread, NULL, 0, &dwthreadid2); // Čekání na ukončení vláken FirstThread a SecondThread ; // primární vlákno je pozastaveno WaitForMultipleObjects (2,hThreads,TRUE,INFINITE); // Uzavření manipulátorů obou vláken CloseHandle (hthreads[0]); CloseHandle (hthreads[1]); } 14

Příklad vícevláknového programu - 3 DWORD WINAPI FirstThread (LPVOID lpvthreadparm) { BOOL fdone = FALSE; DWORD dw; while (!fdone) { // čekání na signalizaci mutexu, vlákno je pozastaveno dw = WaitForSingleObject(g_hMutex, INFINITE); } } if (dw == WAIT_OBJECT_0) { // mutex byl signalizován, vlákno může pokračovat... // hlavní programová sekvence vlákna FirstThread... // uvolnění mutexu ReleaseMutex (g_hmutex); } Příklad vícevláknového programu - 4 DWORD WINAPI SecondThread (LPVOID lpvthreadparm) { BOOL fdone = FALSE; DWORD dw; while (!fdone) { // čekání na signalizaci mutexu, vlákno je pozastaveno dw = WaitForSingleObject(g_hMutex, INFINITE); } } if (dw == WAIT_OBJECT_0) { // mutex byl signalizován, vlákno může pokračovat... // hlavní programová sekvence vlákna SecondThread... // uvolnění mutexu ReleaseMutex (g_hmutex); } 15

Semafory - 1 synchronizační objekty používané např. ke sledování počtu volných systémových prostředků. hodnota semaforu se pohybuje od nuly do specifikované maximální hodnoty. semafor je signalizován, je-li jeho hodnota větší než nula, nesignalizován, je-li hodnota nulová. při volání funkce WaitForSingleObject (hsemaphore, ) systém zjistí, zda je hodnota semaforu větší než nula a pak ji dekrementuje o jedničku k uvolnění semaforu (tzn. inkrementaci jeho hodnoty) se používá volání funkce ReleaseSemaphore() ReleaseSemaphore() má jiné chování než ReleaseMutex(). Může být volána libovolným vláknem, které má k objektu semaforu přístup. Hodnota semaforu je inkrementována o hodnotu danou argumentem creleasecount. Semafory - 2 HANDLE CreateSemaphore ( LPSECURITY_ATTRIBUTES lpsemaphoreattributes, LONG linitialcount, LONG lmaximumcount, LPCTSTR lpname ); HANDLE OpenSemaphore ( DWORD fdwaccess, BOOL finherit, LPCTSTR lpszsemname ); BOOL ReleaseSemaphore ( HANDLE hsemaphore, LONG creleasecount, LPLONG lplpreviouscount ); 16

Příklad HANDLE CreateNewSemaphore(LPSECURITY_ATTRIBUTES lpsa, LONG cinitial, LONG cmax, LPTSTR lpszname) { HANDLE hsem; hsem = CreateSemaphore( lpsa, // pointer na security attributes cinitial, // počáteční hodnota cmax, // maximální hodnota lpszname) // jméno semaforu if (hsem!= NULL && GetLastError() == ERROR_ALREADY_EXISTS) { // semafor již existuje, funkce vrátí NULL CloseHandle(hSem); return NULL; } return hsem; // vrátí handle nově vytvořeného semaforu } Události (Events) Události se zpravidla používají k oznámení, že má být nebo byla ukončena nebo zahájena určitá činnost. Rozlišují se dva typy událostí: ručně resetované a automaticky resetované. Vytvoření události: HANDLE CreateEvent ( LPSECURITY_ATTRIBUTES lpeventattributes, BOOL bmanualreset, BOOL binitialstate, LPCTSTR lpname ); 17

Ručně resetované události do signalizovaného stavu jsou uvedeny voláním funkce: BOOL SetEvent ( HANDLE hevent ); události nejsou prostřednictvím funkcí WaitForSingleObject(), WaitForMultipleObject() převedeny automaticky zpět do nesignalizovaného stavu (jako u mutexu). v signalizovaném stavu událost zůstává tak dlouho, dokud ji některé z vláken explicitně nepřepne do nesignalizovaného stavu. K přepnutí (resetování) se používá funkce: BOOL ResetEvent ( HANDLE hevent ); posloupnost volání SetEvent(), uvolnění všech čekajících vláken a volání ResetEvent() je možné nahradit jedinou funkcí: BOOL PulseEvent ( HANDLE hevent ); Automaticky resetované události s automaticky resetovanými událostmi je možné pracovat podobně jako s ručně resetovanými- jiný je mechanismus resetování!!! do signalizovaného stavu jsou automaticky resetované události uvedeny voláním funkce SetEvent(); oproti ručně resetovaným událostem jsou automaticky resetované události převedeny systémem bezprostředně po probuzení čekajícího vlákna zpět do nesignalizovaného stavu; v běhu může pokračovat pouze jediné vlákno ze všech, která na událost čekají; ostatní vlákna zůstávají pozastavena; použití funkce ResetEvent() je zbytečné. 18