1. B4. Počítačové sítě a decentralizované systémy Jakub MÍŠA (2006) Decentralizace a distribuovanost v architekturách počítačových sítí. Centralizovaná a distribuovaná správa prostředků, bezpečnostní politika a ochrana dat. Síťové a distribuované operační systémy. Decentralizace a distribuovanost Obecně dělíme systémy na centralizované, decentralizované a distribuované: Centralizované zpracování probíhá jenom v jednom uzlu systému nebo v přístupovém místě. Centralizovány jsou i technické prostředky (procesy, paměť), data, řízení i aplikační funkce. Decentralizované systémy splňují sice podmínku distribuce zpracovatelských kapacit, dat a funkcí, ale chybí zde distribuce řízení a zajištění transparentnosti. Decentralizované zpracování zahrnuje uzly, sítě, které jsou integrované prostřednictvím nějakého média. Distribuované systémy jsou systémy rozložené na více uzlů (uživateli se jeví jako jeden celek). Distribuovány jsou technické prostředky, data, řízení, funkce a logika zpracování. Distribuovaný výpočet, u kterého se na cílovém řešení zadané úlohy podílí více procesorů schopných provádět výpočet na rozdělených datech souběžně, se stává velice častým řešením pro řadu aplikací. Distribuované systémy Rozvoj technologií umožnil vzájemné propojení velkého počtu počítačů do síťových nebo distribuovaných systémů, které umožňují sdílet jednotlivým počítačům (uzlům) dostupné prostředky, vzájemně komunikovat a spolupracovat na čemkoliv, co se uživatelům těchto systémů zdá smysluplné. Distribuovaný systém je takový systém propojení množiny nezávislých počítačů, který poskytuje uživateli dojem jednotného systému. Na této definici jsou podstatné dva aspekty. Prvním je hardwarová nezávislost jednotlivé uzly jsou tvořeny zcela nezávislými počítači s vlastní výpočetní jednotkou (jedním nebo několika procesory) a pamětí. Jedinou možností komunikace s ostatními uzly systému je přes komunikační (typicky síťové) rozhraní. Druhý aspektem je dojem jednotného systému uživatel (ať již skutečný člověk nebo nějaká vyšší softwarová vrstva) komunikují se systémem jako s celkem, nemusí se starat o počet uzlů, topologii propojení, komunikaci apod. Pojmem distribuovaný systém lze označit celou škálu různých řešení, od multiprocesorů umístěných na jedné základové desce až po celosvětový systém pro miliony uživatelů. Vlastnosti distribuovaných systémů Pravděpodobně nejdůležitější podmínkou dosažení iluze jednotného systému je transparentnost. Té může být dosaženo ve dvou úrovních na úrovni komunikace s uživatelem nebo na úrovni komunikace procesů s jádrem systému. Transparentnost Přístupová Lokační Migrační Exekuční Replikační Perzistentní Konkurenční Paralelismová Význam Proces má stejný přístup k lokálním i vzdáleným prostředkům Uživatel (proces) nemůže říci, kde jsou jednotlivé prostředky umístěny Prostředky se mohou přemisťovat mezi jednotlivými uzly Procesy mohou běžet na libovolném uzlu zapojeném do systému Uživatel se nemusí starat o to, kolik kopií daného objektu existuje a jakým způsobem jsou objekty aktualizovány Uživatel se nemusí starat o stav objektů, ke kterým přistupuje Prostředky mohou být automaticky využívány více uživateli zároveň Různé činnosti mohou být prováděny paralelně bez vědomí uživatele 1/5
Další klíčovou podmínkou dobře fungujícího distribuovaného systému je přizpůsobivost a otevřenost. Vzhledem k tomu, že distribuovaný systém běží na mnohem složitější struktuře hardwaru než klasické operační systémy, měl by být daleko méně citlivý na změnu prostředí. Přizpůsobivost může být opět vztažena na několik oblastí distribuovaných systémů. Vlastnost Autonomie Decentralizované rozhodování Otevřenost Migrace prostředků a procesů Význam Každý uzel je schopný samostatné funkčnosti Každý uzel vykonává rozhodnutí nezávisle na ostatních Lze zapojit různé komponenty vyhovující rozhraní Procesy i prostředky mohou být přemístěny na jiný uzel Výhody a nevýhody: + možnost dosažení daleko vyššího výkonu než u jednoho počítače + spojení původních distribuovaných systémů do jednoho celku + spolehlivost výpadek jedné části neohrozí funkčnost celého systému + rozšiřitelnost + sdílení společných dat a prvků málo dostupného softwaru spojení po síti, možné výpadky obtížnější řešení bezpečnosti Rozdělení distribuovaných systémů Distribuované systémy můžeme rozdělit na distribuované operační systémy a distribuované systémy na uživatelské úrovni (distribuované, distribuovaná výpočetní či vývojová prostředí apod.). Počítače s distribuovaným operačním systémem používají jako svůj základní software operační systém vyvinutý speciálně pro potřeby distribuovaných systémů. Sám operační systém poskytuje vyšším softwarovým vrstvám i uživatelům dojem jednotného systému, podporu distribuovanosti, komunikaci mezi jednotlivými entitami systému, synchronizaci apod. je kompletně součástí operačního systému. Jakýkoliv software běžící nad těmito systémy pak může transparentně využívat těchto distribuovaných služeb, z tohoto pohledu neexistuje rozdíl mezi lokální a distribuovanou aplikací. Druhá třída distribuovaných systémů (na rozdíl od distribuovaných OS nemá jednotné označení) naopak používá jako základní software libovolný lokální (nedistribuovaný) operační systém (Linux, Windows,...), nad kterým je vytvořena softwarová vrstva, která služby operačního systému rozšiřuje na distribuované prostředí a přidává další služby potřebné speciálně pro distribuované. Tato softwarová mezivrstva je někdy nazývána middleware. Distribuovaná Distribuovaná Distribuovaná mezivrstva (middleware) Distribuovaný operační systém (Linux) (Win XP) (Solaris) síť síť Při použití této softwarové architektury mohou běžet na jednom počítači zároveň jak běžné lokální využívající pouze služeb operačního systému, tak i distribuované využívající služeb operačního systému a distribuované mezivrstvy. 2/5
Síťové a distribuované operační systémy AMOEBA Hlavním cílem bylo postavit rozsáhlý systém, který je co nejjednodušeji ovladatelný. Přesným opakem síťového OS, kdy má každý stroj svou identitu, přihlašuje se k PC, má na PC svá data, atd. U Amoeby uživatel ví o jednotlivých strojích, ale vystupuje jako jediný velmi výkonný počítač Uživatel se loguje do Amoeby, ne k jednotlivému počítači, spustí úlohu a systém ji automaticky distribuuje na vhodný počítač Uživatel neví o přesunech souborů, procesů Jednotlivé části mohou být rozmístěny i v několika zemích Stavba: Pole souborových serverů Pole procesových serverů Spojeno bránami, které umožňuje zapojení různých platforem a stanic v různých zemích Objektově založený systém Uživatel má svá práva, která mu umožňují pracovat s jistými objekty (procesy, soubory, ) Souborový server: Nízká cena pamětí a disků dovolila obrovské kapacity Postaveno nejčastěji na systému UNIX, ale i dalších Procesy starající se o real-time defragmentaci Operace read_file, create_file. Při změně souboru systém musí soubor přečíst, v paměti provést změny a pak zapsat nový soubor Procesový server: UNIX, standardní procesy Funkčnost: žádost / odpověď, výměna dat Procesy: Proces složen z vláken běžících paralelně, vlákna jednoho procesu mají stejný adresový prostor, ale každé v něm má svá vlastní data. Chorus objektový systém založený na velké rozsáhlosti a vysoké bezpečnosti, UNIX Uživatelé mají na výběr z několika jazyků, ve kterých mohou psát programy (C, C++, Java) Struktura: soubor počítačů spojených sítí, jednotlivé počítače se i se svými periferiemi nazývají strany Princip chování: Na jednotlivých stranách běží samostatné procesy. Ty jsou rozděleny do menších funkčních celků aktorů. Aktor má svůj privátní paměťový prostor pro běh svého kódu. Aktor může být složen z několika paralelně běžících vláken. Aktory si mezi sebou vyměňují zprávy pomocí komunikačních kanálů nazývaných porty. 3/5
Mach inspirovaný / podobný běžným distrubuovaným OS, ale doplněný o většinu vlastností, které běžné DOS postrádají 3 podmínky vzniku (aby na něm běžely UNIXovské běží na UNIXu, podpora paralelních a distribuovaných výpočtů, jednoduchá modifikace díky jednoduchému kernelu) pokročilá správa paměti navíc přístupová práva (místní/vzdálený přístup do paměti) jádro systému je postaveno s maximální jednoduchostí, přenos dat je zajišťován pouze pomocí procesů, většina funkcí se přesouvá na uživatelskou úroveň (jednotlivé uživatelské procesy) Procesy: jedno, či více vláken, má svůj adresový prostor, nikam jinam nemůže, oproti ostatním systémům, proces nemá instruction pointer, ani žádné registry Zprávy: každá zpráva má svou hlavičku (typ zprávy, délka těla, ) o dané velikosti, a samotné tělo zprávy. Velikost definovaná v hlavičce. Pro správnou funkci posílání zpráv v Machu běží proces pojmenovaný NetMsg, který se stará o přípravu zprávy k odeslání, výběr hostitele, odeslání, přijetí zprávy Centralizovaná a distribuovaná správa prostředků Prostředkem rozumíme jakoukoliv relativně stabilní HW nebo SW část systému využitelnou uživateli, resp. jejich procesy. Prostředky dělíme na: fyzické (permanentní části systému procesor, paměť, disky, I/O zařízení, apod.) logické (softwarové entity procesy, soubory, data, apod.) V distribuovaných systémech jsou prostředky fyzicky decentralizované, stavová informace je rozprostřena mezi jednotlivými uzly. Některé prostředky mohou být také z důvodu vyššího výkonu systému replikovány na více uzlech. To vše má za následek vyšší režii správy prostředků v distribuovaných systémech oproti centralizovaným systémům. Prostředky jsou většinou pasivní, jsou spravovány servery správci prostředků. Správce prostředků má za úkol: udržovat spravované prostředky lokaci, konzistenci, atd. přidělovat prostředky uživatelským procesům na jejich žádost dbát o ochranu prostředků před nepovolaným zásahem Proces Proces Proces Proces Proces Proces Správce prostředků Centralizovaná správa prostředků Distribuovaná správa prostředků 4/5
Zablokování (deadlock) v distribuovaných systémech je podobný problém jako v centralizovaných systémech; ba ještě větší. Hůře se jim předchází, hůře se odstraňují, hůře se dokonce i detekují, protože potřebná informace je rozprostřena mezi několika počítači. V literatuře jsou někdy rozlišeny dva druhy deadlocků komunikační deadlock a deadlock prostředků. Komunikační deadlock nastává např. v případě, že proces A vyšle zprávu procesu B a čeká na odpověď, B pošle zprávu procesu C a C pošle zprávu zpět procesu A. Protože však proces A čeká na odpověď od procesu B, zprávu od procesu C nepřijímá, tudíž všechny procesy jsou zablokovány. Vzhledem k tomu, že oba druhy deadlocků mají stejné chování a navíc procesy lze považovat za speciální druh prostředků, nebudeme dále tyto dva druhy rozlišovat. Podobně jako v klasických nedistribuovaných systémech je i v distribuovaných systémech nejpopulárnější a nejpoužívanější tzv. pštrosí algoritmus, tj. problém ignorovat a případné řešení deadlocků nechat na uživateli, resp. na uživatelské aplikaci (např. databáze), která si vše hlídá sama. Dalšími způsoby vypořádání se s deadlocky jsou detekce a zotavení (vznik deadlocků je připuštěn, po jeho zjištění je řešen násilím) nebo prevence (vznik deadlocků je vyloučen). Prevence deadlocků v distribuovaném systému je založena na stejném principu jako u centralizovaných systémů - vytvořit takový systém alokace a držení prostředků, aby k deadlockům vůbec nemohlo dojít. První použitelnou metodou (alespoň v některých systémech) je jednoznačné uspořádání všech prostředků. Každý proces potom může alokovat prostředky pouze v rostoucí posloupnosti, tj. mohou být alokovány pouze ty prostředky, které jsou v daném uspořádání ohodnoceny výše, nežli všechny dosud naalokované prostředky daného procesu. Tímto způsobem nemohou vznikat cykly, tedy ani deadlocky. Další dva způsoby prevence deadlocků jsou založeny na tom, že každé transakci je při startu přidělena jednoznačná časová značka. V okamžiku alokace prostředku drženého jinou transakcí jsou porovnány časové značky obou transakcí. Zablokování je povoleno pouze starší transakci (tj. s menší časovou značkou), mladší transakce je zrušena. Potom budou zřetězeny transakce s rostoucí časovou značkou, nemůže tudíž dojít k deadlocku. Tento algoritmus bývá často nazýván wait-die (starší čeká, mladší umře). Druhým způsobem řešení konfliktu je ukončení transakce, která drží konfliktní. V případě, že drží starší transakce, mladší transakce čeká, v případě že drží mladší transakce, je tato ukončena a je přidělen starší transakci. Ochrana dat replikace Distribuované souborové systémy často umožňují replikaci souborů, tj. udržování více kopií všech nebo jen některých souborů na více fileserverech. To má několik dobrých důvodů: spolehlivost při výpadku jednoho serveru nejsou ztracena data dostupnost k souborům lze přistupovat i v případě výpadku jednoho nebo několika serverů výkon lze přistupovat k nejbližším datům, výkon fileserveru je rozdělen mezi několik serverů Rozlišujeme několik druhů replikačních mechanismů: explicitní replikace uživatel se sám stará o udržování konzistence odložená replikace zápis do primární repliky, aktualizace sekundárních replik později skupinová replikace zápisy jsou simultánně zasílány všem dostupným replikám explicitní replikace odložená replikace skupinová replikace 5/5