VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:21/93
RoΦnφk:1993
Rubrika/kategorie: Co je Φφm ... v poΦφtaΦov²ch sφtφch
Dφl:65

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

Ji°φ Peterka: Co je Φφm ... v poΦφtaΦov²ch sφtφch (65):

TerminßlovΘ relace a vzdßlenΘ p°ihlaÜovßnφ

V minulΘm dφlu jsme se zaΦali zab²vat celkovou koncepcφ aplikaΦnφch slu₧eb v sφtφch na bßzi TCP/IP a naznaΦili si principy jejich zaΦlen∞nφ do operaΦnφho systΘmu (na p°φkladu Unixu). Dnes se ji₧ m∙₧eme v∞novat prvnφ konkrΘtnφ aplikaci, kterß umo₧≥uje tzv. vzdßlenΘ p°ihlaÜovßnφ. Snad ale neuÜkodφ si nejprve podrobn∞ji naznaΦit, co tato mo₧nost vlastn∞ znamenß a k Φemu ji lze vyu₧φt, a teprve pak se zab²vat tφm, jak je v prost°edφ TCP/IP sφtφ implementovßna.

Mo₧nost vzdßlenΘho p°ihlaÜovanφ (v angliΦtin∞: remote login) ·zce souvisφ s existencφ tzv. terminßlov²ch relacφ (anglicky: terminal sessions). Pro u₧ivatele vφce·lohov²ch operaΦnφch systΘm∙ je to pojem jist∞ dob°e znßm², ale pro mnohΘ u₧ivatele, "odkojenΘ" poΦφtaΦi PC a jedno·lohov²m prost°edφm MS DOSu, m∙₧e p°edstavovat n∞co zcela novΘho a nep°φliÜ "pr∙hlednΘho".

Od dßvkovΘho zpracovßnφ k interaktivnφmu

Historicky nejstarÜφm zp∙sobem vyu₧itφ v²poΦetnφ techniky je dßvkovΘ zpracovßnφ (batch processing), p°i kterΘm u₧ivatel sestavil svou ·lohu, p°edem pro ni p°ipravil veÜkerß jejφ vstupnφ data a vÜe "zabalil" do jednoho celku - tzv. dßvky. Ta pak byla ve vhodnΘ dob∞ provedena. Obvykle byly jednotlivΘ dßvky °azeny do front a ka₧dß dßvka se provedla tehdy, a₧ na ni doÜla °ada. U₧ivatel tedy nebyl v p°φmΘm kontaktu se svou ·lohou, nemohl bezprost°edn∞ reagovat na r∙znΘ situace, ke kter²m p°i provßd∞nφ jeho ·lohy mohlo dochßzet, a nemohl ani jinak interaktivn∞ komunikovat se svou ·lohou. V dob∞, kdy se jeho ·loha skuteΦn∞ zpracovßvala, nemusel v∙bec b²t ve fyzickΘ blφzkosti p°φsluÜnΘho poΦφtaΦe.

Obrat nastal a₧ v okam₧iku, kdy se p°eÜlo na prßci v re₧imu sdφlenφ Φasu. Nynφ se ji₧ na jednom poΦφtaΦi mohlo souΦasn∞ nachßzet vφce ·loh v rozpracovanΘm stavu, a procesor velmi rychle p°echßzel z provßd∞nφ jednΘ ·lohy na provßd∞nφ druhΘ ·lohy, pak t°etφ atd. Dφky tomuto rychlΘmu st°φdßnφ vznikla dostateΦn∞ v∞rnß iluze toho, ₧e procesor se v∞nuje vφce ·lohßm souΦasn∞, tzn. ₧e na jednom poΦφtaΦi b∞₧φ najednou vφce ·loh. Ve skuteΦnosti se avÜak vÜechny tyto ·lohy d∞lily o Φas, kter² v∞noval procesor jejich provßd∞nφ. Jin²mi slovy: jednotlivΘ ·lohy sdφlely Φas procesoru, odsud: re₧im sdφlenφ Φasu (time sharing).

Tφmto zp∙sobem (tj. v re₧imu sdφlenφ Φasu) bylo nadßle mo₧nΘ provozovat ·lohy p°ipravenΘ p°edem ve form∞ dßvek, kterΘ nevy₧adujφ bezprost°ednφ styk se sv²m zadavatelem. Re₧im sdφlenφ Φasu vÜak umo₧nil to, aby u₧ivatelΘ byli v bezprost°ednφm styku se sv²mi ·lohami a mohli s nimi komunikovat interaktivnφm zp∙sobem.

Uka₧me si na konkrΘtnφm p°φkladu, v Φem byl pro u₧ivatele rozdφl. V₧ijme se do role programßtora, kter² opravuje zdrojov² text svΘho programu a mß jej na danΘm poΦφtaΦi ulo₧en jako jeden ze sv²ch soubor∙. V p°φpad∞ dßvkovΘho zpracovßnφ musel tento u₧ivatel p°edem p°ipravit p°φkazy pro opravu vÜech chyb ve zdrojovΘm programu stylem: "na °ßdce XY zm∞≥ °et∞zec ABCD na EFGH", p°idat jeÜt∞ p°φkaz pro nov² p°eklad zdrojovΘho textu, sestavit z t∞chto p°φkaz∙ dßvku, a tu zadat k provedenφ. Druh² den si p°iÜel pro v²sledek, zjistil novΘ chyby a cel² postup se opakoval.

Na poΦφtaΦi pracujφcφm v re₧imu sdφlenφ Φasu m∙₧e nßÜ programßtor pracovat odliÜn²m zp∙sobem. Nejprve zaΦne komunikovat s operaΦnφm systΘmem, jemu₧ zadß p°φkaz ke spuÜt∞nφ interaktivnφho editoru. Jeho prost°ednictvφm pak postupn∞ provede pot°ebnΘ opravy v souboru se zdrojov²m textem, naΦe₧ prßci s editorem ukonΦφ a zaΦne op∞t komunikovat p°φmo s operaΦnφm systΘmem. Tomu zadß p°φkaz k p°ekladu opravenΘho zdrojovΘho textu a nechß si v²sledky tohoto p°ekladu zobrazit. Odhalφ-li p°ekladaΦ dalÜφ chyby ve zdrojovΘm textu, u₧ivatel si znovu zavolß editor a cel² cyklus se opakuje. Tentokrßt vÜak ji₧ s "dobou obrßtky", kterß se m∞°φ spφÜe na minuty ne₧ na celΘ dny, jako u dßvkovΘho zpracovßnφ.

Terminßly a terminßlovΘ relace

Interaktivnφ zp∙sob prßce v systΘmu se sdφlenφm Φasu mß jeden d∙le₧it² p°edpoklad: operaΦnφ systΘm i jednotlivΘ aplikaΦnφ ·lohy pot°ebujφ vhodn² mechanismus komunikace se sv²m u₧ivatelem. Zatφmco v p°φpad∞ dßvkovΘho zpracovßnφ si ·lohy svΘ vstupnφ p°φkazy a data p°ebφraly ze samotnΘ dßvky a svΘ vstupy posφlaly tam, kam jim p°φkazy v dßvce p°ikazovaly (obvykle do v²stupnφch soubor∙, ev. na tiskßrnu), v p°φpad∞ interaktivnφ komunikace Φekajφ, a₧ jim u₧ivatel zadß p°φsluÜnΘ p°φkazy Φi jinΘ vstupy ze svΘ klßvesnice, a svΘ v²stupy mu posφlajφ na displej, kde si je u₧ivatel m∙₧e p°eΦφst.

To ale znamenß, ₧e operaΦnφ systΘm i aplikaΦnφ ·loha musφ mφt p°φstup ke klßvesnici a k displeji, kterΘ p°φsluÜn² u₧ivatel pou₧φvß. Navφc, jde-li o vφceu₧ivatelskΘ prost°edφ, kterΘ umo₧≥uje interaktivnφ zp∙sob prßce vφce u₧ivatel∙m souΦasn∞, musφ takov²chto dvojic "klßvesnice a displej" existovat vφce a ka₧dß konkrΘtnφ ·loha musφ v∞d∞t, na kterΘ z nich prßv∞ pracuje ten "jejφ" u₧ivatel.

Zmφn∞nß dvojice "klßvesnice a displej" se obvykle oznaΦuje jako terminßl a Φasto tvo°φ i jeden konstrukΦnφ celek (i kdy₧ to nenφ zdaleka podmφnkou). PoΦφtaΦe s vφceu₧ivatelsk²m operaΦnφm systΘmem, kterΘ pracujφ v re₧imu sdφlenφ Φasu, b²vajφ vybaveny v∞tÜφm poΦtem t∞chto terminßl∙.

Existence vφce ne₧ jednoho terminßlu vÜak znamenß, ₧e operaΦnφ systΘm i jednotlivΘ aplikaΦnφ ·lohy nemohou poΦφtat s tφm, ₧e u₧ivatel s nimi bude komunikovat v₧dy z jednoho a tΘho₧ terminßlu. Naopak je ₧ßdoucφ, aby z pohledu u₧ivatel∙ byly vÜechny terminßly ekvivalentnφ - aby u₧ivatel mohl p°ijφt ke kterΘmukoli z nich, kter² je prßv∞ voln², a pracovat z n∞j p°esnΘ stejn²m zp∙sobem jako z kterΘhokoli jinΘho terminßlu.

Vztah mezi ·lohou, kterß odn∞kud oΦekßvß svΘ vstupy a n∞kam chce posφlat svΘ v²stupy, a konkrΘtnφm terminßlem, ze kterΘho se u₧ivatel rozhodne pracovat, je tedy vztahem, kter² nenφ ß priori a pevn∞ dßn, ale utvß°φ se a₧ v okam₧iku, kdy u₧ivatel "zasedne" k n∞kterΘmu z terminßl∙ a projevφ svΘ p°ßnφ pracovat v operaΦnφm systΘmu.

Toto svΘ p°ßnφ projevuje u₧ivatel tzv. p°ihlßÜenφm (anglicky: login, nebo: logon), kdy na v²zvu operaΦnφho systΘmu zadß svΘ u₧ivatelskΘ jmΘno a svou identitu prokß₧e pot°ebn²m heslem.

P°ihlßÜenφm u₧ivatele do systΘmu z urΦitΘho terminßlu vznikß v²Üe naznaΦen² vztah mezi konkrΘtnφm terminßlem a aplikaΦnφ ·lohou, kter² je oznaΦovßn jako terminßlovß relace. NejlΘpe si ji lze p°edstavit jako abstraktnφ rozhovor, kter² urΦuje, kdo s k²m rozmlouvß. P°ihlßÜenφm u₧ivatele vznikß takovßto terminßlovß relace mezi terminßlem a operaΦnφm systΘmem jako takov²m - p°esn∞ji mezi terminßlem a tou systΘmovou ·lohou, kterß zajiÜ¥uje funkci interpreteru p°φkaz∙ operaΦnφho systΘmu, vysφlß na obrazovku terminßlu nßpov∞dn² znak (tzv. prompt), p°ijφmß od u₧ivatele jeho p°φkazy pro operaΦnφ systΘm, a zajiÜ¥uje jejich provedenφ (v prost°edφ Unixu se takovßto ·loha oznaΦuje jako shell).

P°φkazem, jej₧ u₧ivatel operaΦnφmu systΘmu zadßvß, m∙₧e b²t nap°φklad p°φkaz ke spuÜt∞nφ urΦitΘ aplikace, kterß pak p°ebφrß ji₧ existujφcφ terminßlovou relaci a jejφm prost°ednictvφm komunikuje se sv²m u₧ivatelem. Jde-li nap°φklad o editor, zobrazuje v rßmci terminßlovΘ relace obsah editovanΘho souboru na displeji p°φsluÜnΘho terminßlu a z jeho klßvesnice p°ijφmß svΘ p°φkazy.

V tuto chvφli je vhodnΘ si naÜi postupn∞ krystalizujφcφ p°edstavu terminßlovΘ relace jeÜt∞ pon∞kud poopravit. Nenφ toti₧ zcela p°esnΘ p°edstavovat si, ₧e z jednoho terminßlu je mo₧nΘ z°φdit (n∞kdy se °φkß tΘ₧: otev°φt) nejv²Üe jednu terminßlovou relaci. V principu je mo₧nΘ, aby si u₧ivatel z jednoho terminßlu otev°el vφce relacφ s r∙zn²mi aplikacemi, Φi dokonce s aplikacφ jedinou - nap°φklad aby si v ka₧dΘ jednotlivΘ relaci spustil tent²₧ editor (p°esn∞ji: instanci tΘho₧ editoru) a editoval jin² soubor. V ka₧dΘm okam₧iku jsou sice klßvesnice a displej terminßlu vyhrazeny jen jednΘ relaci - tj. u₧ivatel v₧dy komunikuje jen s jednou ·lohou v rßmci jednΘ relace - ale pomocφ klßvesnice se m∙₧e mezi jednotliv²mi relacemi rychle p°epφnat (obvykle pomocφ n∞jakΘ horkΘ klßvesy). Zßle₧φ jen na tom, zda dan² operaΦnφ systΘm a p°φsluÜn² terminßl vychßzφ tΘto mo₧nosti vst°φc.

DalÜφ zajφmavΘ mo₧nosti se pak otevφrajφ v okam₧iku, kdy do hry vstupujφ vzßjemn∞ propojenΘ poΦφtaΦe a poΦφtaΦovΘ sφt∞.

VzdßlenΘ terminßlovΘ relace

A₧ doposud jsme mlΦky p°edpoklßdali, ₧e terminßlovß relace se otevφrß mezi ·lohami b∞₧φcφmi na urΦitΘm poΦφtaΦi a konkrΘtnφm terminßlem, kter² je k tomuto poΦφtaΦi p°ipojen. Ve skuteΦnosti vÜak jde jen o jednu z mo₧nostφ, kterß se neformßln∞ oznaΦuje jako "lokßlnφ" Φi "mφstnφ" terminßlovß relace. Jejφm charakteristick²m rysem je skuteΦnost, ₧e v nφ vystupuje terminßl p°φmo p°ipojen² k danΘmu poΦφtaΦi. Nenφ p°itom podstatnΘ zda je toto p°ipojenφ realizovßno krßtk²m kabelem (terminßl se nachßzφ ve fyzickΘ blφzkosti poΦφtaΦe), nebo zda je pro p°ipojenφ terminßlu vyu₧it nap°φklad pevn² telefonnφ okruh (vlastnφ terminßl se nachßzφ na druhΘm konci m∞sta).

Obrßzek 65.1.
Obr. 65.1: VzdßlenΘ vs. lokßlnφ terminßlovΘ relace
Jinß situace nastßvß v p°φpad∞ poΦφtaΦ∙ vzßjemn∞ propojen²ch prost°ednictvφm poΦφtaΦovΘ sφt∞. Zde je toti₧ mo₧nΘ realizovat tzv. vzdßlenΘ terminßlovΘ relace (remote terminal session), p°i kter²ch vznikß terminßlovß relace ve v²Üe uvedenΘm smyslu mezi terminßlem jednoho poΦφtaΦe, a ·lohou b∞₧φcφ na jinΘm poΦφtaΦi. P°edstavme si - v souladu s obrßzkem 65.1 - uzlovΘ poΦφtaΦe A a B a jejich terminßly Ta a Tb. U₧ivatel poΦφtaΦe A, kter² pracuje u terminßlu Ta, se nejprve p°ihlßsφ do systΘmu na poΦφtaΦi A (tj. provede tzv. login). Tφm vytvo°φ "lokßlnφ" terminßlovou relaci mezi terminßlem Ta a poΦφtaΦem A a v rßmci tßto relace bude komunikovat s interpreterem p°φkaz∙ operaΦnφho systΘmu poΦφtaΦe A (na obrazovce se mu tedy objevφ nßpov∞dn² znak - tzv. prompt - operaΦnφho systΘmu poΦφtaΦe A). U₧ivatel
Obrßzek 65.2.
Obr. 65.2: P°edstava realizace vzdßlenΘ terminßlovΘ relace
vÜak zadß p°φkaz ke spuÜt∞nφ zvlßÜtnφ aplikaΦnφ ·lohy (°φkejme jφ pracovn∞ "·loha telnet"), kterß zajistφ nßsledujφcφ v∞ci: nejprve navß₧e spojenφ s poΦφtaΦem B (obecn∞ s tφm poΦφtaΦem, kter² jφ u₧ivatel zadß) a pak z°φdφ terminßlovou relaci mezi terminßlem Ta a poΦφtaΦem B. P°esn∞ji: mezi terminßlem Ta a interpreterem p°φkaz∙ operaΦnφho systΘmu poΦφtaΦe B. V rßmci tΘto terminßlovΘ relace, kterß si ji₧ zaslou₧φ p°φvlastek "vzdßlenß", se veÜkerΘ vstupy z klßvesnice terminßlu Ta dostßvajφ nejprve k "·loze telnet" na poΦφtaΦi A, ale ta je ihned odesφlß na poΦφtaΦ B, kde p°φsluÜnß data vystupujφ ve stejnΘ roli jako vstupy z kterΘhokoli "mφstnφho" terminßlu. Naopak veÜkerΘ v²stupy, kterΘ jsou v rßmci tΘto relace generovßny, jsou odesφlßny na poΦφtaΦ A, kde je p°ijφmß "·loha telnet" a zajiÜ¥uje jejich okam₧itΘ zobrazenφ na displeji terminßlu Ta (viz obr. 65.2).

Terminßl Ta fyzicky p°ipojen² k poΦφtaΦi A se tak zaΦne chovat jako terminßl p°φmo p°ipojen² k poΦφtaΦi B. Na displeji terminßlu se nejprve zobrazφ nßpov∞dn² znak (prompt) interpreteru p°φkaz∙ poΦφtaΦe B a u₧ivatel pak m∙₧e z terminßlu Ta zadßvat p°φkazy operaΦnφmu systΘmu na poΦφtaΦi B. Nejprve se tedy p°ihlßsφ do systΘmu na poΦφtaΦi B (provΘst tzv. vzdßlenΘ p°ihlßÜenφ, angl.: remote login) a pak si nap°φklad spustφ n∞jakou aplikaΦnφ ·lohu. Ta "pob∞₧φ" na poΦφtaΦi B, ale svΘ vstupy bude oΦekßvat z terminßlu Ta, a jejφ v²stupy se budou zobrazovat na displeji terminßlu Ta. U₧ivatel, kter² sedφ u terminßlu Ta, tak bude mφt stejnΘ postavenφ a stejnΘ mo₧nosti prßce na poΦφtaΦi B, jako kdyby sed∞l p°φmo u terminßlu Tb tohoto poΦφtaΦe.

K ocen∞nφ v²hodnosti a u₧iteΦnosti vzdßlen²ch terminßlov²ch relacφ a vzdßlenΘho p°ihlaÜovßnφ snad zb²vß dodat jen jedinΘ: je vcelku lhostejnΘ, zda se poΦφtaΦe A a B nalΘzajφ blφzko sebe nebo zda jsou nap°φklad ka₧d² v jinΘm m∞st∞ Φi na jinΘm kontinent∞. Jedinou podmφnkou pro mo₧nost vzdßlenΘho p°ihlaÜovßnφ je vhodnΘ propojenφ obou poΦφtaΦ∙ a pak takΘ softwarovß podpora vzdßlen²ch terminßlov²ch relacφ. V p°φpad∞ poΦφtaΦov²ch sφtφ je pot°ebnΘ spojenφ ·kolem ni₧Üφch vrstev a podpora vzdßlen²ch terminßlov²ch relacφ je jednou z aplikaΦnφch slu₧eb. O tom, jak jsou vzdßlenΘ terminßlovΘ relace konkrΘtn∞ realizovßny v sφtφch na bßzi TCP/IP, si povφme p°φÜt∞.


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ dφl | nßsledujφcφ dφl
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