GLAVA 13. RASPREDELENNYE SISTEMY
V predydushchej glave nami byli rassmotreny sil'nosvyazannye mnogoprocessor-
nye sistemy s obshchej pamyat'yu, obshchimi strukturami dannyh yadra i obshchim pulom,
iz kotorogo processy vyzyvayutsya na vypolnenie. CHasto, odnako, byvaet zhela-
tel'no v celyah obespecheniya sovmestnogo ispol'zovaniya resursov raspredelyat'
processory takim obrazom, chtoby oni byli avtonomny ot operacionnoj sredy i
uslovij ekspluatacii. Pust', naprimer, pol'zovatelyu personal'noj |VM nuzhno
obratit'sya k fajlam, nahodyashchimsya na bolee krupnoj mashine, no sohranit' pri
etom kontrol' nad personal'noj |VM. Nesmotrya na to, chto otdel'nye programmy,
takie kak uucp, podderzhivayut peredachu fajlov po seti i drugie setevye funk-
cii, ih ispol'zovanie ne budet skryto ot pol'zovatelya, poskol'ku pol'zova-
tel' znaet o tom, chto on rabotaet v seti. Krome togo, nado zametit', chto
programmy, podobnye tekstovym redaktoram, s udalennymi fajlami, kak s obych-
nymi, ne rabotayut. Pol'zovateli dolzhny raspolagat' standartnym naborom funk-
cij sistemy UNIX i, za isklyucheniem vozmozhnoj poteri v bystrodejstvii, ne
dolzhny oshchushchat' peresecheniya mashinnyh granic. Tak, naprimer, rabota sistemnyh
funkcij open i read s fajlami na udalennyh mashinah ne dolzhna otlichat'sya ot
ih raboty s fajlami, prinadlezhashchimi lokal'nym sistemam.
Arhitektura raspredelennoj sistemy predstavlena na Risunke 13.1. Kazhdyj
komp'yuter, pokazannyj na risunke, yavlyaetsya avtonomnym modulem, sostoyashchim iz
CP, pamyati i periferijnyh ustrojstv. Sootvetstvie modeli ne narushaetsya dazhe
nesmotrya na to, chto komp'yuter ne raspolagaet lokal'noj fajlovoj sistemoj: on
dolzhen imet' periferijnye ustrojstva dlya svyazi s drugimi mashinami, a vse
prinadlezhashchie emu fajly mogut raspolagat'sya i na inom komp'yutere. Fizicheskaya
pamyat', dostupnaya kazhdoj mashine, ne zavisit ot processov, vypolnyaemyh na
drugih mashinah. |toj osobennost'yu raspredelennye sistemy otlichayutsya ot sil'-
nosvyazannyh mnogoprocessornyh sistem, rassmotrennyh v predydushchej glave. So-
otvetstvenno, i yadro
+-----------------------------+ +-----------------------------+
| +------------+ | | +------------+ |
| | Processory | | | | Processory | |
| +-----+------+ | | +-----+------+ |
| ----+-------+------+------- | | ----+-------+------+------- |
| +---+----+ +-------+------+ | | +---+----+ +-------+------+ |
| | Pamyat' | | Periferijnye | | | | Pamyat' | | Periferijnye | |
| | | | ustrojstva | | | | | | ustrojstva | |
| +--------+ +--------------+ +-++-+ +--------+ +--------------+ |
+-----------------------------+ ++ +-----------------------------+
|
+-------------+---------------+
| +------------+ |
| | Processory | |
| +-----+------+ |
| ----+-------+------+------- |
| +---+----+ +-------+------+ |
| | Pamyat' | | Periferijnye | |
| | | | ustrojstva | |
| +--------+ +--------------+ |
+-----------------------------+
Risunok 13.1. Model' sistemy s raspredelennoj arhitekturoj
381
sistemy na kazhdoj mashine funkcioniruet nezavisimo ot vneshnih uslovij eksplu-
atacii raspredelennoj sredy.
Raspredelennye sistemy, horosho opisannye v literature, tradicionno de-
lyatsya na sleduyushchie kategorii:
* periferijnye sistemy, predstavlyayushchie soboj gruppy mashin, otlichayushchihsya
yarkovyrazhennoj obshchnost'yu i svyazannyh s odnoj (obychno bolee krupnoj) ma-
shinoj. Periferijnye processory delyat svoyu nagruzku s central'nym proces-
sorom i pereadresovyvayut emu vse obrashcheniya k operacionnoj sisteme. Cel'
periferijnoj sistemy sostoit v uvelichenii obshchej proizvoditel'nosti seti
i v predostavlenii vozmozhnosti vydeleniya processora odnomu processu v
operacionnoj srede UNIX. Sistema zapuskaetsya kak otdel'nyj modul'; v ot-
lichie ot drugih modelej raspredelennyh sistem, periferijnye sistemy ne
obladayut real'noj avtonomiej, za isklyucheniem sluchaev, svyazannyh s dis-
petcherizaciej processov i raspredeleniem lokal'noj pamyati.
* raspredelennye sistemy tipa "Newcastle", pozvolyayushchie osushchestvlyat' dis-
tancionnuyu svyaz' po imenam udalennyh fajlov v biblioteke (nazvanie vzyato
iz stat'i "The Newcastle Connection" - sm. [Brownbridge 82]). Udalennye
fajly imeyut specifikaciyu (sostavnoe imya), kotoraya v ukazanii puti poiska
soderzhit special'nye simvoly ili dopolnitel'nuyu komponentu imeni, pred-
shestvuyushchuyu kornyu fajlovoj sistemy. Realizaciya etogo metoda ne predpola-
gaet vneseniya izmenenij v yadro sistemy, vsledstvie etogo on bolee prost,
chem drugie metody, rassmatrivaemye v etoj glave, no menee gibok.
* absolyutno "prozrachnye" raspredelennye sistemy, v kotoryh dlya obrashcheniya k
fajlam, raspolozhennym na drugih mashinah, dostatochno ukazaniya ih standar-
tnyh sostavnyh imen; raspoznavanie etih fajlov kak udalennyh vhodit v
obyazannosti yadra. Marshruty poiska fajlov, ukazannye v ih sostavnyh ime-
nah, peresekayut mashinnye granicy v tochkah montirovaniya, skol'ko by takih
tochek ni bylo sformirovano pri montirovanii fajlovyh sistem na diskah.
V nastoyashchej glave my rassmotrim arhitekturu kazhdoj modeli; vse privodi-
mye svedeniya baziruyutsya ne na rezul'tatah konkretnyh razrabotok, a na infor-
macii, publikovavshejsya v razlichnyh tehnicheskih stat'yah. Pri etom predpolaga-
etsya, chto zabota ob adresacii, marshrutizacii, upravlenii potokami, obnaruzhe-
nii i ispravlenii oshibok vozlagaetsya na moduli protokolov i drajvery ustroj-
stv, drugimi slovami, chto kazhdaya model' ne zavisit ot ispol'zuemoj seti.
Primery ispol'zovaniya sistemnyh funkcij, privodimye v sleduyushchem razdele dlya
periferijnyh sistem, rabotayut analogichnym obrazom i dlya sistem tipa
Newcastle i dlya absolyutno "prozrachnyh" sistem, o kotoryh pojdet rech' pozzhe;
poetomu v detalyah my ih rassmotrim odin raz, a v razdelah, posvyashchennyh dru-
gim tipam sistem, ostanovimsya v osnovnom na osobennostyah, otlichayushchih eti mo-
deli ot vseh ostal'nyh.
13.1 PERIFERIJNYE PROCESSORY
Arhitektura periferijnoj sistemy pokazana na Risunke 13.2. Cel' takoj
konfiguracii sostoit v povyshenii obshchej proizvoditel'nosti seti za schet pere-
raspredeleniya vypolnyaemyh processov mezhdu central'nym i periferijnymi pro-
cessorami. U kazhdogo iz periferijnyh processorov net v rasporyazhenii drugih
lokal'nyh periferijnyh ustrojstv, krome teh, kotorye emu nuzhny dlya svyazi s
central'nym processorom. Fajlovaya sistema i vse ustrojstva nahodyatsya v ras-
poryazhenii central'nogo processora. Predpolozhim, chto vse pol'zovatel'skie
processy ispolnyayutsya na periferijnom processore i mezhdu periferijnymi pro-
cessorami ne peremeshchayutsya; buduchi odnazhdy peredany processoru, oni prebyvayut
na nem do momenta zaversheniya. Periferijnyj processor soderzhit oblegchennyj
variant operacionnoj sistemy, prednaznachennyj dlya obrabotki lokal'nyh obra-
shchenij k sisteme, upravleniya preryvaniyami, raspredeleniya pamyati, raboty s se-
tevymi protokolami i s drajverom ustrojstva svyazi s central'nym processorom.
382
Pri inicializacii sistemy na central'nom processore yadro po liniyam svyazi
zagruzhaet na kazhdom iz periferijnyh processorov lokal'nuyu operacionnuyu sis-
temu. Lyuboj vypolnyaemyj na periferii process svyazan s processom-sputnikom,
prinadlezhashchim central'nomu processoru (sm. [Birrell 84]); kogda process,
protekayushchij na periferijnom processore, vyzyvaet sistemnuyu funkciyu, kotoraya
nuzhdaetsya v uslugah isklyuchitel'no central'nogo processora, periferijnyj pro-
cess svyazyvaetsya so svoim sputnikom i zapros postupaet na obrabotku na cent-
ral'nyj processor. Process-sputnik ispolnyaet sistemnuyu funkciyu i posylaet
rezul'taty obratno na periferijnyj processor. Vzaimootnosheniya periferijnogo
processa so svoim sputnikom pohozhi na otnosheniya klienta i servera, podrobno
rassmotrennye nami v glave 11: periferijnyj process vystupaet klientom svoe-
go sputnika, podderzhivayushchego funkcii raboty s fajlovoj sistemoj. Pri etom
udalennyj process-server imeet tol'ko odnogo klienta. V razdele 13.4 my ras-
smotrim processy-servery, imeyushchie neskol'ko klientov.
Central'nyj processor Periferijnyj processor
+-----------------------------+ +-----------------------------+
| +------------+ | | +------------+ |
| | Processory | | | | Processory | |
| +-----+------+ | | +-----+------+ |
| ----+-------+------+------- | | ----+-------+-------------- |
| +---+----+ +-------+------+ | | +---+----+ |
| | Pamyat' | | Periferijnye | | | | Pamyat' | |
| | | | ustrojstva | | | | | |
| +--------+ +--------------+ +-++-+ +--------+ |
+-----------------------------+ ++ +-----------------------------+
|
+-------------+---------------+
| +------------+ |
Periferijnyj | | Processory | |
processor | +-----+------+ |
| ----+-------+-------------- |
| +---+----+ |
| | Pamyat' | |
| | | |
| +--------+ |
+-----------------------------+
Risunok 13.2. Konfiguraciya periferijnoj sistemy
Kogda periferijnyj process vyzyvaet sistemnuyu funkciyu, kotoruyu mozhno ob-
rabotat' lokal'no, yadru net nadobnosti posylat' zapros processu-sputniku.
Tak, naprimer, v celyah polucheniya dopolnitel'noj pamyati process mozhet vyzvat'
dlya lokal'nogo ispolneniya funkciyu sbrk. Odnako, esli trebuyutsya uslugi cent-
ral'nogo processora, naprimer, chtoby otkryt' fajl, yadro kodiruet informaciyu
o peredavaemyh vyzvannoj funkcii parametrah i usloviyah vypolneniya processa v
nekoe soobshchenie, posylaemoe processu-sputniku (Risunok 13.3). Soobshchenie
vklyuchaet v sebya priznak, iz kotorogo sleduet, chto sistemnaya funkciya vypolnya-
etsya processom-sputnikom ot imeni klienta, peredavaemye funkcii parametry i
dannye o srede vypolneniya processa (naprimer, pol'zovatel'skij i gruppovoj
kody identifikacii), kotorye dlya raznyh funkcij razlichny. Ostavshayasya chast'
soobshcheniya predstavlyaet soboj dannye peremennoj dliny (naprimer, sostavnoe
imya fajla ili dannye, prednaznachennye dlya zapisi funkciej write).
Process-sputnik zhdet postupleniya zaprosov ot periferijnogo processa; pri
poluchenii zaprosa on dekodiruet soobshchenie, opredelyaet tip sistemnoj funkcii,
ispolnyaet ee i preobrazuet rezul'taty v otvet, posylaemyj periferijnomu pro-
cessu. Otvet, pomimo rezul'tatov vypolneniya sistemnoj funkcii, vklyuchaet v
sebya soobshchenie ob
383
Format soobshcheniya
+----------------+----------+---------------+--------------------+
| Priznak vyzova |Parametry |Dannye o srede | Sostavnoe imya |
| sistemnoj funk-|sistemnoj |vypolneniya pro-|------- ili ------|
| cii |funkcii |cessa | potok dannyh |
+----------------+----------+---------------+--------------------+
Otvet
+------------+-----------+---------+---------------------+
| Rezul'taty | Soobshchenie | Nomer | |
| vypolneniya | ob oshibke | signala |---- Potok dannyh ---|
| sistemnoj | | | |
| funkcii | | | |
+------------+-----------+---------+---------------------+
Risunok 13.3. Formaty soobshchenij
oshibke (esli ona imela mesto), nomer signala i massiv dannyh peremennoj dli-
ny, soderzhashchij, naprimer, informaciyu, prochitannuyu iz fajla. Periferijnyj
process priostanavlivaetsya do polucheniya otveta, poluchiv ego, proizvodit ras-
shifrovku i peredaet rezul'taty pol'zovatelyu. Takova obshchaya shema obrabotki
obrashchenij k operacionnoj sisteme; teper' perejdem k bolee detal'nomu rass-
motreniyu otdel'nyh funkcij.
Dlya togo, chtoby ob座asnit', kakim obrazom rabotaet periferijnaya sistema,
rassmotrim ryad funkcij: getppid, open, write, fork, exit i signal. Funkciya
getppid dovol'no prosta, poskol'ku ona svyazana s prostymi formami zaprosa i
otveta, kotorymi obmenivayutsya periferijnyj i central'nyj processory. YAdro na
periferijnom processore formiruet soobshchenie, imeyushchee priznak, iz kotorogo
sleduet, chto zaprashivaemoj funkciej yavlyaetsya funkciya getppid, i posylaet
zapros central'nomu processoru. Process-sputnik na central'nom processore
chitaet soobshchenie s periferijnogo processora, rasshifrovyvaet tip sistemnoj
funkcii, ispolnyaet ee i poluchaet identifikator svoego roditelya. Zatem on
formiruet otvet i peredaet ego periferijnomu processu, nahodyashchemusya v sosto-
yanii ozhidaniya na drugom konce linii svyazi. Kogda periferijnyj processor po-
luchaet otvet, on peredaet ego processu, vyzvavshemu sistemnuyu funkciyu
getppid. Esli zhe periferijnyj process hranit dannye (takie, kak identifika-
tor processa-roditelya) v lokal'noj pamyati, emu voobshche ne pridetsya svyazyvat'-
sya so svoim sputnikom.
Esli proizvoditsya obrashchenie k sistemnoj funkcii open, periferijnyj pro-
cess posylaet svoemu sputniku sootvetstvuyushchee soobshchenie, kotoroe vklyuchaet
imya fajla i drugie parametry. V sluchae uspeha process-sputnik vydelyaet in-
deks i tochku vhoda v tablicu fajlov, otvodit zapis' v tablice pol'zovatel'-
skih deskriptorov fajla v svoem prostranstve i vozvrashchaet deskriptor fajla
periferijnomu processu. Vse eto vremya na drugom konce linii svyazi periferij-
nyj process zhdet otveta. U nego v rasporyazhenii net nikakih struktur, kotorye
hranili by informaciyu ob otkryvaemom fajle; vozvrashchaemyj funkciej open desk-
riptor predstavlyaet soboj ukazatel' na zapis' v tablice pol'zovatel'skih
deskriptorov fajla, prinadlezhashchej processu-sputniku. Rezul'taty vypolneniya
funkcii pokazany na Risunke 13.4.
Esli proizvoditsya obrashchenie k sistemnoj funkcii write, periferijnyj pro-
cessor formiruet soobshchenie, sostoyashchee iz priznaka funkcii write, deskriptora
fajla i ob容ma zapisyvaemyh dannyh. Zatem iz prostranstva periferijnogo pro-
cessa on po linii svyazi kopiruet dannye processu-sputniku. Process-sputnik
rasshifrovyvaet poluchennoe soobshchenie, chitaet dannye iz linii svyazi i zapisy-
vaet ih v sootvetstvuyushchij fajl (v kachestve ukazatelya na indeks kotorogo i
zapis' o kotorom v tablice fajlov ispol'zuetsya soderzhashchijsya v soobshchenii des-
kriptor); vse ukazannye dejstviya vypolnyayutsya na central'nom processore. Po
384
Central'nyj processor Periferijnyj processor
+--------------------------------------+ +---------------------+
| tablica | | |
| pol'zo- | | |
| vatel'- | | |
| skih | | |
| deskrip- | | |
| tablica tablica torov | | |
| indeksov fajlov fajla +--------+| | +---------+ |
| +-----+ +-----+ +-----+ |Process-|----------| Process | |
| | | | | | | |sputnik || | +---------+ |
| +-----+ +-----+ +-----+ +-+------+| | |
| | -+-+ | | ++- -+---+ | | |
| +-----+ | +-----+ |+-----+ deskrip- | | |
| | | +-+- -+-+| | tor fajla | | |
| +-----+ +-----+ +-----+ | | |
| | | | | | | |
| +-----+ +-----+ | | |
| | | | | | | |
| +-----+ +-----+ | | |
+--------------------------------------+ +---------------------+
Risunok 13.4. Vyzov funkcii open iz periferijnogo processa
okonchanii raboty process-sputnik peredaet periferijnomu processu posylku,
podtverzhdayushchuyu priem soobshcheniya i soderzhashchuyu kolichestvo bajt dannyh, uspeshno
perepisannyh v fajl. Operaciya read vypolnyaetsya analogichno; sputnik informi-
ruet periferijnyj process o kolichestve real'no prochitannyh bajt (v sluchae
chteniya dannyh s terminala ili iz kanala eto kolichestvo ne vsegda sovpadaet s
kolichestvom, ukazannym v zaprose). Dlya vypolneniya kak toj, tak i drugoj fun-
kcii mozhet potrebovat'sya mnogokratnaya peresylka informacionnyh soobshchenij po
seti, chto opredelyaetsya ob容mom peresylaemyh dannyh i razmerami setevyh pake-
tov.
Edinstvennoj funkciej, trebuyushchej vneseniya izmenenij pri rabote na cent-
ral'nom processore, yavlyaetsya sistemnaya funkciya fork. Kogda process ispolnyaet
etu funkciyu na CP, yadro vybiraet dlya nego periferijnyj processor i posylaet
soobshchenie special'nomu processu -serveru, informiruya poslednij o tom, chto
sobiraetsya pristupit' k vygruzke tekushchego processa. Predpolagaya, chto server
prinyal zapros, yadro s pomoshch'yu funkcii fork sozdaet novyj periferijnyj pro-
cess, vydelyaya zapis' v tablice processov i adresnoe prostranstvo. Central'-
nyj processor vygruzhaet kopiyu processa, vyzvavshego funkciyu fork, na perife-
rijnyj processor, zatiraya tol'ko chto vydelennoe adresnoe prostranstvo, po-
rozhdaet lokal'nyj sputnik dlya svyazi s novym periferijnym processom i posyla-
et na periferiyu soobshchenie o neobhodimosti inicializacii schetchika komand dlya
novogo processa. Process-sputnik (na CP) yavlyaetsya potomkom processa, vyzvav-
shego funkciyu fork; periferijnyj process s tehnicheskoj tochki zreniya vystupaet
potomkom processa-servera, no po logike on yavlyaetsya potomkom processa, vyz-
vavshego funkciyu fork. Process-server ne imeet logicheskoj svyazi s potomkom po
zavershenii funkcii fork; edinstvennaya zadacha servera sostoit v okazanii po-
moshchi pri vygruzke potomka. Iz-za sil'noj svyazi mezhdu komponentami sistemy
(periferijnye processory ne raspolagayut avtonomiej) periferijnyj process i
process-sputnik imeyut odin i tot zhe kod identifikacii. Vzaimosvyaz' mezhdu
processami pokazana na Risunke 13.5: nepreryvnoj liniej pokazana svyaz' tipa
"roditel'-potomok", punktirom - svyaz' mezhdu ravnopravnymi partnerami.
Kogda process ispolnyaet funkciyu fork na periferijnom processore, on po-
sylaet soobshchenie svoemu sputniku na CP, kotoryj i ispolnyaet posle etogo vsyu
vysheopisannuyu posledovatel'nost' dejstvij. Sputnik vybiraet novyj periferij-
385
Central'nyj processor Periferijnyj processor
+----------------------+ +----------------------+
| +------------------+ | | +------------------+ |
| | Process-roditel' |-------------| Process-server | |
| +---------+--------+ | | +------------------+ |
| | | | |
| | | | |
| +---------+--------+ | | +------------------+ |
| | Porozhdennyj sput-|-------------| Porozhdennyj pro- | |
| | nik | | | | cess | |
| +------------------+ | | +------------------+ |
+----------------------+ +----------------------+
Risunok 13.5. Vypolnenie funkcii fork na central'nom processore
nyj processor i delaet neobhodimye prigotovleniya k vygruzke obraza starogo
processa: posylaet periferijnomu processu-roditelyu zapros na chtenie ego ob-
raza, v otvet na kotoryj na drugom konce kanala svyazi nachinaetsya peredacha
zaprashivaemyh dannyh. Sputnik schityvaet peredavaemyj obraz i perepisyvaet
ego periferijnomu potomku. Kogda vygruzka obraza zakanchivaetsya, pro-
cess-sputnik ispolnyaet funkciyu fork, sozdavaya svoego potomka na CP, i pere-
daet znachenie schetchika komand periferijnomu potomku, chtoby poslednij znal, s
kakogo adresa nachinat' vypolnenie. Ochevidno, bylo by luchshe, esli by potomok
processa-sputnika naznachalsya periferijnomu potomku v kachestve roditelya, od-
nako v nashem sluchae porozhdennye processy poluchayut vozmozhnost' vypolnyat'sya i
na drugih periferijnyh processorah, a ne tol'ko na tom, na kotorom oni soz-
dany. Vzaimosvyaz' mezhdu processami po zavershenii funkcii fork pokazana na
Risunke 13.6. Kogda periferijnyj process zavershaet svoyu rabotu, on posylaet
sootvetstvuyushchee soobshchenie processu-sputniku i tot tozhe zavershaetsya. Ot pro-
cessa-sputnika iniciativa zaversheniya raboty ishodit' ne mozhet.
Central'nyj processor
+-------------------------------------------------------+
| +------------------+ +-----------------+ |
| | Sputnik-roditel' +----------+ Sputnik-potomok | |
| +------------------+ +-----------------+ |
| - - |
+-------------------------------------------------------+
- -
+---------------------------+ +---------------------------+
| - | | - |
| +-----------------------+ | | +----------------------+ |
| | Periferijnyj roditel' | | | | Periferijnyj potomok | |
| +-----------------------+ | | +----------------------+ |
+---------------------------+ +---------------------------+
Periferijnyj processor Periferijnyj processor
Risunok 13.6. Vypolnenie funkcii fork na periferijnom processore
I v mnogoprocessornoj, i v odnoprocessornoj sistemah process dolzhen rea-
girovat' na signaly odinakovo: process libo zavershaet vypolnenie sistemnoj
funkcii do proverki signalov, libo, naprotiv, poluchiv signal, nezamedlitel'-
no vyhodit iz sostoyaniya priostanova i rezko preryvaet rabotu sistemnoj funk-
cii, esli eto soglasuetsya s prioritetom, s kotorym on byl priostanovlen.
Poskol'ku process-sputnik vypolnyaet sistemnye funkcii ot imeni periferijnogo
processa, on dolzhen reagirovat' na signaly, soglasuya svoi dejstviya s posled-
nim. Esli v odnoprocessornoj sisteme signal zastavlyaet process zavershit' vy-
386
polnenie funkcii avarijno, processu-sputniku v mnogoprocessornoj sisteme
sleduet vesti sebya tem zhe obrazom. To zhe samoe mozhno skazat' i o tom sluchae,
kogda signal pobuzhdaet process k zaversheniyu svoej raboty s pomoshch'yu funkcii
exit: periferijnyj process zavershaetsya i posylaet sootvetstvuyushchee soobshchenie
processu-sputniku, kotoryj, razumeetsya, tozhe zavershaetsya.
Kogda periferijnyj process vyzyvaet sistemnuyu funkciyu signal, on sohra-
nyaet tekushchuyu informaciyu v lokal'nyh tablicah i posylaet soobshchenie svoemu
sputniku, informiruya ego o tom, sleduet li ukazannyj signal prinimat' ili zhe
ignorirovat'. Processu-sputniku bezrazlichno, vypolnyat' li perehvat signala
ili dejstvie po umolchaniyu. Reakciya processa na signal zavisit ot treh fakto-
rov (Risunok 13.7): postupaet li signal vo vremya vypolneniya processom sis-
temnoj funkcii, sdelano li s pomoshch'yu funkcii signal ukazanie ob ignorirova-
nii signala, voznikaet li signal na etom zhe periferijnom processore ili na
+------------------------------------------------------------+
| algoritm sighandle /* algoritm obrabotki signalov */ |
| vhodnaya informaciya: otsutstvuet |
| vyhodnaya informaciya: otsutstvuet |
| { |
| esli (tekushchij process yavlyaetsya ch'im-to sputnikom ili |
| imeet prototipa) |
| { |
| esli (signal ignoriruetsya) |
| vernut' upravlenie; |
| esli (signal postupil vo vremya vypolneniya sistemnoj |
| funkcii) |
| postavit' signal pered processom-sputnikom; |
| v protivnom sluchae |
| poslat' soobshchenie o signale periferijnomu proces-|
| su; |
| } |
| v protivnom sluchae /* periferijnyj process */ |
| { |
| /* postupil li signal vo vremya vypolneniya sistemnoj |
| * funkcii ili net |
| */ |
| poslat' signal processu-sputniku; |
| } |
| } |
| |
| algoritm satellite_end_of_syscall /* zavershenie sistem- |
| * noj funkcii, vyz- |
| * vannoj periferijnym|
| * processom */ |
| vhodnaya informaciya: otsutstvuet |
| vyhodnaya informaciya: otsutstvuet |
| { |
| esli (vo vremya vypolneniya sistemnoj funkcii postupilo |
| preryvanie) |
| poslat' periferijnomu processu soobshchenie o preryva- |
| nii, signal; |
| v protivnom sluchae /* vypolnenie sistemnoj funkcii ne|
| * preryvalos' */ |
| poslat' otvet: vklyuchit' flag, pokazyvayushchij postuple- |
| nie signala; |
| } |
+------------------------------------------------------------+
Risunok 13.7. Obrabotka signalov v periferijnoj sisteme
387
kakom-to drugom. Perejdem k rassmotreniyu razlichnyh vozmozhnostej.
Dopustim, chto periferijnyj process priostanovil svoyu rabotu na to vremya,
poka process-sputnik ispolnyaet sistemnuyu funkciyu ot ego imeni. Esli signal
voznikaet v drugom meste, process-sputnik obnaruzhivaet ego ran'she, chem peri-
ferijnyj process. Vozmozhny tri sluchaya.
1. Esli v ozhidanii nekotorogo sobytiya process-sputnik ne perehodil v sosto-
yanie priostanova, iz kotorogo on vyshel by po poluchenii signala, on vy-
polnyaet sistemnuyu funkciyu do konca, posylaet rezul'taty vypolneniya peri-
ferijnomu processu i pokazyvaet, kakoj iz signalov im byl poluchen.
2. Esli process sdelal ukazanie ob ignorirovanii signala dannogo tipa,
sputnik prodolzhaet sledovat' algoritmu vypolneniya sistemnoj funkcii, ne
vyhodya iz sostoyaniya priostanova po longjmp. V otvete, posylaemom perife-
rijnomu processu, soobshchenie o poluchenii signala budet otsutstvovat'.
3. Esli po poluchenii signala process-sputnik preryvaet vypolnenie sistemnoj
funkcii (po longjmp), on informiruet ob etom periferijnyj process i so-
obshchaet emu nomer signala.
Periferijnyj process ishchet v postupivshem otvete svedeniya o poluchenii sig-
nalov i v sluchae obnaruzheniya takovyh proizvodit obrabotku signalov pered vy-
hodom iz sistemnoj funkcii. Takim obrazom, povedenie processa v mnogoproces-
sornoj sisteme v tochnosti sootvetstvuet ego povedeniyu v odnoprocessornoj
sisteme: on ili zavershaet svoyu rabotu, ne vyhodya iz rezhima yadra, ili obrashcha-
etsya k pol'zovatel'skoj funkcii obrabotki signala, ili ignoriruet signal i
uspeshno zavershaet vypolnenie sistemnoj funkcii.
Periferijnyj process Process-sputnik
+------------------------------------------------------------
| Vyzyvaet sistemnuyu funkciyu read -
| Posylaet soobshchenie o vyzove funkcii -
| processu-sputniku -
| Priostanavlivaetsya do polucheniya -
| otveta ot processa-sputnika Poluchaet soobshchenie o
| - vyzove sistemnoj funk-
| - cii read
| - CHitaet dannye s ter-
| - minala
| - Priostanavlivaetsya v
| - ozhidanii polucheniya
| - porcii dannyh
| - -
| - -
| - Signal (pol'zovatel'
| - nazhal klavishu "break")
| - Vyhodit iz sostoyaniya
| - priostanova
| - Prekrashchaet vypolnenie
| - sistemnoj funkcii
| - Posylaet otvet peri-
| - ferijnomu processu:
| - vypolnenie funkcii
| - prervano
| Vyhodit iz sostoyaniya priostanova
| Analiziruet otvet
v Obrabatyvaet signal
Risunok 13.8. Preryvanie vo vremya vypolneniya sistemnoj funkcii
388
Predpolozhim, naprimer, chto periferijnyj process vyzyvaet funkciyu chteniya
s terminala, svyazannogo s central'nym processorom, i priostanavlivaet svoyu
rabotu na vremya vypolneniya funkcii processom-sputnikom (Risunok 13.8). Esli
pol'zovatel' nazhimaet klavishu preryvaniya (break), yadro CP posylaet proces-
su-sputniku sootvetstvuyushchij signal. Esli sputnik nahodilsya v sostoyanii pri-
ostanova v ozhidanii vvoda s terminala porcii dannyh, on nemedlenno vyhodit
iz etogo sostoyaniya i prekrashchaet vypolnenie funkcii read. V svoem otvete na
zapros periferijnogo processa sputnik soobshchaet kod oshibki i nomer signala,
sootvetstvuyushchij preryvaniyu. Periferijnyj process analiziruet otvet i, pos-
kol'ku v soobshchenii govoritsya o postuplenii signala preryvaniya, otpravlyaet
signal samomu sebe. Pered vyhodom iz funkcii read periferijnoe yadro osushchest-
vlyaet proverku postupleniya signalov, obnaruzhivaet signal preryvaniya, postu-
pivshij ot processa-sputnika, i obrabatyvaet ego obychnym poryadkom. Esli v re-
zul'tate polucheniya signala preryvaniya periferijnyj process zavershaet svoyu
rabotu s pomoshch'yu funkcii exit, dannaya funkciya beret na sebya zabotu ob unich-
tozhenii processa-sputnika. Esli periferijnyj process perehvatyvaet signaly o
preryvanii, on vyzyvaet pol'zovatel'skuyu funkciyu obrabotki signalov i po vy-
hode iz funkcii read vozvrashchaet pol'zovatelyu kod oshibki. S drugoj storony,
esli sputnik ispolnyaet ot imeni periferijnogo processa sistemnuyu funkciyu
stat, on ne budet preryvat' ee vypolnenie pri poluchenii signala (funkcii
stat garantirovan vyhod iz lyubogo priostanova, poskol'ku dlya nee vremya ozhi-
daniya resursa ogranicheno). Sputnik dovodit vypolnenie funkcii do konca i
vozvrashchaet periferijnomu processu nomer signala. Periferijnyj process posy-
laet signal samomu sebe i poluchaet ego na vyhode iz sistemnoj funkcii.
Esli signal voznik na periferijnom processore vo vremya vypolneniya sis-
temnoj funkcii, periferijnyj process budet nahodit'sya v nevedenii otnosi-
tel'no togo, vernetsya li k nemu vskore upravlenie ot processa-sputnika ili
zhe poslednij perejdet v sostoyanie priostanova na neopredelennoe vremya. Peri-
ferijnyj process posylaet sputniku special'noe soobshchenie, informiruya ego o
vozniknovenii signala. YAdro na CP rasshifrovyvaet soobshchenie i posylaet signal
sputniku, reakciya kotorogo na poluchenie signala opisana v predydushchih parag-
rafah (avarijnoe zavershenie vypolneniya funkcii ili dovedenie ego do konca).
Periferijnyj process ne mozhet poslat' soobshchenie sputniku neposredstvenno,
poskol'ku sputnik zanyat ispolneniem sistemnoj funkcii i ne schityvaet dannye
iz linii svyazi.
Esli obratit'sya k primeru s funkciej read, sleduet otmetit', chto perife-
rijnyj process ne imeet predstavleniya o tom, zhdet li ego sputnik vvoda dan-
nyh s terminala ili zhe vypolnyaet drugie dejstviya. Periferijnyj process posy-
laet sputniku soobshchenie o signale: esli sputnik nahoditsya v sostoyanii prios-
tanova s prioritetom, dopuskayushchim preryvaniya, on nemedlenno vyhodit iz etogo
sostoyaniya i prekrashchaet vypolnenie sistemnoj funkcii; v protivnom sluchae vy-
polnenie funkcii dovoditsya do uspeshnogo zaversheniya.
Rassmotrim, nakonec, sluchaj postupleniya signala vo vremya, ne svyazannoe s
vypolneniem sistemnoj funkcii. Esli signal voznik na drugom processore,
sputnik poluchaet ego pervym i posylaet soobshchenie o signale periferijnomu
processu, nezavisimo ot togo, kasaetsya li etot signal periferijnogo processa
ili net. Periferijnoe yadro rasshifrovyvaet soobshchenie i posylaet signal pro-
cessu, kotoryj reagiruet na nego obychnym poryadkom. Esli signal voznik na pe-
riferijnom processore, process vypolnyaet standartnye dejstviya, ne pribegaya k
uslugam svoego sputnika.
Kogda periferijnyj process posylaet signal drugim periferijnym proces-
sam, on kodiruet soobshchenie o vyzove funkcii kill i posylaet ego proces-
su-sputniku, kotoryj ispolnyaet vyzyvaemuyu funkciyu lokal'no. Esli chast' pro-
cessov, dlya kotoryh prednaznachen signal, imeet mestonahozhdenie na drugih pe-
riferijnyh processorah, signal poluchat (i proreagiruyut na ego poluchenie vy-
sheopisannym obrazom) ih sputniki.
389
13.2 SVYAZX TIPA NEWCASTLE
V predydushchem razdele my rassmotreli tip sil'nosvyazannoj sistemy, dlya ko-
torogo harakterna posylka vseh voznikayushchih na periferijnom processore obra-
shchenij k funkciyam podsistemy upravleniya fajlami na udalennyj (central'nyj)
processor. Teper' perejdem k rassmotreniyu sistem s menee sil'noj svyaz'yu, ko-
torye sostoyat iz mashin, proizvodyashchih obrashchenie k fajlam, nahodyashchimsya na dru-
gih mashinah. V seti, sostoyashchej iz personal'nyh komp'yuterov i rabochih stan-
cij, naprimer, pol'zovateli chasto obrashchayutsya k fajlam, raspolozhennym na
bol'shoj mashine. V posleduyushchih dvuh razdelah my rassmotrim takie konfiguracii
sistem, v kotoryh vse sistemnye funkcii vypolnyayutsya v lokal'nyh podsistemah,
no pri etom imeetsya vozmozhnost' obrashcheniya k fajlam (cherez funkcii podsistemy
upravleniya fajlami), raspolozhennym na drugih mashinah.
Dlya identificirovaniya udalennyh fajlov v etih sistemah ispol'zuetsya odin
iz sleduyushchih dvuh putej. V odnih sistemah v sostavnoe imya fajla dobavlyaetsya
special'nyj simvol: komponenta imeni, predshestvuyushchaya etomu simvolu, identi-
ficiruet mashinu, ostal'naya chast' imeni - fajl, nahodyashchijsya na etoj mashine.
Tak, naprimer, sostavnoe imya
"sftig!/fs1/mjb/rje"
identificiruet fajl "/fs1/mjb/rje", nahodyashchijsya na mashine "sftig". Takaya
shema identificirovaniya fajla sootvetstvuet soglasheniyu, ustanovlennomu prog-
rammoj uucp otnositel'no peredachi fajlov mezhdu sistemami tipa UNIX. V drugoj
sheme udalennye fajly identificiruyutsya dobavleniem k imeni special'nogo pre-
fiksa, naprimer:
/../sftig/fs1/mjb/rje
gde "/../" - prefiks, svidetel'stvuyushchij o tom, chto fajl udalennyj; vtoraya
komponenta imeni fajla yavlyaetsya imenem udalennoj mashiny. V dannoj sheme is-
Process-klient Process-server
+-----------------------------+ +----------------------------+
| Tablica | | Process- |
| Si-biblioteka otkrytyh | | sputnik Zapros |
| fajlov | | (pol'zo- na chtenie |
| +------+ | | vatel'skij | | |
| +--------------+--- | | | uroven') | | |
| | +------+ | | | | |
| | lokal'nyj | | | | +-------------+ | |
| | +------+ | | | | |
| | +----+--- | | | | | |
| | | +------+ | | | | |
| | | | | | | | | |
| | | +------+ | | | | |
| | +-----+ | | | | |
+----+---------------+--------+ +----+-----------------+-----+
| | udalennyj | |
+----+---------------+--------+ +----+-----------------+-----+
| | Setevoj | | | Setevoj |
| YAdro interfejs | | YAdro interfejs |
| | | | | |
+--------------------+--------+ +----------------------+-----+
| s e t ' |
+-------------------------------------+
Risunok 13.9. Formulirovanie zaprosov k fajlovomu serveru (processoru)
390
pol'zuetsya privychnyj sintaksis imen fajlov v sisteme UNIX, poetomu v otlichie
ot pervoj shemy zdes' pol'zovatel'skim programmam net neobhodimosti prino-
ravlivat'sya k ispol'zovaniyu imen, imeyushchih neobychnuyu konstrukciyu (sm. [Pike
85]).
Vsyu ostavshuyusya chast' razdela my posvyatim rassmotreniyu modeli sistemy,
ispol'zuyushchej svyaz' tipa Newcastle, v kotoroj yadro ne zanimaetsya raspoznava-
niem udalennyh fajlov; eta funkciya polnost'yu vozlagaetsya na podprogrammy iz
standartnoj Si-biblioteki, vypolnyayushchie v dannom sluchae rol' sistemnogo in-
terfejsa. |ti podprogrammy analiziruyut pervuyu komponentu imeni fajla, v obo-
ih opisannyh sposobah identificirovaniya soderzhashchuyu priznak udalennosti faj-
la. V etom sostoit otstuplenie ot zavedennogo poryadka, pri kotorom biblio-
technye podprogrammy ne zanimayutsya sintaksicheskim razborom imen fajlov. Na
Risunke 13.9 pokazano, kakim obrazom formuliruyutsya zaprosy k fajlovomu ser-
veru. Esli fajl lokal'nyj, yadro lokal'noj sistemy obrabatyvaet zapros obych-
nym sposobom. Rassmotrim obratnyj sluchaj:
open("/../sftig/fs1/mjb/rje/file",O_RDONLY);
Podprogramma open iz Si-biblioteki analiziruet pervye dve komponenty sostav-
nogo imeni fajla i uznaet, chto fajl sleduet iskat' na udalennoj mashine
"sftig". CHtoby imet' informaciyu o tom, byla li ranee u processa svyaz' s dan-
noj mashinoj, podprogramma zavodit special'nuyu strukturu, v kotoroj zapomina-
et etot fakt, i v sluchae otricatel'nogo otveta ustanavlivaet svyaz' s fajlo-
vym serverom, rabotayushchim na udalennoj mashine. Kogda process formuliruet svoj
pervyj zapros na distancionnuyu obrabotku, udalennyj server podtverzhdaet zap-
ros, v sluchae neobhodimosti vedet zapis' v polya pol'zovatel'skogo i gruppo-
vogo kodov identifikacii i sozdaet processsputnik, kotoryj budet vystupat'
ot imeni processa-klienta.
CHtoby vypolnyat' zaprosy klienta, sputnik dolzhen imet' na udalennoj mashi-
ne te zhe prava dostupa k fajlam, chto i klient. Drugimi slovami, pol'zovatel'
"mjb" dolzhen imet' i k udalennym, i k lokal'nym fajlam odinakovye prava dos-
tupa. K sozhaleniyu, ne isklyuchena vozmozhnost' togo, chto kod identifikacii kli-
enta "mjb" mozhet sovpast' s kodom identifikacii drugogo klienta udalennoj
mashiny. Takim obrazom, administratoram sistem na rabotayushchih v seti mashinah
sleduet libo sledit' za naznacheniem kazhdomu pol'zovatelyu koda identifikacii,
unikal'nogo dlya vsej seti, libo v moment formulirovaniya zaprosa na setevoe
obsluzhivanie vypolnyat' preobrazovanie kodov. Esli eto ne budet sdelano, pro-
cess-sputnik budet imet' na udalennoj mashine prava drugogo klienta.
Bolee delikatnym voprosom yavlyaetsya poluchenie v otnoshenii raboty s uda-
lennymi fajlami prav superpol'zovatelya. S odnoj storony, klient-superpol'zo-
vatel' ne dolzhen imet' te zhe prava v otnoshenii udalennoj sistemy, chtoby ne
vvodit' v zabluzhdenie sredstva zashchity udalennoj sistemy. S drugoj storony,
nekotorye iz programm, esli im ne predostavit' prava superpol'zovatelya,
prosto ne smogut rabotat'. Primerom takoj programmy yavlyaetsya programma mkdir
(sm. glavu 7), sozdayushchaya novyj katalog. Udalennaya sistema ne razreshila by
klientu sozdavat' novyj katalog, poskol'ku na udalenii prava superpol'zova-
telya ne dejstvuyut. Problema sozdaniya udalennyh katalogov sluzhit ser'eznym
osnovaniem dlya peresmotra sistemnoj funkcii mkdir v storonu rasshireniya ee
vozmozhnostej v avtomaticheskom ustanovlenii vseh neobhodimyh pol'zovatelyu
svyazej. Tem ne menee, poluchenie setuid-programmami (k kotorym otnositsya i
programma mkdir) prav superpol'zovatelya po otnosheniyu k udalennym fajlam vse
eshche ostaetsya obshchej problemoj, trebuyushchej svoego resheniya. Vozmozhno, chto nai-
luchshim resheniem etoj problemy bylo by ustanovlenie dlya fajlov dopolnitel'nyh
harakteristik, opisyvayushchih dostup k nim so storony udalennyh superpol'zova-
telej; k sozhaleniyu, eto potrebovalo by vneseniya izmenenij v strukturu disko-
vogo indeksa (v chasti dobavleniya novyh polej) i porodilo by slishkom bol'shoj
besporyadok v sushchestvuyushchih sistemah.
391
Esli podprogramma open zavershaetsya uspeshno, lokal'naya biblioteka ostav-
lyaet ob etom sootvetstvuyushchuyu otmetku v dostupnoj dlya pol'zovatelya strukture,
soderzhashchej adres setevogo uzla, identifikator processa-sputnika, deskriptor
fajla i druguyu analogichnuyu informaciyu. Bibliotechnye podprogrammy read i
write ustanavlivayut, ishodya iz deskriptora, yavlyaetsya li fajl udalennym, i v
sluchae polozhitel'nogo otveta posylayut sputniku soobshchenie. Process-klient
vzaimodejstvuet so svoim sputnikom vo vseh sluchayah obrashcheniya k sistemnym
funkciyam, nuzhdayushchimsya v uslugah udalennoj mashiny. Esli process obrashchaetsya k
dvum fajlam, raspolozhennym na odnoj i toj zhe udalennoj mashine, on pol'zuetsya
odnim sputnikom, no esli fajly raspolozheny na raznyh mashinah, ispol'zuyutsya
uzhe dva sputnika: po odnomu na kazhdoj mashine. Dva sputnika ispol'zuyutsya i v
tom sluchae, kogda k fajlu na udalennoj mashine obrashchayutsya dva processa. Vyzy-
vaya sistemnuyu funkciyu cherez sputnika, process formiruet soobshchenie, vklyuchayu-
shchee v sebya nomer funkcii, imya puti poiska i druguyu neobhodimuyu informaciyu,
analogichnuyu toj, kotoraya vhodit v strukturu soobshcheniya v sisteme s periferij-
nymi processorami.
Mehanizm vypolneniya operacij nad tekushchim katalogom bolee slozhen. Kogda
process vybiraet v kachestve tekushchego udalennyj katalog, bibliotechnaya podp-
rogramma posylaet sootvetstvuyushchee soobshchenie sputniku, kotoryj izmenyaet teku-
shchij katalog, pri etom podprogramma zapominaet, chto katalog udalennyj. Vo
vseh sluchayah, kogda imya puti poiska nachinaetsya s simvola, otlichnogo ot nak-
lonnoj cherty (/), podprogramma posylaet eto imya na udalennuyu mashinu, gde
process-sputnik prokladyvaet marshrut, nachinaya s tekushchego kataloga. Esli te-
kushchij katalog - lokal'nyj, podprogramma prosto peredaet imya puti poiska yadru
lokal'noj sistemy. Sistemnaya funkciya chroot v otnoshenii udalennogo kataloga
vypolnyaetsya pohozhe, no pri etom ee vypolnenie dlya yadra lokal'noj sistemy
prohodit nezamechennym; strogo govorya, process mozhet ostavit' etu operaciyu
bez vnimaniya, poskol'ku tol'ko biblioteka fiksiruet ee vypolnenie.
Kogda process vyzyvaet funkciyu fork, sootvetstvuyushchaya bibliotechnaya podp-
rogramma posylaet soobshcheniya kazhdomu sputniku. Processy -sputniki vypolnyayut
operaciyu vetvleniya i posylayut identifikatory svoih potomkov klientu-rodite-
lyu. Process-klient zapuskaet sistemnuyu funkciyu fork, kotoraya peredaet uprav-
lenie porozhdaemomu potomku; lokal'nyj potomok vedet dialog s udalennym po-
tomkom-sputnikom, adresa kotorogo sohranila bibliotechnaya podprogramma. Takaya
traktovka funkcii fork oblegchaet processam-sputnikam kontrol' nad otkrytymi
fajlami i tekushchimi katalogami. Kogda process, rabotayushchij s udalennymi fajla-
mi, zavershaetsya (vyzyvaya funkciyu exit), podprogramma posylaet soobshcheniya vsem
ego udalennym sputnikam, chtoby oni po poluchenii soobshcheniya prodelali to zhe
samoe. Otdel'nye momenty realizacii sistemnyh funkcij exec i exit zatragiva-
yutsya v uprazhneniyah.
Preimushchestvo svyazi tipa Newcastle sostoit v tom, chto obrashchenie processa
k udalennym fajlam stanovitsya "prozrachnym" (nezametnym dlya pol'zovatelya),
pri etom v yadro sistemy nikakih izmenenij vnosit' ne nuzhno. Odnako, dannoj
razrabotke prisushch i ryad nedostatkov. Prezhde vsego, pri ee realizacii vozmozh-
no snizhenie proizvoditel'nosti sistemy. V svyazi s ispol'zovaniem rasshirennoj
Si-biblioteki razmer ispol'zuemoj kazhdym processom pamyati uvelichivaetsya, da-
zhe esli process ne obrashchaetsya k udalennym fajlam; biblioteka dubliruet funk-
cii yadra i trebuet dlya sebya bol'she mesta v pamyati. Uvelichenie razmera pro-
cessov privodit k udlineniyu prodolzhitel'nosti perioda zapuska i mozhet vyz-
vat' bol'shuyu konkurenciyu za resursy pamyati, sozdavaya usloviya dlya bolee chas-
toj vygruzki i podkachki zadach. Lokal'nye zaprosy budut ispolnyat'sya medlennee
iz-za uvelicheniya prodolzhitel'nosti kazhdogo obrashcheniya k yadru, zamedlenie mo-
zhet grozit' i obrabotke udalennyh zaprosov, zatraty po peresylke kotoryh po
seti uvelichivayutsya. Dopolnitel'naya obrabotka udalennyh zaprosov na pol'zova-
tel'skom urovne uvelichivaet kolichestvo pereklyuchenij konteksta, operacij po
vygruzke i podkachke processov. Nakonec, dlya togo, chtoby obrashchat'sya k udalen-
nym fajlam, programmy dolzhny byt' perekompilirovany s ispol'zovaniem novyh
bibliotek; starye programmy i postavlennye ob容ktnye moduli bez etogo rabo-
tat' s udalennymi fajlami ne smogut. Vse eti nedostatki otsutstvuyut v siste-
392
me, opisyvaemoj v sleduyushchem razdele.
13.3 "PROZRACHNYE" RASPREDELENNYE FAJLOVYE SISTEMY
Termin "prozrachnoe raspredelenie" oznachaet, chto pol'zovateli, rabotayushchie
na odnoj mashine, mogut obrashchat'sya k fajlam, nahodyashchimsya na drugoj mashine, ne
osoznavaya togo, chto tem samym oni peresekayut mashinnye granicy, podobno tomu,
kak na svoej mashine oni pri perehode ot odnoj fajlovoj sisteme k drugoj pe-
resekayut tochki montirovaniya. Imena, po kotorym processy obrashchayutsya k fajlam,
nahodyashchimsya na udalennyh mashinah, pohozhi na imena lokal'nyh fajlov: otlichi-
tel'nye simvoly v nih otsutstvuyut. V konfiguracii, pokazannoj na Risunke
13.10, katalog "/usr/src", prinadlezhashchij mashine B, "vmontirovan" v katalog
"/usr/src", prinadlezhashchij mashine A. Takaya konfiguraciya predstavlyaetsya udob-
noj v tom sluchae, esli v raznyh sistemah predpolagaetsya ispol'zovat' odin i
tot zhe ishodnyj kod sistemy, tradicionno nahodyashchijsya v kataloge "/usr/src".
Pol'zovateli, rabotayushchie na mashine A, mogut obrashchat'sya k fajlam, raspolozhen-
nym na mashine B, ispol'zuya privychnyj sintaksis napisaniya imen fajlov (napri-
mer: "/usr/src/cmd/login.c"), i yadro uzhe samo reshaet vopros, yavlyaetsya fajl
udalennym ili zhe lokal'nym. Pol'zovateli, rabotayushchie na mashine B, imeyut dos-
tup k svoim lokal'nym fajlam (ne podozrevaya o tom, chto k etim zhe fajlam mo-
gut obrashchat'sya i pol'zovateli mashiny A), no, v svoyu ochered', ne imeyut dostu-
pa k fajlam, nahodyashchimsya na mashine A. Konechno, vozmozhny i drugie varianty, v
chastnosti, takie, v kotoryh vse udalennye sistemy montiruyutsya v korne lo-
kal'noj sistemy, blagodarya chemu pol'zovateli poluchayut dostup ko vsem fajlam
vo vseh sistemah.
Mashina A Mashina B
+-----------------------------+ +-----------------------------+
| / | | / |
| | | | | |
| +--------+--------+ | | +-----------+-----------+ |
| | | | | | | | |
| bin usr | | usr bin etc |
| | | | | | |
| +----+----+ +----+--+ | | +-------+ |
| | | | | | | | | |
|login mail bin src| +--->src bin |
| | | | | | | |
| +---+---+ | | | | +------+-----+ |
| | | | | | | | | | |
| troff vi | | | | lib cmd uts |
| | | | | | |
| | | | | +---+---+ |
| | | | | | | |
| | | | | login.c mail.c |
+---------------------------|-+ | +-----------------------------+
+---+
Risunok 13.10. Fajlovye sistemy posle udalennogo montirovaniya
Nalichie shodstva mezhdu montirovaniem lokal'nyh fajlovyh sistem i otkry-
tiem dostupa k udalennym fajlovym sistemam posluzhilo povodom dlya adaptacii
funkcii mount primenitel'no k udalennym fajlovym sistemam. V dannom sluchae
yadro poluchaet v svoe rasporyazhenie tablicu montirovaniya rasshirennogo formata.
Vypolnyaya funkciyu mount, yadro organizuet setevuyu svyaz' s udalennoj mashinoj i
393
sohranyaet v tablice montirovaniya informaciyu, harakterizuyushchuyu dannuyu svyaz'.
Interesnaya problema svyazana s imenami putej, vklyuchayushchih "..". Esli pro-
cess delaet tekushchim katalog iz udalennoj fajlovoj sistemy, posleduyushchee is-
pol'zovanie v imeni simvolov ".." skoree vernet process v lokal'nuyu fajlovuyu
sistemu, chem pozvolit obrashchat'sya k fajlam, raspolozhennym vyshe tekushchego kata-
loga. Vozvrashchayas' vnov' k Risunku 13.10, otmetim, chto kogda process, prinad-
lezhashchij mashine A, vybrav predvaritel'no v kachestve tekushchego katalog
"/usr/src/cmd", raspolozhennyj v udalennoj fajlovoj sisteme, ispolnit komandu
cd ../../..
tekushchim katalogom stanet kornevoj katalog, prinadlezhashchij mashine A, a ne ma-
shine B. Algoritm namei, rabotayushchij v yadre udalennoj sistemy, poluchiv posle-
dovatel'nost' simvolov "..", proveryaet, yavlyaetsya li vyzyvayushchij process agen-
tom processa-klienta, i v sluchae polozhitel'nogo otveta ustanavlivaet, trak-
tuet li klient tekushchij rabochij katalog v kachestve kornya udalennoj fajlovoj
sistemy.
Svyaz' s udalennoj mashinoj prinimaet odnu iz dvuh form: vyzov udalennoj
procedury ili vyzov udalennoj sistemnoj funkcii. V pervoj forme kazhdaya pro-
cedura yadra, imeyushchaya delo s indeksami, proveryaet, ukazyvaet li indeks na
udalennyj fajl, i esli eto tak, posylaet na udalennuyu mashinu zapros na vy-
polnenie ukazannoj operacii. Dannaya shema estestvennym obrazom vpisyvaetsya v
abstraktnuyu strukturu podderzhki fajlovyh sistem razlichnyh tipov, opisannuyu v
zaklyuchitel'noj chasti glavy 5. Takim obrazom, obrashchenie k udalennomu fajlu
mozhet iniciirovat' peresylku po seti neskol'kih soobshchenij, kolichestvo koto-
ryh opredelyaetsya kolichestvom podrazumevaemyh operacij nad fajlom, s sootvet-
stvuyushchim uvelicheniem vremeni otveta na zapros s uchetom prinyatogo v seti vre-
meni ozhidaniya. Kazhdyj nabor udalennyh operacij vklyuchaet v sebya, po krajnej
mere, dejstviya po blokirovaniyu indeksa, podschetu ssylok i t.p. V celyah uso-
vershenstvovaniya modeli predlagalis' razlichnye optimizacionnye resheniya, svya-
zannye s ob容dineniem neskol'kih operacij v odin zapros (soobshchenie) i s bu-
ferizaciej naibolee vazhnyh dannyh (sm. [Sandberg 85]).
Server Klient (process/processor)
+--------------------+ +----------------------------------------+
| tablica | | tablica tablica tablica |
| indeksov +-------+ | | indeksov fajlov pol'zo- |
| +-----+ |Sputnik|-| | +-----+ +-----+ vatel'- |
| | | +-+-----+ |- | | | | | skih |
| +-----+ | | - +-----+ +-----+ deskrip- +-------+|
| | | | +------+- -+-+ | | torov +--+Process||
| +-----+ | | | | +-----+ | +-----+ fajla | +-------+|
| | | | | | | | | +-+- -++ +-----+ | |
| +-----+ | | | | +-----+ +-----+| | | | |
| | | | | | | | | | || +-----+ |deskriptor |
| +-----+ | | | | +-----+ +-----++-+- -+-+fajla |
| | --+----+-----+ | | | | | | +-----+ |
| +-----+ | | +-----+ +-----+ | | |
| | | +-----+ |
+--------------------+ +----------------------------------------+
Risunok 13.11. Otkrytie udalennogo fajla
Rassmotrim process, kotoryj otkryvaet udalennyj fajl
"/usr/src/cmd/login.c", gde "src" - tochka montirovaniya. Vypolnyaya sintaksi-
cheskij razbor imeni fajla (po sheme namei-iget), yadro obnaruzhivaet, chto fajl
udalennyj, i posylaet na mashinu, gde on nahoditsya, zapros na poluchenie zab-
lokirovannogo indeksa. Poluchiv zhelaemyj otvet, lokal'noe yadro sozdaet v pa-
394
myati kopiyu indeksa, korrespondiruyushchuyu s udalennym fajlom. Zatem yadro proiz-
vodit proverku nalichiya neobhodimyh prav dostupa k fajlu (na chtenie, napri-
mer), poslav na udalennuyu mashinu eshche odno soobshchenie. Vypolnenie algoritma
open prodolzhaetsya v polnom sootvetstvii s planom, privedennym v glave 5, s
posylkoj soobshchenij na udalennuyu mashinu po mere neobhodimosti, do polnogo
okonchaniya algoritma i osvobozhdeniya indeksa. Vzaimosvyaz' mezhdu strukturami
dannyh yadra po zavershenii algoritma open pokazana na Risunke 13.11.
Esli klient vyzyvaet sistemnuyu funkciyu read, yadro klienta blokiruet lo-
kal'nyj indeks, posylaet zapros na blokirovanie udalennogo indeksa, zapros
na chtenie dannyh, kopiruet dannye v lokal'nuyu pamyat', posylaet zapros na os-
vobozhdenie udalennogo indeksa i osvobozhdaet lokal'nyj indeks. Takaya shema
sootvetstvuet semantike sushchestvuyushchego odnoprocessornogo yadra, no chastota is-
pol'zovaniya seti (neskol'ko obrashchenij na kazhduyu sistemnuyu funkciyu) snizhaet
proizvoditel'nost' vsej sistemy. Odnako, chtoby umen'shit' potok soobshchenij v
seti, v odin zapros mozhno ob容dinyat' neskol'ko operacij. V primere s funkci-
ej read klient mozhet poslat' serveru odin obshchij zapros na "chtenie", a uzh
server pri ego vypolnenii sam prinimaet reshenie na zahvat i osvobozhdenie in-
deksa. Sokrashcheniya setevogo trafika mozhno dobit'sya i putem ispol'zovaniya uda-
lennyh buferov (o chem my uzhe govorili vyshe), no pri etom nuzhno pozabotit'sya
o tom, chtoby sistemnye funkcii raboty s fajlami, ispol'zuyushchie eti bufery,
vypolnyalis' nadlezhashchim obrazom.
Pri vtoroj forme svyazi s udalennoj mashinoj (vyzov udalennoj sistemnoj
funkcii) lokal'noe yadro obnaruzhivaet, chto sistemnaya funkciya imeet otnoshenie
k udalennomu fajlu, i posylaet ukazannye v ee vyzove parametry na udalennuyu
sistemu, kotoraya ispolnyaet funkciyu i vozvrashchaet rezul'taty klientu. Mashina
klienta poluchaet rezul'taty vypolneniya funkcii i vyhodit iz sostoyaniya vyzo-
va. Bol'shinstvo sistemnyh funkcij mozhet byt' vypolneno s ispol'zovaniem
tol'ko odnogo setevogo zaprosa s polucheniem otveta cherez dostatochno priemle-
moe vremya, no v takuyu model' vpisyvayutsya ne vse funkcii. Tak, naprimer, po
poluchenii nekotoryh signalov yadro sozdaet dlya processa fajl s imenem "core"
(glava 7). Sozdanie etogo fajla ne svyazano s konkretnoj sistemnoj funkciej,
a zavershaet vypolnenie neskol'kih operacij, takih kak sozdanie fajla, pro-
verka prav dostupa i vypolnenie ryada operacij zapisi.
V sluchae s sistemnoj funkciej open zapros na ispolnenie funkcii, posyla-
emyj na udalennuyu mashinu, vklyuchaet v sebya chast' imeni fajla, ostavshuyusya pos-
le isklyucheniya komponent imeni puti poiska, otlichayushchih udalennyj fajl, a tak-
zhe razlichnye flagi. V rassmotrennom ranee primere s otkrytiem fajla
"/usr/src/cmd/login.c" yadro posylaet na udalennuyu mashinu imya "cmd/login.c".
Soobshchenie takzhe vklyuchaet v sebya opoznavatel'nye dannye, takie kak pol'zova-
tel'skij i gruppovoj kody identifikacii, neobhodimye dlya proverki prav dos-
tupa k fajlam na udalennoj mashine. Esli s udalennoj mashiny postupaet otvet,
svidetel'stvuyushchij ob uspeshnom vypolnenii funkcii open, lokal'noe yadro vybi-
raet svobodnyj indeks v pamyati lokal'noj mashiny i pomechaet ego kak indeks
udalennogo fajla, sohranyaet informaciyu ob udalennoj mashine i udalennom in-
dekse i po zavedennomu poryadku vydelyaet novuyu zapis' v tablice fajlov. V
sravnenii s real'nym indeksom na udalennoj mashine indeks, prinadlezhashchij lo-
kal'noj mashine, yavlyaetsya formal'nym, ne narushayushchim konfiguraciyu modeli, ko-
toraya v celom sovpadaet s konfiguraciej, ispol'zuemoj pri vyzove udalennoj
procedury (Risunok 13.11). Esli vyzyvaemaya processom funkciya obrashchaetsya k
udalennomu fajlu po ego deskriptoru, lokal'noe yadro uznaet iz indeksa (lo-
kal'nogo) o tom, chto fajl udalennyj, formuliruet zapros, vklyuchayushchij v sebya
vyzyvaemuyu funkciyu, i posylaet ego na udalennuyu mashinu. V zaprose soderzhitsya
ukazatel' na udalennyj indeks, po kotoromu process-sputnik smozhet identifi-
cirovat' sam udalennyj fajl.
Poluchiv rezul'tat vypolneniya lyuboj sistemnoj funkcii, yadro mozhet dlya ego
obrabotki pribegnut' k uslugam special'noj programmy (po zavershenii kotoroj
yadro zakonchit rabotu s funkciej), ibo ne vsegda lokal'naya obrabotka rezul'-
tatov, primenyaemaya v odnoprocessornoj sisteme, podhodit dlya sistemy s nes-
kol'kimi processorami. Vsledstvie etogo vozmozhny izmeneniya v semantike sis-
395
temnyh algoritmov, napravlennye na obespechenie podderzhki vypolneniya udalen-
nyh sistemnyh funkcij. Odnako, pri etom v seti cirkuliruet minimal'nyj potok
soobshchenij, obespechivayushchij minimal'noe vremya reakcii sistemy na postupayushchie
zaprosy.
13.4 RASPREDELENNAYA MODELX BEZ PEREDATOCHNYH PROCESSOV
Ispol'zovanie peredatochnyh processov (processov-sputnikov) v "prozrach-
noj" raspredelennoj sisteme oblegchaet slezhenie za udalennymi fajlami, odnako
pri etom tablica processov udalennoj sistemy peregruzhaetsya processami-sput-
nikami, bezdejstvuyushchimi bol'shuyu chast' vremeni. V drugih shemah dlya obrabotki
udalennyh zaprosov ispol'zuyutsya special'nye processy-servery (sm. [Sandberg
85] i [Cole 85]). Udalennaya sistema raspolagaet naborom (pulom) proces-
sov-serverov, vremya ot vremeni naznachaemyh eyu dlya obrabotki postupayushchih uda-
lennyh zaprosov. Posle obrabotki zaprosa process-server vozvrashchaetsya v pul i
perehodit v sostoyanie gotovnosti k vypolneniyu obrabotki drugih zaprosov.
Server ne sohranyaet pol'zovatel'skij kontekst mezhdu dvumya obrashcheniyami, ibo
on mozhet obrabatyvat' zaprosy srazu neskol'kih processov. Sledovatel'no,
kazhdoe postupayushchee ot processa-klienta soobshchenie dolzhno vklyuchat' v sebya in-
formaciyu o srede ego vypolneniya, a imenno: kody identifikacii pol'zovatelya,
tekushchij katalog, signaly i t.d. Processy-sputniki poluchayut eti dannye v mo-
ment svoego poyavleniya ili vo vremya vypolneniya sistemnoj funkcii.
Kogda process otkryvaet udalennyj fajl, yadro udalennoj sistemy naznachaet
indeks dlya posleduyushchih ssylok na fajl. Lokal'naya mashina raspolagaet tablicej
pol'zovatel'skih deskriptorov fajla, tablicej fajlov i tablicej indeksov s
obychnym naborom zapisej, prichem zapis' v tablice indeksov identificiruet
udalennuyu mashinu i udalennyj indeks. V teh sluchayah, kogda sistemnaya funkciya
(naprimer, read) ispol'zuet deskriptor fajla, yadro posylaet soobshchenie, uka-
zyvayushchee na ranee naznachennyj udalennyj indeks, i peredaet svyazannuyu s pro-
cessom informaciyu: kod identifikacii pol'zovatelya, maksimal'no-dopustimyj
razmer fajla i t.p. Esli udalennaya mashina imeet v svoem rasporyazhenii pro-
cess-server, vzaimodejstvie s klientom prinimaet vid, opisannyj ranee, odna-
ko svyaz' mezhdu klientom i serverom ustanavlivaetsya tol'ko na vremya vypolne-
niya sistemnoj funkcii.
Esli vmesto processov-sputnikov vospol'zovat'sya uslugami serverov, up-
ravlenie potokom dannyh, signalami i udalennymi ustrojstvami mozhet uslozh-
nit'sya. Postupayushchie v bol'shom kolichestve zaprosy k udalennoj mashine pri ot-
sutstvii dostatochnogo chisla serverov dolzhny vystraivat'sya v ochered'. Dlya
etogo nuzhen protokol bolee vysokogo urovnya, chem tot, kotoryj ispol'zuetsya v
osnovnoj seti. V modeli, ispol'zuyushchej sputnik, s drugoj storony, perenasy-
shchennost' zaprosami isklyuchaetsya, ibo vse zaprosy klienta obrabatyvayutsya sinh-
ronno. Klient mozhet imet' ne bolee odnogo zaprosa, ozhidayushchego obrabotki.
Obrabotka signalov, preryvayushchih vypolnenie sistemnoj funkcii, pri is-
pol'zovanii serverov takzhe uslozhnyaetsya, poskol'ku udalennoj mashine prihodit-
sya pri etom iskat' sootvetstvuyushchij server, obsluzhivayushchij vypolnenie funkcii.
Ne isklyuchaetsya dazhe i takaya vozmozhnost', chto v svyazi s zanyatost'yu vseh ser-
verov zapros na vypolnenie sistemnoj funkcii nahoditsya v sostoyanii ozhidaniya
obrabotki. Usloviya dlya vozniknoveniya konkurencii skladyvayutsya i togda, kogda
server vozvrashchaet rezul'tat vypolneniya sistemnoj funkcii vyzyvayushchemu proces-
su i otvet servera zaklyuchaet v sebe posylku cherez set' sootvetstvuyushchego sig-
nal'nogo soobshcheniya. Kazhdoe soobshchenie dolzhno byt' pomecheno takim obrazom,
chtoby udalennaya sistema mogla raspoznat' ego i v sluchae neobhodimosti prer-
vat' rabotu processov-serverov. Pri ispol'zovanii sputnikov tot process, ko-
toryj obsluzhivaet vypolnenie zaprosa klienta, identificiruetsya avtomatiches-
ki, i v sluchae postupleniya signala proverka togo, zakonchena li obrabotka
zaprosa ili net, ne sostavlyaet osobogo truda.
Nakonec, esli vyzyvaemaya klientom sistemnaya funkciya zastavlyaet server
priostanovit'sya na neopredelennoe vremya (naprimer, pri chtenii dannyh s uda-
396
lennogo terminala), server ne mozhet vesti obrabotku drugih zaprosov, chtoby
osvobodit' tem samym servernyj pul. Esli k udalennym ustrojstvam obrashchayutsya
srazu neskol'ko processov i esli pri etom kolichestvo serverov ogranicheno
sverhu, imeet mesto vpolne oshchutimoe uzkoe mesto. Pri ispol'zovanii sputnikov
etogo ne proishodit, poskol'ku sputnik vydelyaetsya kazhdomu processu-klientu.
Eshche odna problema, svyazannaya s ispol'zovaniem serverov dlya udalennyh ustroj-
stv, budet rassmotrena v uprazhnenii 13.14.
Nesmotrya na preimushchestva, kotorye predostavlyaet ispol'zovanie proces-
sov-sputnikov, potrebnost' v svobodnyh zapisyah tablicy processov na praktike
stanovitsya nastol'ko ostroj, chto v bol'shinstve sluchaev dlya obrabotki udalen-
nyh zaprosov vse-taki pribegayut k uslugam processov-serverov.
Pol'zovatel' +------------------------------+
| | Biblioteka sistemnyh funkcij |
| +------------------------------+
| | Uroven' svyazi tipa Newcastle |
v +------------------------------+
^ +------------------------------+
| | Podprogramma obrabotki obra- |
| | shcheniya k sistemnoj funkcii |
| +------------------------------+ + Periferijnaya
| | Podprogramma vzaimodejstviya s<----+ sistema,
| | udalennoj fajlovoj sistemoj | | vyzov udalen-
| +------------------------------+ + noj sistemy
| | Podsistema upravleniya fajlami<------Vyzov udalen-
YAdro +------------------------------+ noj procedury
Risunok 13.12. Konceptual'naya shema vzaimodejstviya s udalen-
nymi fajlami na urovne yadra
V dannoj glave nami byli rassmotreny tri shemy raboty s raspolozhennymi
na udalennyh mashinah fajlami, traktuyushchie udalennye fajlovye sistemy kak ras-
shirenie lokal'noj. Arhitekturnye razlichiya mezhdu etimi shemami pokazany na
Risunke 13.12. Vse oni v svoyu ochered' otlichayutsya ot mnogoprocessornyh sis-
tem, opisannyh v predydushchej glave, tem, chto zdes' processory ne ispol'zuyut
fizicheskuyu pamyat' sovmestno. Sistema s periferijnymi processorami sostoit iz
sil'nosvyazannogo nabora processorov, sovmestno ispol'zuyushchih fajlovye resursy
central'nogo processora. Svyaz' tipa Newcastle obespechivaet skrytyj ("proz-
rachnyj") dostup k udalennym fajlam, no ne sredstvami yadra operacionnoj sis-
temy, a blagodarya ispol'zovaniyu special'noj Si-biblioteki. Po etoj prichine
vse programmy, predpolagayushchie ispol'zovat' svyaz' dannogo tipa, dolzhny byt'
perekompilirovany, chto v obshchem-to yavlyaetsya ser'eznym nedostatkom etoj shemy.
Udalennost' fajla oboznachaetsya s pomoshch'yu special'noj posledovatel'nosti sim-
volov, opisyvayushchih mashinu, na kotoroj raspolozhen fajl, i eto yavlyaetsya eshche
odnim faktorom, ogranichivayushchim mobil'nost' programm.
V "prozrachnyh" raspredelennyh sistemah dlya dostupa k udalennym fajlam
ispol'zuetsya modifikaciya sistemnoj funkcii mount. Indeksy v lokal'noj siste-
me soderzhat otmetku o tom, chto oni otnosyatsya k udalennym fajlam, i lokal'noe
yadro posylaet na udalennuyu sistemu soobshchenie, opisyvayushchee zaprashivaemuyu sis-
temnuyu funkciyu, ee parametry i udalennyj indeks. Svyaz' v "prozrachnoj" rasp-
redelennoj sisteme podderzhivaetsya v dvuh formah: v forme vyzova udalennoj
procedury (na udalennuyu mashinu posylaetsya soobshchenie, soderzhashchee perechen'
operacij, svyazannyh s indeksom) i v forme vyzova udalennoj sistemnoj funkcii
(soobshchenie opisyvaet zaprashivaemuyu funkciyu). V zaklyuchitel'noj chasti glavy
397
rassmotreny voprosy, imeyushchie otnoshenie k obrabotke distancionnyh zaprosov s
pomoshch'yu processov-sputnikov i serverov.
*1. Opishite realizaciyu sistemnoj funkcii exit v sisteme s periferijnymi
processorami. V chem raznica mezhdu etim sluchaem i tem, kogda process za-
vershaet svoyu rabotu po poluchenii neperehvachennogo signala ? Kakim obra-
zom yadru sleduet sohranit' damp soderzhimogo pamyati ?
2. Processy ne mogut ignorirovat' signaly tipa SIGKILL; ob座asnite, chto
proishodit v periferijnoj sisteme, kogda process poluchaet takoj signal.
*3. Opishite realizaciyu sistemnoj funkcii exec v sisteme s periferijnymi
processorami.
*4. Kakim obrazom central'nomu processoru sleduet proizvodit' raspredelenie
processov mezhdu periferijnymi processorami s tem, chtoby sbalansirovat'
obshchuyu nagruzku ?
*5. CHto proizojdet v tom sluchae, esli u periferijnogo processora ne okazhet-
sya dostatochno pamyati dlya razmeshcheniya vseh vygruzhennyh na nego processov?
Kakim obrazom dolzhny proizvodit'sya vygruzka i podkachka processov v seti?
6. Rassmotrim sistemu, v kotoroj zaprosy k udalennomu fajlovomu serveru
posylayutsya v sluchae obnaruzheniya v imeni fajla special'nogo prefiksa.
Pust' process vyzyvaet funkciyu
execl("/../sftig/bin/sh","sh",0);
Ispolnyaemyj modul' nahoditsya na udalennoj mashine, no dolzhen vypolnyat'sya
v lokal'noj sisteme. Ob座asnite, kakim obrazom udalennyj modul' pereno-
sitsya v lokal'nuyu sistemu.
7. Esli administratoru nuzhno dobavit' v sushchestvuyushchuyu sistemu so svyaz'yu ti-
pa Newcastle novye mashiny, to kak ob etom luchshe vsego proinformirovat'
moduli Si-biblioteki ?
*8. Vo vremya vypolneniya funkcii exec yadro zatiraet adresnoe prostranstvo
processa, vklyuchaya i bibliotechnye tablicy, ispol'zuemye svyaz'yu tipa
Newcastle dlya slezheniya za ssylkami na udalennye fajly. Posle vypolneniya
funkcii process dolzhen sohranit' vozmozhnost' obrashcheniya k etim fajlam po
ih starym deskriptoram. Opishite realizaciyu etogo momenta.
*9. Kak pokazano v razdele 13.2, vyzov sistemnoj funkcii exit v sistemah so
svyaz'yu tipa Newcastle privodit k posylke soobshcheniya processu-sputniku,
zastavlyayushchego poslednij zavershit' svoyu rabotu. |to delaetsya na urovne
bibliotechnyh podprogramm. CHto proishodit, kogda lokal'nyj process polu-
chaet signal, pobuzhdayushchij ego zavershit' svoyu rabotu v rezhime yadra ?
*10. Kakim obrazom v sisteme so svyaz'yu tipa Newcastle, gde udalennye fajly
identificiruyutsya dobavleniem k imeni special'nogo prefiksa, pol'zova-
tel' mozhet, ukazav v kachestve komponenty imeni fajla ".." (roditel'skij
katalog), peresech' udalennuyu tochku montirovaniya ?
11. Iz glavy 7 nam izvestno o tom, chto razlichnye signaly pobuzhdayut process
sbrasyvat' damp soderzhimogo pamyati v tekushchij katalog. CHto dolzhno proi-
zojti v tom sluchae, esli tekushchim yavlyaetsya katalog iz udalennoj fajlovoj
sistemy ? Kakoj otvet vy dadite v tom sluchae, esli v sisteme ispol'zu-
etsya svyaz' tipa Newcastle ?
*12. Kakie posledstviya dlya lokal'nyh processov imelo by udalenie iz sistemy
vseh processov-sputnikov ili serverov ?
*13. Podumajte nad tem, kak v "prozrachnoj" raspredelennoj sisteme sleduet
realizovat' algoritm link, parametrami kotorogo mogut byt' dva imeni
udalennyh fajlov, a takzhe algoritm exec, svyazannyj s vypolneniem nes-
kol'kih vnutrennih operacij chteniya. Rassmotrite dve formy svyazi: vyzov
udalennoj procedury i vyzov udalennoj sistemnoj funkcii.
*14. Pri obrashchenii k ustrojstvu process-server mozhet perejti v sostoyanie
priostanova, iz kotorogo on budet vyveden drajverom ustrojstva. Estest-
venno, esli chislo serverov ogranicheno, sistema ne smozhet bol'she udov-
398
letvoryat' zaprosy lokal'noj mashiny. Pridumajte nadezhnuyu shemu, po koto-
roj v ozhidanii zaversheniya vvoda-vyvoda, svyazannogo s ustrojstvom, pri-
ostanavlivalis' by ne vse processy-servery. Sistemnaya funkciya ne prek-
ratit svoe vypolnenie, poka vse servery budut zanyaty.
+----------+ +----------+ +----------+
| Klient A | | Klient B | | Klient C |
+----------+ +----------+ +----------+
- - - - - -
getty- - - - - - -
processy- - - - - -
- - - - - -
+-------------------------------------------+ terminal'-
| - - - - - - | nyj server
+--+----+----------+----+-----------+----+--+
| | | | | |
tty00 tty01 tty02 tty03 tty04 tty05
Risunok 13.13. Konfiguraciya s terminal'nym serverom
*15. Kogda pol'zovatel' registriruetsya v sisteme, disciplina terminal'noj
linii sohranyaet informaciyu o tom, chto terminal yavlyaetsya operatorskim,
vedushchim gruppu processov. Po etoj prichine, kogda pol'zovatel' na klavi-
ature terminala nazhimaet klavishu "break", signal preryvaniya poluchayut
vse processy gruppy. Rassmotrim konfiguraciyu sistemy, v kotoroj vse
terminaly fizicheski podklyuchayutsya k odnoj mashine, no registraciya pol'zo-
vatelej logicheski realizuetsya na drugih mashinah (Risunok 13.13). V kazh-
dom otdel'nom sluchae sistema sozdaet dlya udalennogo terminala
getty-process. Esli zaprosy k udalennoj sisteme obrabatyvayutsya s po-
moshch'yu nabora processov-serverov, sleduet otmetit', chto pri vypolnenii
procedury otkrytiya server ostanavlivaetsya v ozhidanii podklyucheniya. Kogda
vypolnenie funkcii open zavershaetsya, server vozvrashchaetsya obratno v ser-
vernyj pul, razryvaya svoyu svyaz' s terminalom. Kakim obrazom osushchestvlya-
etsya rassylka signala o preryvanii, vyzyvaemogo nazhatiem klavishi
"break", po adresam processov, vhodyashchih v odnu gruppu ?
*16. Razdelenie pamyati - eto osobennost', prisushchaya lokal'nym mashinam. S lo-
gicheskoj tochki zreniya, vydelenie obshchej oblasti fizicheskoj pamyati (lo-
kal'noj ili udalennoj) mozhno osushchestvit' i dlya processov, prinadlezhashchih
raznym mashinam. Opishite realizaciyu etogo momenta.
*17. Rassmotrennye v glave 9 algoritmy vygruzki processov i podkachki stranic
po obrashcheniyu predpolagayut ispol'zovanie lokal'nogo ustrojstva vygruzki.
Kakie izmeneniya sleduet vnesti v eti algoritmy dlya togo, chtoby sozdat'
vozmozhnost' podderzhki udalennyh ustrojstv vygruzki ?
*18. Predpolozhim, chto na udalennoj mashine (ili v seti) sluchilsya fatal'nyj
sboj i lokal'nyj protokol setevogo urovnya zafiksiroval etot fakt. Raz-
rabotajte shemu vosstanovleniya lokal'noj sistemy, obrashchayushchejsya k uda-
lennomu serveru s zaprosami. Krome togo, razrabotajte shemu vosstanov-
leniya servernoj sistemy, utrativshej svyaz' s klientami.
*19. Kogda process obrashchaetsya k udalennomu fajlu, ne isklyuchena vozmozhnost'
togo, chto v poiskah fajla process obojdet neskol'ko mashin. V kachestve
primera voz'mem imya "/usr/src/uts/3b2/os", gde "/usr" - katalog, pri-
nadlezhashchij mashine A, "/usr/src" - tochka montirovaniya kornya mashiny B,
"/usr/src/uts/3b2" - tochka montirovaniya kornya mashiny C. Prohod cherez
neskol'ko mashin k mestu konechnogo naznacheniya nazyvaetsya "mul'tiskachkom"
(multihop). Odnako, esli mezhdu mashinami A i C sushchestvuet neposredstven-
naya setevaya svyaz', peresylka dannyh cherez mashinu B byla by neeffektiv-
noj. Opishite osobennosti realizacii "mul'tiskachka" v sisteme so svyaz'yu
Newcastle i v "prozrachnoj" raspredelennoj sisteme.
399
Last-modified: Thu, 12 Feb 1998 07:20:51 GMT