Vyšlo v týdeníku CHIPweek č. 5/96, 30. ledna 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a605k150.php3

Model host/terminál

Dávkové zpracování, které se používalo na samém počátku éry počítačů, neumožňovalo přímý kontakt uživatelů s jejich úlohami, a tudíž ani žádnou formu interaktivní práce. To se stalo možné až později, když se tehdejší počítačový hardware poněkud zdokonalil, a především se zdokonalily i možnosti systémového programového vybavení, které interaktivnímu způsobu práce muselo vytvořit potřebnou podporu. Následně pak muselo dojít i ke změně ve způsobu provozování jednotlivých aplikací - také ty se musely přizpůsobit novému výpočetnímu modelu, dodnes označovanému jako model host/terminál.

Přechod z neinteraktivního dávkového zpracování na interaktivní způsob práce, po kterém uživatelé prvních počítačů velmi intenzivně volali, nebyl zdaleka jednoduchou záležitostí. Vyžadoval totiž existenci technik a mechanismů, které na samém počátku počítačové éry nebyly k dispozici. Například bylo nutné vytvořit takové prostředky, které by umožňovaly zpracovávat více jak jednu úlohu najednou - to byl totiž jeden ze základních předpokladů toho, aby vůbec mělo smysl uvažovat o interaktivním způsobu práce více uživatelů současně. Cesta k dnešnímu multitaskingu však byla postupná, a vedla nejprve přes zavedení asynchronních vstupně/výstupních operací - zde stále běžela jen jedna úloha, ale pokud tato iniciovala nějakou vstupně/výstupní operaci, mohla tato probíhat samostatně, bez účasti procesoru, který se v té době již mohl věnovat jiné úloze. Skutečně souběžné zpracování několika úloh, ať již patřících různým uživatelům či uživateli jedinému, však stále bránila existence jediného procesoru, který se v každém okamžiku mohl věnovat právě jedné úloze (ať již uživatelské, nebo systémové, tvořící součást operačního systému). Možnost přidat více procesorů tehdy nepřicházela moc do úvahy, a problém by stejně neřešila - počet procesorů by se těžko mohl dynamicky měnit podle toho, kolik úloh by bylo v daném okamžiku třeba spustit. Proto se přistoupilo na malý trik - procesor se ponechal jen jeden, ale jednotlivé úlohy se na něm začaly střídat. Střídat takovým způsobem, že procesor se věnuje provádění určité konkrétní úlohy jen po jistou dobu (velmi krátkou, například několik desítek milisekund), poté se obdobnou dobu věnuje provádění druhé úlohy, pak třetí atd., až se po vystřídání všech úloh znovu vrací k první, k druhé atd., a vše se neustále v cyklu opakuje. Ve skutečnosti se tak jednotlivé úlohy dělí o celkový „čas" procesoru, a proto se právě naznačené techniky obecně označují jako „sdílení času" (time sharing). Nedokáží samozřejmě zajistit skutečně paralelní provádění jednotlivých úloh, které na jediném procesoru není ani v principu možné. Dokáží však vytvořit alespoň vhodnou iluzi takovéhoto paralelismu, alespoň z pohledu uživatele - rychlost, s jakou člověk reaguje na změny, je totiž nesrovnatelně menší než rychlost, s jakou pracuje počítač. Při vhodné implementaci technik sdílení času je tak možné vytvořit každému ze souběžně pracujících uživatelů dostatečně věrnou iluzi toho, že jejich úloha „běží" trvale.

Objevují se terminály

Zavedení technik sdílení času samozřejmě vyžadovalo velmi zásadní změny v operačních systémech tehdejších počítačů - v podstatě bylo nutné vyvinout zcela nové operační systémy, využívající technik sdílení času pro souběžné zpracování více úloh a pro interaktivní režim práce více uživatelů. Současně s tím ale muselo dojít i k jedné další zásadní změně.

Pokud mělo být možné, aby na jednom a témže počítači pracovalo interaktivním způsobem více uživatelů současně, bylo nutné pro ně vybudovat vhodná uživatelská pracoviště. Tedy zpřístupnit každému z nich takové zařízení, které by mu umožnilo komunikovat s jeho úlohou, případně s jednou z více úloh, které si na daném počítači spustí. Tato komunikace přitom měla charakter přenosu vstupů od uživatele směrem k jeho úloze, a přenos výstupů této úlohy směrem k uživateli. Vše se přitom odehrávalo (alespoň zpočátku) na úrovni přenosu jednotlivých znaků, takže pro vstup postačovala běžná klávesnice, a pro výstup jedoduchá řádková tiskárna. Dohromady pak tato dvě zařízení (klávesnice a tiskárna) tvořila jeden celek, označovaný jako terminál. Poměrně záhy však tiskárnu v rámci terminálů nahradil obrazovkový displej, který byl v mnoha ohledech přeci jen šikovnější.

První generace terminálů s obrazovkovým displejem se však stále chovala stejně, jako kdyby byla místo displejem vybavena tiskárnou - jednotlivé znaky se „tiskly" (zobrazovaly) postupně za sebou, při zaplnění řádky se pokračovala na řádce nové, ale neexistovala možnost přechodu zpět na některou z předchozích řádek. Řečeno soudobou terminologií, neexistoval zde posun kurzoru nahoru a dolů, a nebylo zde tudíž možné realizovat celoobrazovkový režim práce, typický pro mnoho pozdějších editorů. Této první generaci terminálů se dodnes řídá „znakové" či „řádkové", a spadají do kategorie tzv. neinteligentních terminálů (v angličtině mnohem explicitněji označovaných jako „dumb").

Později se samozřejmě objevily dokonalejší terminály, schopné přechodu mezi řádkami a obecně po celém dvourozměrném poli zobrazovaných znaků (dnes se jim říká stránkové, či celoobrazovkové terminály), a později dokonce ještě inteligentnější terminály, schopné pracovat s obrazovkami, členěnými na různá pole s texty a okénky formulářového typu (jde o tzv. formulářové terminály). Některé terminály jsou již také „inteligentní" v tom smyslu, že jsou vybaveny jistou vlastní výpočetní kapacitou - podstatné je však to, že ji využívají jen pro inteligentnější zpracování vstupů, které uživatel zadává, a pro inteligentnější zpracování výstupů, které uživateli zasílá k vyobrazení jeho úloha. Základní vlastností terminálu však nadále zůstává to, že slouží pouze potřebám vstupu a výstupu, a sám nezpracovává žádné uživatelské ani systémové aplikace.

Model host/terminál

Existenci uživatelských pracovišť (terminálů), interaktivnímu způsobu práce v režimu sdílení času a koexistenci s dalšími úlohami se samozřejmě musely přizpůsobit i jednotlivé aplikace. Zatímco samotné sdílení času mohlo být implementováno takovým způsobem, aby o něm jednotlivé aplikace nemusely vůbec vědět (ale také to tak nemuselo být, a byla naopak nutná vědomá spolupráce apolikací na těchto technikách), požadavkům na interaktivní způsob práce a na existenci terminálů se musely přizpůsobit všechny úlohy. Operační systém jim k tomu musel vyjít vstříc - musel například nabídnout vhodný mechanismus, prostřednictvím kterého úloha mohla pracovat s terminálem, u kterého její uživatel právě „seděl". Nejčastěji měl tento mechanismus povahu přechodových bodů, přes který úloha předávala své výstupy směrem k uživateli, a ze kterého naopak sama odebírala vstupy od uživatele - z druhé strany pak tento přechodový bod obsluhoval operační systém, který se již staral o správné doručení výstupů úlohy až do uživatelova terminálu, a naopak o převzetí vstupů z uživatelova terminálu a jejich předání skrz zmíněný přechodový bod, směrem k úloze (viz obrázek).

Obrázek 1.
Představa modelu host/terminál
Kromě komunikace se svým uživatelem, uskutečňované s využitím terminálů, však každá úloha nacházela všechno ostatní „na místě" - přímo na počítači, na kterém běžela. Vedle procesoru, o který se dělila s ostatními úlohami (ať již vědomě či nevědomě), zde nacházela všechny potřebné zdroje systémového i jiného charakteru: paměť, služby operačního systému, vstupně/výstupní a jiná periferní zařízení (nebo alespoň jejich ovladače, skrz které s nimi pracovala). V neposlední řadě pak také všechny datové soubory, systémové utility a rutiny, i další programy. Ve skutečnosti tak vlastně bylo všechno „na jedné hromadě", přesněji: na jediném počítači, který byl nositelem všech zmíněných zdrojů, včetně výpočetní kapacity svého procesoru. V angličtině se pro tento vztah „vlastnění" vžilo označení „to host", které je třeba překládat ve smyslu „hostit", „být hostitelem" (a ne jako „host", což má zcela opačný význam). Pro celý počítač jako takový se pak v angličtině vžilo označení host, resp. host computer, česky nepříliš správně „hostitelský počítač".

Od označení „host" je pak odvozeno i pojmenování výpočetního modelu, ve kterém pracují aplikace určené pro takovéto prostředí hostitelských počítačů, vybavených terminály: jde o model host/terminál.