Klasické problémy meziprocesové komunikace – producent-konzument aj.

Z FAV wiki
Verze z 8. 8. 2011, 15:23; Tester (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Meziprocesova komunikace: � Predavani zprav � Primitiva send, receive � Mailbox, port � RPC � Ekvivalence semaforu, zprav, ... � Bariera, problem vecericich filozofu

Problem sdilene pameti � Uvedene mechanismy { umisteni objektu ve sdilene pameti � Nekdy neni vhodne { Bezpecnost { globalni data pristupna kteremukoliv procesu bez ohledu na semafor � Nekdy neni mozne { Procesy bezi na ruznych strojich, komunikuji spolu po siti Reseni { predavani zprav

Predavani zprav { send, receive � Zavedeme 2 primitiva { send (adresat, zprava) - odeslani zpravy { receive(odesilatel, zprava) - prijem zpravy { Send Zprava (lib. datovy objekt) bude zaslana adresatovi { Receive Prijem zpravy od urceneho odesilatele Prijata zprava se ulozi do promenne "zprava\

Producent-konzument · Dva procesy sdílejí společnou paměť (buffer) pevné velikosti N položek · Jeden proces je producent - generuje nové položky a ukládá je do vyrovnávací paměti · Paralelně běží proces konzument, který data vyjímá a spotřebovává · Procesy mohou běžet různými rychlostmi => musí být zabezpečeno, aby nedošlo k přetečení/podtečení: - Konzument musí být schopen čekat na producenta, nejsou-li data - Producent musí být schopen čekat na konzumenta, je-li buffer plný Problém večeřících filosofů · 5 filosofů sedí kolem kulatého stolu · Každý filosof má před sebou talíř se špagetami · Mezi každými dvěma talíři je vidlička · Špagety jsou tak klouzavé, že filosof potřebuje 2 vidličky, aby mohl jíst · Když filosof dostane hlad, pokusí se vzít 2 vidličky; pokud uspěje, nějakou dobu jí, pak položí vidličky a pokračuje v přemýšlení · Problémy: uvíznutí (všichni filozofové zvednou levou vidličku, žádný z nich už nemůže pokračovat), vyhladovění (pokud by filozofové vzali najednou levou vidličku, budou běžet cyklicky - vidí, že pravá není volná, položí…) · Řešení - Dijkstra (pomocí semaforů) Problém čtenářů a písařů · Představme si velkou databázi, množina procesů se pokouší souběžně číst a zapisovat - Více požadavků čtení - akceptovatelné - Při zápisu nesmí nikdo jiný přistupovat, ani žádní čtenáři - První čtenář, který dostane přístup do databáze, provede P(w), další pouze zvětšují čítač - Po skončení čtenáři zmenšují čítač, poslední provede V(w) - Semafor w zabrání vstupu písaře, pokud jsou čtenáři Semafor w také zabrání vstupu čtenářům, je-li písař

bank

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje