vatelyu 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®ektnye 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®edineniem 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®edinyat' 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 13.5 VYVODY 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. 13.6 UPRAZHNENIYA *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®yasnite, 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®yasnite, 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