VyÜlo v t²denφku: CHIPweek
╚φslo:10/96
Datum:5. b°ezna 1996
Strana:25
Rubrika/kategorie: Principy poΦφtaΦov²ch sφtφ
Modul: V²voj v²poΦetnφho modelu
Dφl:8

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

X Window System

V dneÜnφm dφlu si popφÜeme jedno zajφmavΘ °eÜenφ, kterΘ je mo₧nΘ pova₧ovat bu∩ za jednu konkrΘtnφ implementaci modelu klient/server, nebo za n∞co p°esn∞ obrßcenΘho, co vzßjemn∞ zam∞≥uje role klienta a serveru. Nev∞°φte?

Jednou za zßkladnφch premis modelu klient/server je p°edpoklad, ₧e dostupnß p°enosovß kapacita je relativn∞ malß a vzßcnß, a je tudφ₧ t°eba s nφ Üet°it. Bezprost°ednφm d∙sledkem toho je pak snaha minimalizovat p°enosy dat mezi jednotliv²mi uzlov²mi poΦφtaΦi, Φeho₧ se dosahuje zpracovßnφm dat v mφst∞, kde se tato data nachßzφ. P°enßÜeny jsou pak jen po₧adavky na urΦit² druh zpracovßnφ, a dßle ji₧ jen jeho v²sledky. V²poΦetnφ model klient/server, ke kterΘmu jsme dosp∞li minule, vÜak nenφ jedin²m mo₧n²m vy·st∞nφm zmφn∞nΘ premisy - existuje dokonce celß Ükßla r∙zn²ch °eÜenφ, kterΘ takΘ vychßzφ ze stejnΘho p°edpokladu a sna₧φ se jej naplnit, ale sledujφ p°itom i svΘ dalÜφ specifickΘ pot°eby, a od modelu klient/server se mohou liÜit jen velmi mßlo, nebo takΘ dosti podstatn∞ - zejmΘna v tom, jakß je role a jakΘ je postavenφ jednotliv²ch slo₧ek celΘho vzßjemn∞ spolupracujφcφho systΘmu. Na jednΘ stran∞ spektra p°itom stojφ takovß °eÜenφ, kterß poΦφtajφ s existencφ a se stejnou d∞lbou prßce jako p∙vodnφ model klient/server, a v zßsad∞ se tedy od n∞j p°φliÜ neliÜφ (resp. Je mo₧nΘ je pova₧ovat za konkrΘtnφ zp∙sob aplikace modelu klient/server). P°φkladem m∙₧e b²t koncepce systΘmu X Window System, kterou si dnes popφÜeme. Uprost°ed spektra mo₧n²ch °eÜenφ pak jsou takovß °eÜenφ, kterß mφsto s interakcφ stylem 1:1 (jako v p°φpad∞ klienta a serveru) poΦφtajφ spφÜe s interakcφ 1:n, stßle p°edpoklßdajφ urΦitΘ specifickΘ zam∞°enφ jednotliv²ch slo₧ek, ale ji₧ poΦφtajφ s pon∞kud jinou d∞lbou prßce ne₧ jen p∙vodnφ poskytovßnφ slu₧eb (serverem) a jejich vyu₧φvßnφ (klientem). P°φkladem m∙₧e b²t koncepce, pou₧φvanß v oblasti sprßvy sφtφ (zejmΘna v implementacφch protokolu SNMP), a oznaΦovanß neformßln∞ jako agent/mana₧er. No a na druhΘm konci spektra pak jsou pln∞ distribuovanΘ systΘmy, p°edpoklßdajφcφ vzßjemnou spoluprßci n vφcemΘn∞ rovnoprßvn²ch slo₧ek. Toto si ale ji₧ nechßme na p°φÜt∞.

Klient/server naruby?

Obrßzek 1.
P°edstava systΘmu X Window (redirectoru, shellu)
KoncepΦn∞ velmi zajφmavß myÜlenka se objevila u systΘmu X Window, vyvinutΘho na presti₧nφ univerzit∞ MIT (Massachussets Institute of Technology). Cφlem p°itom bylo vy°eÜit problΘm se zobrazovßnφm grafick²ch v²stup∙ na rastrov²ch displejφch v sφ¥ovΘm prost°edφ, kde äv²konnß" Φßst provozovan²ch aplikacφ obvykle (ale ne nutn∞) b∞₧φ na jinΘm uzlu, ne₧ na kterΘm pracuje u₧ivatel a cht∞l by s touto aplikacφ komunikovat. Na prvnφ pohled tato situace m∙₧e p°ipomφnat centrßlnφ hostitelskΘ poΦφtaΦe s jejich terminßly a v²poΦetnφm modelem host/terminßl, ale je zde jedna velmi v²znamnß odliÜnost - zatφmco zde je po₧adovßn grafick² re₧im zobrazovßnφ, v p°φpad∞ modelu host/terminßl se prakticky v₧dy pracuje ve znakovΘm re₧imu (tj. v²stupy jsou generovßny po cel²ch znacφch, a nikoli v rastrovΘ grafice). Jestli₧e se pak mezi hostitelsk²m poΦφtaΦem a terminßlem posφlajφ data pot°ebnß pro aktualizaci obrazovky, pak jde o k≤dy jednotliv²ch znak∙, a jejich objem je relativn∞ velmi mal². Pokud by se ale v rßmci modelu host/terminßl p°eÜlo na grafick² re₧im zobrazovßnφ, objem p°enßÜen²ch dat by nßhle enormn∞ stoupnul. Jen pro p°edstavu: zaplnit ve znakovΘm re₧imu celou obrazovku o 25 °ßdcφch po 80 znacφch, p°i äspot°eb∞" jednoho bytu na znak, vy₧aduje p°enos 25 x 80, resp. 2000 byt∙. V grafickΘm re₧imu, p°i rozliÜenφ 640 x 480 a 256 barvßch na ka₧d² pixel (tj. p°i äspot°eb∞" 1 bytu na ka₧d² pixel), to obnßÜφ ji₧ 307 200 byt∙! Tedy zv²Üenφ vφce ne₧ 150-nßsobnΘ!

SystΘm X Window, jak u₧ jeho nßzev napovφdß, usiluje o vytvß°enφ u₧ivatelskΘho rozhranφ äokennφho" typu, samoz°ejm∞ v grafickΘm re₧imu. Aby se vÜak vyhnul ne·nosn∞ velk²m p°enos∙m grafick²ch dat, sna₧φ se za°φdit v∞ci tak, aby ävelkß" grafickß data pot°ebnß pro rastrovou grafiku byla generovßna p°φmo v mφst∞ kde budou zobrazovßna, a nikoli tam kde vznikß popud k jejich zobrazenφ. Usiluje tedy o to, aby po dostupn²ch p°enosov²ch cestßch byly p°enßÜeny pouze pokyny, povely Φi jinΘ druhy p°φkaz∙ specifikujφcφch co mß b²t zobrazeno, a nikoli vlastnφ data p°edstavujφcφ ji₧ hotov² rastrov² obrßzek. D∙sledkem je pak nutnß d∞lba prßce - vedle aplikace, kterß zadßvß popud k zobrazenφ a kterß m∙₧e b∞₧et v zßsad∞ kdekoli v rßmci sφt∞, musφ existovat jeÜt∞ dalÜφ slo₧ka, provozovanß p°φmo v mφst∞ kde dochßzφ k zobrazovßnφ - tedy na u₧ivatelov∞ poΦφtaΦi. Velmi zajφmavΘ je pojmenovßnφ t∞chto slo₧ek: ta, kterß se starß o zobrazovßnφ, vlastn∞ poskytuje tuto svou schopnost jako slu₧bu tomu, kdo k zobrazenφ zadßvß popud. Tak₧e je asi na mφst∞ hovo°it o serveru, konkrΘtn∞ o X serveru. Druhß slo₧ka, tedy ta kterß zadßvß popud k zobrazenφ, pak slu₧eb X serveru vyu₧φvß, a je tedy sprßvnΘ ji oznaΦovat jako klienta (X klienta).

Nynφ si to zkusme zrekapitulovat: p°edstavme si n∞jakou aplikaci, nap°φklad databßzovΘho charakteru, kterß b∞₧φ na urΦitΘm uzlovΘm poΦφtaΦi - tato aplikace bude v rßmci systΘmu X Window vystupovat v roli klienta (X klienta). Naproti tomu na poΦφtaΦi u₧ivatele bude muset b∞₧et slo₧ka zajiÜ¥ujφcφ zobrazovßnφ, vystupujφcφ v roli X serveru. Kdykoli bude aplikace (X klient) pot°ebovat svΘmu u₧ivateli n∞co zobrazit, po₧ßdß o to X server na jeho poΦφtaΦi, neboli poÜle tomuto serveru sv∙j po₧adavek na zobrazenφ. Naproti tomu X server informuje svΘho klienta o vÜech vstupech od u₧ivatele - zejmΘna o vÜech znacφch zadan²ch z klßvesnice, a o vÜech pohybech a kliknutφch myÜφ.

Nenφ ale prßv∞ popsan² vztah X klienta a X serveru p°esn∞ opaΦn², ne₧ jak² jsme a₧ dosud p°edpoklßdali u modelu klient/server? Ano, i ne. Je p°esn∞ opaΦn² v tom, ₧e aplikace zajiÜ¥ujφ urΦitou specifickou funkΦnost je zde v postavenφ klienta, zatφmco v modelu klient/server b²vß v postavenφ poskytovatele slu₧by, neboli serveru. Mohlo by se tedy zdßt, ₧e zde doÜlo k urΦitΘmu p°evrßcenφ rolφ oproti klasickΘmu modelu klient/server. Na druhΘ stran∞ je ale mo₧nΘ dolo₧it i tvrzenφ, ₧e k ₧ßdnΘmu obrßcenφ rolφ nedoÜlo: v₧dy¥ poskytovanou slu₧bou je zde p°eci zobrazovßnφ na u₧ivatelov∞ displeji a sb∞r vstup∙ od n∞j! No a ten, kdo tuto slu₧bu poskytuje, je serverem, zatφmco ten kdo ji vyu₧φvß je jeho klientem!

X Window

O historii a dalÜφch zajφmavostech kolem systΘmu X Window se m∙₧ete doΦφst takΘ v dneÜnφm dφlu rubriky äCo to znamenß, kdy₧ se °ekne ....", na stran∞ 33. Zde si jen ve struΦnosti °ekn∞me konkrΘtn∞jÜφho o technickΘ strßnce. X Window System je jednak ucelenß p°edstava o rozd∞lenφ rolφ a p∙sobnostφ v tom smyslu, v jakΘm jsme si ji prßv∞ popsali. Krom∞ toho je souΦßstφ X Window System i komunikaΦnφ protokol, prost°ednictvφm kterΘho si spolu äpovφdajφ" X klient a X server. Tento protokol je p°itom protokolem aplikaΦnφ ·rovn∞, provozovan²m nad takov²m transportnφm protokolem, jak² je v danΘ sφti k dispozici. Dφky tomu je mo₧nΘ provozovat °eÜenφ na bßzi systΘmu X Window v zßsad∞ kdekoli, v jakΘkoli sφti nabφzejφcφ obvyklΘ transportnφ slu₧by rozumn∞ - nejΦast∞ji z°ejm∞ v sφtφch na bßzi TCP/IP. Dφky tomu, ₧e se mezi X serverem a jeho klientem p°enßÜφ pouze pokyny k provedenφ r∙zn²ch grafick²ch operacφ, a tudφ₧ relativn∞ velmi malΘ objemy dat, neb²vajφ nßroky na p°enosovou kapacitu sφt∞ p°φliÜ velkΘ.

Co naopak nenφ souΦßstφ systΘmu X Window je p°edstava o tom, jak by m∞lo vypadat grafickΘ u₧ivatelskΘ rozhranφ, p°edklßdanΘ u₧ivateli - co vÜechno by m∞lo obsahovat, jak² by m∞lo mφt celkov² äimage", jakΘ funkce by m∞lo nabφzet atd. To je ponechßno pln∞ na aplikacφch, vystupujφcφch v roli X klient∙. Stejn∞ tak nejsou souΦßstφ systΘmu X Window ₧ßdnΘ tiskovΘ slu₧by Φi jin² druh podpory tisk∙.


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm