
Část 1.: filosofie vzájemné spolupráce
Interoperabilita jako vzájemné soužití nestejných platforem může mít mnoho různých podob. Nad tím, jaké mohou být v případě operačních systémů Unix a MS DOS, se zamýšlí tato série článků.
Dnešní počítačový svět není homogenní. Jeho obyvatelé nepatří k jedné jediné rase a nehovoří vždy stejným jazykem. Spíše naopak - v nejrůznějších oblastech, kde jsou počítače používány, se stále ještě můžeme setkat s více či méně odlišným hardwarem i softwarem, s odlišnými komunikačními protokoly, s odlišnými formáty dat i dalšími odlišnostmi, a v neposlední řadě i s různým pohledem na svět a přístupem k uživatelům. Co je ale příčinou této roztříštěnosti?
Za všechno mohou tržní mechanismy
Tak jako snad v každém oboru lidské činnosti, docházelo i v oblasti výpočetní techniky k postupnému vývoji, ovlivňovanému různými trendy. Dominujícím a stále přetrvávajícím faktorem byla a je přirozená snaha výrobců získat a udržet si co nejvíce zákazníků - měnila se pouze forma realizace tohoto záměru.
Interoperability | Styková provozuschopnost (styková funkceschopnost) |
The capability of a functional unit to operate normally in different data processing environments in a way that requires users to have little or no knowledge of the unique characteristics of those units. NOTE - Interoperability - is achieved by means of standardization of interfaces. |
Schopnost funkční jednotky pracovat normálně v různých prostředích zpracování dat tak, že neklade téměř žádné nebo vůbec žádné požadavky na uživatele ohledně konkrétních vlastností takových jednotek. Pozn.: Stykové provozuschopnosti se dosahuje standardizací rozhraní. |
(ISO 2382-1:1989) | (Anglicko-český výkladový slovník výpočetní techniky, SNTL 1990, strana 109) |
V době, kdy světu vládly střediskové (mainframe) počítače, se jejich výrobci snažili být "dodavateli všeho" - od vlastního počítače přes periferní zařízení a software až po školení uživatelů. Nejlepším způsobem, jak si své zákazníky udržet, či spíše pevně připoutat k sobě, pak byla vlastní koncepce hardwaru i softwaru, neslučitelného a neschopného spolupráce s obdobnými produkty jiných výrobců. V té době skutečně bylo v silách jednotlivých výrobců pokrýt veškeré požadavky svých zákazníků, které tehdy ještě nebyly tak různorodé jako dnes. S postupem času se ale tyto požadavky značně diversifikovaly, a jednotliví výrobci již nestačili vyhovět všemu a všem. Záhy si uvědomili, že je v jejich vlastním zájmu radikálně změnit dosavadní strategii, a přijít na trh s takovými produkty, které budou schopné spolupracovat i s produkty jiných výrobců. Tedy s produkty, které se dnes označují jako "otevřené" (open) - v tom smyslu, že jsou otevřeny možnosti spolupráce a vzájemné součinnosti s jinými produkty, které mohou být založeny na více či méně odlišných principech, myšlenkách či technologiích, pokud ovšem i tyto produkty budou dodržovat stejná, předem dohodnutá pravidla hry pro vzájemnou součinnost.
Co je platforma?
Historicky tedy vedle sebe vznikaly různé počítačové "světy" - s vlastními názory, přístupy a metodami, s vlastním specifickým hardwarem i softwarem a celou řadou dalších specifik - tedy to, co se dnes dosti vágně označuje jako platforma. Z počátku byly jednotlivé platformy plně disjunktní, a to zcela záměrně. Teprve posléze se pod tlakem uživatelů začaly projevovat tendence k vzájemnému sbližování jednotlivých platforem tak, aby byly schopné spolu komunikovat a vzájemně spolupracovat na řešení těch úkolů, které od nich jejich uživatelé požadovali.
V dobách nepříliš dávných tvořily takovéto platformy především sálové (mainframe) počítače firmy IBM (řady 360/370, až po novější 43xx a 90xx), a počítače PDP a VAX firmy DEC (Digital Equipment Corporation). Zde byla charakteristickým rysem vázanost na jediného výrobce, a v důsledku toho pak jednotnost hardwaru i softwaru. V současné době můžeme za samostatný "svět" s ucelenou filosofií (tedy za samostatnou platformu) považovat také počítače standardu IBM PC s operačním systém MS DOS, případně i s nadstavbami typu MS Windows. Zde již chybí vázanost na jediného výrobce, stále však zůstává jednotná koncepce na poli hardwaru i softwaru, umožňující přenos aplikací v binárním tvaru. Podobně můžeme za samostatný a ucelený svět s vlastní filosofií považovat i prostředí operačního systému Unix, v obou jeho hlavních variantách - BSD Unix (Berkeley Standard Distribution) i System V (od firmy AT&T, nověji od její dceřinné organizace USL - Unix System Laboratories) a se všemi deriváty (AIX od firmy IBM, HP-UX firmy Hewlett Packard, Ultrix firmy DEC, HP-UX firmy Hewlett-Packard, SunOS resp. Solaris firmy Sun, SCO Unix firmy Santa Cruz Operation atd.). Prostředí Unixu tedy není nijak vázáno na jednoho výrobce, a dokonce není vázáno ani na vzájemně kompatibilní hardware - za což ale platí přenositelností aplikací jen na úrovni zdrojového kódu. I ta je však často spíše teoretická, neboť obě základní varianty Unixu i jejich jednotlivé deriváty se po implementační stránce často dosti podstatně liší. Přesto však v celém světě Unix-u zůstává stejný "způsob myšlení" a stejná základní architektura operačního systému a pro něj vyvíjených aplikací.
Přestože bychom mohli v hledání dalších platforem ještě chvíli pokračovat, zůstaneme u těch dvou posledně jmenovaných. Tedy u počítačů PC s MS DOS-em a u Unixu. Právě ty jsou totiž v současné době v našich podmínkách zřejmě nejzajímavější.
Interoperabilita je když .....
Co si skutečně představit, když se řekne "interoperabilita" |
Pojem "interoperabilita" se nejčastěji používá v souvislosti s možností vzájemné spolupráce různých platforem v rámci heterogenních počítačových sítí - tedy například k vyjádření toho, že Unixovský počítač a na něm běžící aplikace dokáží spolupracovat s aplikací, provozovanou na počítači PC s operačním systémem MS DOS. Interoperabilita se však může týkat různých úrovní: způsobu propojení počítačů v síti a schopnosti síťového softwaru na dvou počítačích vzájemně si předávat data (i když zde by asi bylo přesnější mluvit o konektivitě), dále schopnosti operačních systémů sdílet si navzájem své zdroje (tedy například možnosti přístupu jednoho počítače k souborům, nacházejícím se na druhém počítači), a konečně vzájemné součinnosti mezi aplikačními programy - například schopnosti dvou systémů elektronické pošty předávat si jednotlivé zprávy. |
Z pohledu uživatele je požadavek na interoperabilitu vlastně požadavkem na splynutí různých platforem. Pro uživatele by jistě bylo nejvýhodnější, kdyby se na něj jednotlivé aplikace "tvářily" na všech platformách stejně. Tedy aby mu všechny předkládaly stejné uživatelské rozhraní, umožňovaly stejné ovládání, nabízely stejné možnosti a funkce atd. Jednotlivé platformy jsou však natolik rozdílné, že prostý přenos aplikací mezi nimi není možný (v Unixu dokonce ani ne v rámci téže platformy). Řešením je pouze tvorba stejných aplikací v různých verzích pro různé platformy: příkladem může být oblíbený systémový program pro správu souborů Xtree Gold, napsaný původně pro prostředí MS DOSu, který ale dnes již existuje i ve verzi pro Unix.
Poněkud slabší požadavek, než přesně stejné pracovní prostředí na různých platformách, je alespoň možnost spolupráce aplikací stejného charakteru. Nejmarkatnějším příkladem zde může být elektronická pošta - zatímco na každé platformě může být elektronická pošta zajišťována odlišnými aplikačními programy, s odlišným uživatelským rozhraním i jinou celkovou filosofií, přesto může být možné přenášet bez větších problémů jednotlivé zprávy mezi různými platformami - pokud se příslušné aplikační programy shodnou na společném tvaru, formátu a významu těchto přenášených zpráv. Zde je tedy prostředkem k dosažení vzájemné součinnosti (interoperability) dodržování společných standardů.
Nutnou podmínkou k interoperabilitě na úrovni aplikací je však možnost vzájemného přístupu k nejrůznějším systémovým zdrojům mezi platformami - tedy například možnost vzájemného přístupu k souborům, tiskárnám, streamerům, eventuelně dalším speciálním zařízením. Tyto jsou ovšem ve správě příslušných operačních systémů. Interoperabilita na úrovni aplikací je proto podmíněna interoperabilitou na úrovni operačních systémů. Touto otázkou se budeme v dalším podrobněji zabývat, a to právě pro dva námi zvolené operační systémy: MS DOS a Unix.
Pokud si ale dva operační systémy chtějí navzájem umožnit přístup ke svým systémovým zdrojům, mohou tak učinit pouze v případě, že jsou spolu schopné vůbec komunikovat - tedy předávat si jakákoli data. Interoperabilita na úrovni operačních systémů je proto opět vázána na možnost vzájemné spolupráce těch softwarových i hardwarových složek příslušných platforem, které zajišťují vzájemné propojení. Tedy na vzájemné kompatibilitě technických prostředků vzájemného propojení, na shodných přenosových protokolech a na slučitelném síťovém programovém vybavení. Také touto otázkou se budeme podrobněji zabývat, v souvislosti se vzájemnou koexistencí MS DOSu a Unixu "na jednom drátě".
Rozdíly mezi MS DOSem a Unixem
Dříve, než se začneme systematicky zabývat otázkou interoperability na úrovni operačních systémů mezi námi zvolenými platformami - tedy mezi MS DOSem a Unixem, musíme se nejprve zmínit o významných odlišnostech mezi těmito dvěma operačními systémy. Z nich nám pak totiž vyplynou dosti významné důsledky pro jejich vzájemnou součinnost.
Základní rozdíl mezi MS DOSem a Unixem je již v jejich celkové koncepci. MS DOS byl a je jednoúlohovým a jednouživatelským operačním systémem. To znamená, že v každém okamžiku slouží vždy jen jednomu uživateli, který si na něm může v daném okamžiku pouštět vždy jen jednu úlohu. Na této skutečnosti nic nemění ani možnost pracovat s rezidentními programy (které lze při troše dobré vůle chápat jako další úlohy), ani nejrůznější nadstavby, umožňující tzv. multitasking (jako současný běh více úloh, v angličtině: tasks) - nejznámější takovouto nadstavbou je bezesporu systém MS Windows, provozovaný v tzv. enhanced módu (ovšem zase jen na počítačích PC s procesorem i80386 a vyšším). Podstatná je totiž skutečnost, že DOS nemá v sobě zabudovány žádné mechanismy na podporu multitaskingu. Tyto mu jsou implantovány až dodatečně (a proto i dosti komplikovaně a neefektivně) již zmíněnými nadstavbami. Naproti tomu Unix byl od začátku koncipován jako víceúlohový a víceuživatelský operační systém, a je tudíž náležitě vybaven potřebnými mechanismy pro podporu víceúlohového a víceuživatelského režimu, které MS DOSu chybí.
Relace a terminály, remote login
![]() |
V operačním systému MS DOS neexistuje žádná přímá analogie terminálů a relací. Při troše dobré vůle si můžeme představit, že počítač PC s operačním systémem MS DOS má jediný terminál (svůj monitor a svou klávesnici), prostřednictvím kterého probíhá vždy stále jediná relace. Je zde však ještě jeden významný rozdíl: zatímco Unix chápe terminál jako jediné vstupně/výstupní zařízení, MS DOS se dívá na klávesnici a na monitor jako na dvě samostatná zařízení.
S relacemi v Unixu velmi úzce souvisí jedna z možností interoperability počítačů PC s MS DOSem a Unixovských počítačů na úrovni aplikačních programů. Jsou-li oba druhy počítačů vhodně propojeny, může se počítač PC chovat jako (tzv. emulovat) skutečný terminál Unixovského počítače. Uživatel počítače PC si pak z něj může otevírat relace na Unixovském počítači a pracovat ze svého počítače PC přesně stejným způsobem, jako kdyby pracoval u skutečného terminálu Unixovského počítače (viz obrázek 1).
K realizaci takovéhoto řešení, kterému se říká terminálová emulace, je zapotřebí především vhodné propojení obou počítačů (ke kterému se dostaneme později). Na straně počítače PC je pak nutný aplikační program, který umožňuje používat klávesnici a obrazovku počítače PC stejně, jako klávesnici a obrazovku skutečného Unixovského terminálu, a dokáže také vhodně komunikovat s příslušným Unixovskýám počítačem. Na straně Unixovského počítače musí být spuštěn zvláštní systémový proces (tzv. démon), který s aplikačním programem na počítači PC komunikuje. Tento démon je ale dnes standardní součástí prakticky všech Unixů. Pro úplnost je vhodné ještě dodat, že právě popsaný způsob interoperability je možný i mezi dvěma Unixovskými počítači. Filosofie Unixu totiž počítá s tím, že jednotlivé počítače budou navzájem propojeny, a že terminály jednoho počítače budou moci být používány v roli emulovaných terminálů jiných Unixovských počítačů - tedy vlastně k tomu, aby uživatel, pracující u terminálu jednoho Unixovského počítače, mohl z tohoto terminálu pracovat i s jiným počítačem stejně, jako kdyby seděl přímo u jeho skutečného terminálu. Uživatel jednoho Unixovského počítače si tedy může ze svého terminálu otevírat relace i na jiných, "vzdálených" Unixovských počítačích (viz opět obrázek 1). Jelikož relace se v prostředí Unixu otevírá příkazem "login" pro přihlášení se do systému, je takováto možnost otevření vzdálené terminálové relace v angličtině označována jako "remote login". Aplikační program, prostřednictvím kterého lze vzdálené terminálové relace v prostředí Unixu otevírat ( a samozřejmě i ukončovat), se jmenuje telnet nebo rlogin, a je dnes jednou ze základních aplikací Unixu, která je standardní součástí prakticky všech verzí Unixu.
Odlišné systémy souborů
![]() |
![]() |
Naproti tomu operační systém Unix spojuje všechny dílčí systémy souborů do jediného výsledného systému souborů, ve kterém nadále zachovává přísnou stromovitou strukturu. Unix je za tímto účelem vybaven operací "mount" (doslova: přimontuj, připevni), jejíž podstatu naznačuje obrázek 3: dva systémy souborů se spojí tak, že list jednoho splyne s kořenem druhého. Tímto způsobem je pak v Unixu sestaven jediný výsledný systém souborů - viz obrázek 4.
Komu patří soubory?
![]() |
Jestliže MS DOS je jednouživatelským operačním systémem, může vycházet z představy, že všechny soubory patří automaticky tomuto jedinému uživateli, kterého pak ale nemusí vůbec uvažovat. Je příznačné, že MS DOS pojem uživatele vlastně ani vůbec nezná. Jednotlivé soubory v MS DOSu nemají definována přístupová práva, ale pouze několik atributů, pomocí kterých lze mj. chránit soubor proti přepisu (přesněji: lze jej prohlásit za soubor pouze pro čtení (read-only)).
Další odlišností obou námi zvolených operačních systémů jsou také konvence pro tvorbu jmen souborů. Zatímco v MS DOSu může mít jméno souboru až osm znaků (a přípona tři), Unix je v tomto ohledu benevolentnější, a připouští nejen delší jména a přípony, ale umožňuje v nich používat také více speciálních znaků, které naopak v DOSu nejsou přípustné. Podstatná je také skutečnost, že Unix rozlišuje velká a malá písmena ve jménech a příponách souborů i adresářů, zatímco MS DOS nikoli.
Transparentní a netransparentní sdílení souborů
Zamysleme se nyní nad tím, jakým principiálním způsobem může mít počítač s MS DOSem přístup k souborům Unixovského počítače a naopak.
Možnosti jsou v zásadě dvě, a lze je charakterizovat jako transparentní a netransparentní.
Představme si, že naše dva počítače jsou vhodným způsobem propojeny, a že na obou z nich je k dispozici systémový aplikační program (utilita), schopný přenést zadaný soubor z jednoho počítače na druhý. Uživatel, pracující na jednom počítači, si pomocí tohoto systémového programu může přenést z druhého počítače na svůj počítač soubor který potřebuje, zde jej zpracovat, a případně jej zase zase obdobným způsobem přenést zpět. Tento způsob lze charakterizovat jako netransparentní, neboť při něm uživatel "ví" o tom, že určitý soubor je umístěn na jiném počítači, a v důsledku toho s ním pracuje jinak, než se soubory na svém počítači. Pro uživatele je tedy tento způsob poněkud pracnější, na druhé straně je ale zase implementačně jednodušší. Snáze se také vyrovnává s různými odlišnostmi v pohledu na soubory v různých systémech - například problém s nepřípustností některých Unixovských jmen souborů v MS DOSu lze jednoduše vyřešit tak, že při přenosu z Unixu do DOSu musí uživatel explicitně zadat, pod jakým (DOSovským) jménem má být soubor přijat.
Jako transparentní sdílení souborů lze chápat takovou situaci, kdy se soubory jiného počítače "tváří" přesně stejně, jako soubory daného počítače, a lze s nimi také přesně stejným způsobem pracovat. Tedy situaci, kdy pro uživatele ani pro jeho aplikační programy vlastně není žádný rozdíl mezi soubory na daném počítači a soubory na počítači vzdáleném. Jaké jsou ale možnosti konkrétní realizace této představy?
V případě, že počítač PC s MS DOSem chce transparentně sdílet část souborů Unixovského počítače, lze vhodným programovým a hardwarovým řešením dosáhnout toho, že příslušná část adresářového stromu Unixovského počítače se DOSovskému počítači bude jevit jako další samostatné zařízení - viz obrázek 5. Počítač s MS DOSem pak může pracovat se soubory na tomto (virtuálním, nikoli skutečném) zařízení stejně, jako se soubory na jiném ze "svých" zařízení.
![]() |
Dalším problémem je například otázka zachovávání vlastnických práv k souborům. V Unixu můžete editovat soubor, jehož vlastníkem je jiný uživatel, ale ke kterému máte právo zápisu. I po dokončení vaší editace však soubor nemění svého vlastníka. Naopak v MS DOSu většina editorů pracuje takovým způsobem, že zruší starou záložní kopii editovaného souboru (soubor .BAK), ze stávající verze udělá novou záložní kopii, a novou verzi, vzniklou editací, vytvoří jako zcela nový soubor. Jeho vlastníkem je pak ovšem ten, kdo s editorem pracoval, a nikoli již vlastník původního editovaného souboru.
Pokud jde o transparentní sdílení souborů MS DOSu Unixovským počítačem, zde je vzhledem k větší obecnosti Unixu problémů výrazně méně. Například každé jméno souboru, přípustné v MS DOSu, je současně přípustné i v Unixu (naopak samozřejmě ne). Pokud jde o formu zpřístupnění DOSovských souborů, vzhledem k filosofii Unixu zde připadá v úvahu pouze připojení systému souborů na některém ze zařízení počítače PC (případně podstromu tohoto systému souborů) pomocí operace mount do některé části stávajícího adresářového stromu Unixovského počítače.
Ta tiskárna je moje !!
Vedle souborů jsou dalším žhavým kandidátem na vzájemné zpřístupnění mezi platformami také různá fyzická zařízení, především pak tiskárny. Máte-li například k Unixovském počítači připojenu výkonnou laserovou tiskárnu s Postscriptem, zcela zákonitě na ní budou chtít tisknout i uživatelé počítačů PC s MS DOSem. Podívejme se proto ještě, v čem se liší pohled obou námi zvolených platforem právě na tiskárny.
V MS DOSu se uživatel, resp. jeho aplikační úloha, může chovat vzhledem k tiskárně velmi sobecky - může si myslet, že ji má jen a jen pro sebe. Tak to ostatně vyplývá z jednoúlohové a jednouživatelské povahy MS DOSu. Kterákoli úloha si tudíž v MS DOSu může dovolit tisknout na tiskárně, kdykoli si vzpomene. Kdyby se ale takto chovaly aplikační programy i v Unixu, dopadlo by to špatně. Výsledný tisk by představoval pěkný "guláš" - výstupy jednotlivých úloh by byly téměř náhodně promíchány, například jedno písmeno od jedná úlohy, pak tři písmena od jiné, další znak zase od jiné úlohy atd. Příčinou je právě víceúlohový charakter Unixu, který jednotlivé úlohy (přesněji: procesy) nechává běžet vždy po určitý časový interval (řádově desítek až stovek milisekund), a pak je vystřídá další úlohou (procesem). Kdyby pak každá úloha posílala svůj výstup na tiskárnu přímo, docházelo by vzhledem ke střídavému běhu jednotlivých úloh i k promíchání jejich výstupů na tiskárnu.
Řešením je technika, označovaná obecně jako spooling. Je založena na myšlence, že jednotlivé úlohy neposílají svůj výstup přímo na tiskárnu, ale nejprve do vhodného souboru (samozřejmě každá do jiného). Teprve v okamžiku, kdy nějaká úloha dokončí svůj výstup na tiskárnu (tj. naplní svůj soubor s výstupními daty), je příslušný soubor přenesen na tiskárnu a skutečně vytištěn. Tuto fázi ale již zajišťuje operační systém, a nikoli úloha sama. Pouze operační systém totiž má potřebný přehled o tom, zda je právě tiskárna používána, a které úlohy na ní chtějí tisknout. Je tedy na operačním systému, aby evidoval jednotlivé požadavky na tisk, přebíral soubory s výstupními daty od jednotlivých úloh, a předával je tiskárně k vytisknutí - což v praxi znamená vést frontu těchto požadavků a řadit do nich jednotlivé soubory.
Co z výše uvedených skutečností vyplývá pro možnost sdílení tiskáren mezi různými platformami? Především to, že když se o jednu tiskárnu mohou ucházet alespoň dva zájemci, je nutné používat techniku spoolingu. A to platí samozřejmě i pro úlohy, které běží pod MS DOSem na počítači PC. Jejich sobeckému přístupu k tiskárně, kterou obvykle považují za své výhradné vlastnictví, lze naštěstí vyhovět technickým řešením. Techniku spoolingu lze totiž v MS DOSu realizovat tak, aby to pro příslušnou úlohu nebylo vůbec viditelné. To již ale úzce souvisí s konkrétním způsobem vzájemného propojení jednotlivých počítačů a způsobem jejich vzájemné komunikace. Ale tím se bude zabývat příští pokračování.