Ocenite etot tekst:





    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.




    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



    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.





    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.




    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
Ocenite etot tekst: