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

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

Synchronizace paralelních procesů

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

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.

Procesy a vlákna - synchronizace

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

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

Procesy a vlákna (Processes and Threads)

PARA Filozofové, kuřáci a holič

Ú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í

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

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

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

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

Paralelní programování

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

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

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

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

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

Paralelní programování

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

Jak je definována kritická sekce? Jaký je rozdíl mezi aktivním čekáním a blokováním procesů?

Operační systém (Operating System)

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

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

Chapter 6: Process Syncronization

Téma 5 Synchronizace procesů a problém uváznutí Obsah

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

Paralelní programování

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

Chapter 6: Process Synchronization

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

Paralelní programování

Synchronizace procesů

Chapter 6: Process Synchronization

Synchronizace procesů

Téma 5 Synchronizace procesů a problém uváznutí

Management procesu I Mgr. Josef Horálek

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

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

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

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

Ukázka zkouškové písemka OSY

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

Téma 36. Petr Husa

Paralelní programování

Paralelní programování

Operační systémy. Tomáš Hudec.

B4B35OSY: Operační systémy

Synchronizace Mgr. Josef Horálek

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

Synchronizace vjj 1

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

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

Chapter 7: Process Synchronization

PB071 Programování v jazyce C

Téma 4. Synchronizace a deadlock

Programování v C++ 2, 7. cvičení

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Komunikace eorders. aegis. aegis.cz. Konference Common 2009 Malá Fatra. Evžen Kučera

PB002 Základy informačních technologií

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

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

a co je operační systém?

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

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

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

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Linux Teorie operačních systémů a realita

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

Management procesu II Mgr. Josef Horálek

Algoritmizace a programování

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

Kód Producent-Konzument. Je to korektní řešení?

Základní datové struktury

Teoretická informatika Tomáš Foltýnek Paralelní programování

Programování založené na posílání zpráv

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

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška I / 21

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

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

Zvýšení spolehlivosti a diagnostika operačních systémů pracujících v reálném čase

Paralelní programování

Základní úrovně: Moorův zákon: multi-core mikroprocesory (CPU) hypertherading pipeline many-core Paralelní systém Instrukce iterace procedura Proces

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

Roury a zprávy Mgr. Josef Horálek

Kód Producent-Konzument

Česká letecká servisní a. s.

Kód Producent-Konzument. Je to korektní řešení?

ADT/ADS = abstraktní datové typy / struktury

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

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

Téma 4. Plánování procesů a synchronizace

Abstraktní datové typy

Čipové karty Lekařská informatika

Poslední aktualizace: 21. května 2015

Operační systémy. Tomáš Hudec.

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

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

Transkript:

Ú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 o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody http://aldebaran.feld.cvut.cz/vyuka/uvod_do_os

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.

Komunikace mezi procesy (IPC) Meziprocesová komunikace (IPC) = techniky výměny dat mezi dvěma nebo více procesy/vlákny zahrnuje metody synchronizace (semafor, mutex, monitor viz přednáška č.5, zasílání zpráv, sdílení paměti, vzdáleného volání procedur, aj. při programování se využívá API dané obecným standardem (POSIX=IEEE 1003, SUS Single Unix Specification), příslušnou platformou (Win32 API) nebo jednoúčelovou implementací může probíhat na jednom příp. více počítačů propojených počítačovou sítí

Problémy při synchronizaci procesů/vláken Uváznutí (Deadlock) a vyhladovění (Starvation) Uváznutí (= zablokování): množina procesů/vláken čeká na událost, kterou může generovat pouze jiný proces/vlákno z této množiny Vyhladovění: procesu/vláknu jsou trvale odpírány požadované sdílené prostředky bez kterých nemůže dokončit úlohu.

IPC: zasílání zpráv (Message Passing) Základní operace: send(destination,&message) receive(source,&message) send() vysílá zprávu na dané cílové místo; receive() přijímá zprávu z určeného zdrojového místa; pokud není zpráva dostupná, je proces blokován (příp. pokračuje s chybovým kódem)

Klasické problémy synchronizace mezi procesy (IPC) Problém producent-konzument (Producer-Consumer Problem) jeden proces (=producent) poskytuje data a ukládá je do sdílené paměti druhý proces (=konzument) data ze sdílené paměti odebírá Blokování pokud: producent vkládá do plného bufferu konzument odebírá z prázdného bufferu

Problém producent konzument 1 Viz [1]

Problém producent konzument 2 (viz [3]) define N 100 /* number of slots in buffer */ int count = 0; /* number of items in buffer */ void producer(void) { int item; while(true) { item = produce_item(); if (count == N) sleep(); /* if buffer is full, go to sleep */ insert_item(item); count = count + 1; if (count == 1) wakeup(consumer); /* was buffer empty? */

Problém producent konzument 3 void consumer(void) { int item; while (TRUE) { if (count == 0) /* critical point for context switching */ sleep(); /* if buffer is empty, go to sleep */ item=remove_item() count = count 1; if (count == N - 1) wakeup(producer); /* was buffer full? */ consume_item(item); Toto je špatné řešení!!! Může dojít k chybě souběhu.

Problém producent konzument: použití semaforů (viz [3]) #define N 100 /* number of slots in buffer */ typedef int semaphore; semaphore mutex = 1; /* control access to critical section (CS)*/ semaphore empty = N; /* counts empty buffer slots*/ semaphore full = 0; /* counts full buffer slots*/ void producer(void) { itemtype item; while (TRUE) { item=produce_item(); down(&empty); down(&mutex); /* enter CS*/ insert_item(item); up(&mutex); /* leave CS*/ up(&full); void consumer(void) { itemtype item; while (TRUE) { down(&full); down(&mutex); /* enter CS */ item=remove_item(); up(&mutex); /* leave CS */ up(&empty); consume_item(item);

Problém čtenáři písař Více procesů/vláken, v roli čtenáře nebo písaře, musí přistupovat ke sdílené paměti, aby do ní zapisovaly nebo z ní četly. Přitom je potřeba zaručit integritu dat, která může být porušena souběhem čtenáře a písaře nebo dvou písařů. Praktický příklad: rezervační systém letenek

Problém čtenáři písař (korektní řešení) (viz [3]) int rc = 0; /* readers counter */ semaphore mutex = 1; /* controls access to rc */ semaphore db = 1; /* access to database */ void reader(void) { while(true){ down(&mutex); rc = rc + 1; if (rc == 1) down(&db); up(&mutex); read_data_base(); down(&mutex); rc = rc - 1; if (rc == 0) up(&db); up(&mutex); use_data_read(); void writer(void) { while(true) { think_up_data(); down(&db); write_data_data(); up(&db);

Problém večeřící filosofové Problém procesů, které soutěží o výlučný přístup k omezenému počtu prostředků. Zadání: N filozofů sedí kolem kulatého stolu a každý z nich buď přemýšlí nebo jí. K jídlu potřebují současně levou a pravou vidličku.

Problém večeřící filosofové řešení (viz [3]) #define N 5 #define LEFT ((i+n-1) % N) #define RIGHT ((i+1) % N) enum stat(thinking, hungry, eating); enum stat state[n]; semaphore mutex=1; semaphore s[n]; # initially set to 0 void philosopher(int i) { while (TRUE) { think(); take_forks(i); eat(); put_forks(i); void take_forks(int i) { down(&mutex); state[i] = hungry; test(i); up(&mutex); down(&s[i]); void put_forks(int i) { down(&mutex); state[i] = thinking; test(left); test(right); up(&mutex); void test(int i) { if (state[i] == hungry && state[left]!= eating && state[right]!= eating) { state[i] = eating; up(&s[i]);

Příklady meziprocesové komunikace Nezávislé na platformě: Roury (pipes) Sokety (sockets) Semafory Závislé na platformě: Signály Fronty zpráv Sdílená paměť Zasílání zpráv Paměťově mapované soubory aj.

Příklady meziprocesové komunikace v OS Unix Signály Viz další presentace

ÚVOD DO OPERAČNÍCH SYSTÉMŮ KONEC 6. přednášky České vysoké učení technické Fakulta elektrotechnická