Računalniki Windows internet

Upravljana porazdeljena arhitektura. Arhitektura porazdeljenega nadzornega sistema, ki temelji na rekonfigurabilnem večcevnem računalniškem okolju L-Net "transparentni" porazdeljeni datotečni sistemi

Porazdeljeni AIS je postal vsakdanja realnost. Številni korporativni AIS uporabljajo porazdeljene baze podatkov. Izdelane so bile metode distribucije podatkov in upravljanja porazdeljenih podatkov, arhitekturni pristopi, ki zagotavljajo razširljivost sistemov, ki izvajajo principe večstopenjske arhitekture odjemalec-strežnik, pa tudi arhitekturo srednjega sloja.

Mobilne arhitekture se začenjajo uporabljati v praksi. To velja tako za sisteme baz podatkov kot za spletne aplikacije.

Oživlja se pristop k gradnji porazdeljenih sistemov, ki temelji na arhitekturi peer-to-peer, pri katerem v nasprotju z arhitekturo odjemalec-strežnik, ki danes prevladuje v porazdeljenih sistemih, vloge sodelujočih strank v omrežju niso določene. Dodeljeni so glede na stanje v omrežju, na delovno obremenitev njegovih vozlišč.

V povezavi z intenzivnim razvojem komunikacijskih tehnologij se aktivno razvija mobilni AIS. Razvita so tehnična sredstva in programska oprema za njihovo izdelavo. To je privedlo do razvoja mobilnih sistemov baz podatkov. Številne raziskovalne skupine izvajajo raziskave o posebnih značilnostih takšnih sistemov in ustvarjajo njihove različne prototipe. Tehnologije Java so postale pomembno orodje za razvoj mobilne programske opreme.

Ustvarjen je bil standard Wireless Application Protocol (WAP), ki ga nekateri modeli mobilnih telefonov že podpirajo. Na podlagi WAP in XML je W3C razvil označevalni jezik za brezžično komunikacijo, WML (Wireless Markup Language).

Pri razvoju AIS se je več pozornosti začelo posvečati metapodatkom. Pri tem gre za korake v dveh smereh – standardiziranje predstavitve metapodatkov in zagotavljanje njihove podpore v sistemu.

AIS uporablja različne načine in sredstva za predstavitev metapodatkov (različne vrste skladišč metapodatkov). Pomanjkanje poenotenja na tem področju bistveno otežuje reševanje problemov mobilnosti aplikacij, ponovne uporabe in integracije informacijskih virov in informacijskih tehnologij ter reinženiringa AIS.

Za premagovanje teh težav se aktivno nadaljuje razvoj standardov metapodatkov, osredotočenih na različne informacijske tehnologije. Na tem področju že obstajajo številni mednarodni, nacionalni in industrijski standardi, ki opredeljujejo predstavitev metapodatkov in izmenjavo metapodatkov v AIS. Nekateri od njih so že pridobili status de facto standardov. Tu se bomo omejili na omembo le najpomembnejših med njimi.

Verjetno je bil prvi de facto standard za to kategorijo jezik opisa podatkov CODASYL za omrežne baze podatkov. Poimenovati je treba naslednje standarde: standard poizvedovalnega jezika SQL za relacijske baze podatkov, ki vsebuje definicijo tako imenovane informacijske sheme - niz predstavitev shem relacijskih baz podatkov; standardna komponenta objektne baze podatkov ODMG, ki opisuje vmesnike skladišča sheme objektov; mednarodni standard IRDS (Information Resource Dictionary Systems), ki opisuje sisteme za ustvarjanje in vzdrževanje imenikov informacijskih virov organizacije.

Nato je treba omeniti standard Common Warehouse Metamodel (CWM) za predstavljanje metapodatkov podatkovnega skladišča, ki ga je razvil konzorcij OMG, ki temelji na standardu OIM (Open Information Model), ki ga je predhodno ustvaril za širše namene konzorcij MDC (Meta Data Coalition). .

Novi XML za spletno tehnološko platformo vključuje tudi standarde za predstavitev metapodatkov. Podpora metapodatkom je ena najpomembnejših novosti spleta, ki korenito spreminja tehnologijo za upravljanje njegovih informacijskih virov. Medtem ko je bila podpora metapodatkom prvotno potrebna v tehnologijah baz podatkov, metapodatki niso bili podprti na spletu prve generacije.

Standardi spletnih metapodatkov vključujejo podmnožico jezika XML, ki se uporablja za opis logične strukture neke vrste dokumenta XML. Ta opis se imenuje DTD (Definicija vrste dokumenta). Poleg tega platforma XML vključuje standard XML Schema, ki ponuja naprednejše zmogljivosti za opis dokumentov XML. Standard Resource Definition Framework (RDF) opredeljuje preprost jezik za predstavitev znanja za opis vsebine dokumentov XML. Končno, nastajajoči standard OWL (Ontology Web Language) opredeljuje formalni jezik opisa ontologije za semantični splet.

Standard Unified Modeling Language (UML), ki zagotavlja predstavitev metapodatkov za vizualno analizo objektov CASE in orodja za načrtovanje, je razvil konzorcij OMG. Ta jezik je podprt v številnih programskih izdelkih CASE. OMG je ustvaril tudi standard za izmenjavo metapodatkov XML (XMI) za izmenjavo metapodatkov med orodji CASE z uporabo UML.

Tu je treba omeniti tudi standard Dublin Core (DC), nabor metapodatkovnih elementov za opis vsebine dokumentov različne narave. Ta standard je hitro postal priljubljen in našel zlasti široko uporabo v spletnem okolju (glej razdelek 3.3).

Delo na razvoju obstoječih in oblikovanju novih standardov za predstavitev metapodatkov za AIS se nadaljuje. Podrobnejše informacije o zadevnih standardih najdete v enciklopediji.

Po mnenju znanega strokovnjaka s področja računalništva E. Tanenbauma ni splošno sprejete in hkrati stroge definicije porazdeljenega sistema. Nekateri pametnjakovi trdijo, da je distribuirano tako računalniški sistem, pri katerem okvara računalnika, o obstoju katere uporabniki prej sploh niso posumili, vodi do prenehanja vsega njihovega dela. Pomemben del porazdeljenih računalniških sistemov na žalost izpolnjuje to definicijo, vendar se formalno nanaša le na sisteme z edinstveno točko ranljivosti ( eno samo točko odpovedi).

Pogosto je pri definiranju porazdeljenega sistema poudarek na delitvi njegovih funkcij med več računalniki. S tem pristopom se poljubno porazdeli računalniški sistem kjer je obdelava podatkov razdeljena med dva ali več računalnikov. Na podlagi definicije E. Tanenbauma lahko nekoliko ožje porazdeljen sistem opredelimo kot niz samostojnih računalnikov, povezanih s komunikacijskimi kanali, ki so z vidika uporabnika določene programske opreme videti kot ena celota.

Ta pristop k definiranju porazdeljenega sistema ima svoje pomanjkljivosti. Na primer, vse, kar se uporablja v takem porazdeljenem sistemu programsko opremo lahko deluje na enem računalniku, vendar z vidika zgornje definicije tak sistem ne bo več distribuiran. Zato bi moral koncept porazdeljenega sistema verjetno temeljiti na analizi programske opreme, ki tvori tak sistem.

Kot osnovo za opis interakcije dveh entitet upoštevajte splošni model interakcije odjemalec-strežnik, pri katerem ena od strank (odjemalec) sproži izmenjavo podatkov s pošiljanjem zahteve drugi strani (strežniku). Strežnik obdela zahtevo in po potrebi pošlje odgovor odjemalcu (slika 1.1).


riž. 1.1.

Interakcija v okviru modela odjemalec-strežnik je lahko sinhrona, ko odjemalec čaka, da strežnik obdela svojo zahtevo, ali asinhrona, pri kateri odjemalec pošlje zahtevo strežniku in nadaljuje njeno izvajanje, ne da bi čakal na strežnikovo zahtevo. odgovor. Model odjemalca in strežnika se lahko uporablja kot osnova za opis različnih interakcij. Za ta predmet je pomembna interakcija sestavnih delov programske opreme, ki tvori porazdeljeni sistem.


riž. 1.2.

Razmislite o določeni tipični aplikaciji, ki jo v skladu s sodobnimi koncepti lahko razdelimo na naslednje logične ravni (slika 1.2): Uporabniški vmesnik(PI), aplikacijska logika (LP) in dostop do podatkov (DD), delo z bazo podatkov (DB). Uporabnik sistema z njim komunicira prek uporabniškega vmesnika, baza podatkov shranjuje podatke, ki opisujejo domeno aplikacije, logična plast aplikacije pa izvaja vse algoritme, povezane z predmetno področje.

Ker so v praksi različni uporabniki sistema običajno zainteresirani za dostop do istih podatkov, bo najenostavnejša ločitev funkcij takšnega sistema med več računalniki ločitev logičnih plasti aplikacije med enim strežniškim delom aplikacije. , ki je odgovoren za dostop do podatkov, in odjemalski deli, ki se nahajajo na več računalnikih., ki izvajajo uporabniški vmesnik. Logiko aplikacije je mogoče dodeliti strežniku, odjemalcem ali deliti med njimi (slika 1.3).


riž. 1.3.

Arhitektura aplikacij, zgrajena na tem principu, se imenuje odjemalec-strežnik ali dvostopenjska. V praksi takšni sistemi pogosto niso razvrščeni kot porazdeljeni, formalno pa jih lahko štejemo za najpreprostejše predstavnike porazdeljenih sistemov.

Razvoj arhitekture odjemalec-strežnik je tristopenjska arhitektura, pri kateri so uporabniški vmesnik, logika aplikacije in dostop do podatkov ločeni v samostojne komponente sistema, ki lahko delujejo na neodvisnih računalnikih (slika 1.4).


riž. 1.4.

Zahtevo uporabnika v takih sistemih zaporedno obdelujejo odjemalski del sistema, strežnik aplikacijske logike in strežnik baz podatkov. Vendar pa se porazdeljeni sistem običajno razume kot sistem z bolj zapleteno arhitekturo kot tristopenjski.

V prejšnjem poglavju smo si ogledali tesno povezane večprocesorske sisteme s skupnim pomnilnikom, skupnimi podatkovnimi strukturami jedra in skupnim področjem, iz katerega se prikličejo procesi. Pogosto pa je zaželeno, da se procesorji dodelijo tako, da so neodvisni od delovnega okolja in delovnih pogojev za namene delitve virov. Recimo, da mora uporabnik osebnega računalnika dostopati do datotek, ki se nahajajo na večjem računalniku, a hkrati obdržati nadzor nad osebnim računalnikom. Čeprav nekateri programi, kot je uucp, podpirajo omrežni prenos datotek in druge omrežne funkcije, njihova uporaba uporabniku ne bo skrita, saj se uporabnik zaveda, da uporablja omrežje. Poleg tega je treba opozoriti, da programi, kot so urejevalniki besedil, ne delujejo z izbrisanimi datotekami, kot z običajnimi. Uporabniki bi morali imeti standardni nabor sistemskih funkcij UNIX in poleg možnega ozkega grla pri zmogljivosti ne bi smeli čutiti prehajanja strojnih meja. Tako se na primer delo sistemskih funkcij, ki odpirajo in berejo z datotekami na oddaljenih računalnikih, ne bi smelo razlikovati od njihovega dela z datotekami, ki pripadajo lokalnim sistemom.

Arhitektura porazdeljenega sistema je prikazana na sliki 13.1. Vsak računalnik, prikazan na sliki, je samostojna enota, sestavljena iz CPU-ja, pomnilnika in zunanjih naprav. Model se ne zlomi, čeprav računalnik nima lokalnega datotečnega sistema: imeti mora periferne naprave za komunikacijo z drugimi stroji, vse datoteke, ki mu pripadajo, pa se lahko nahajajo na drugem računalniku. Fizični pomnilnik, ki je na voljo vsakemu stroju, je neodvisen od procesov, ki se izvajajo na drugih strojih. V tem pogledu se porazdeljeni sistemi razlikujejo od tesno povezanih večprocesorskih sistemov, obravnavanih v prejšnjem poglavju. V skladu s tem jedro sistema na vsakem stroju deluje neodvisno od zunanjih pogojev delovanja porazdeljenega okolja.

Slika 13.1. Model sistema porazdeljene arhitekture


Porazdeljeni sistemi, dobro opisani v literaturi, tradicionalno spadajo v naslednje kategorije:

Periferni sistemi, ki so skupine strojev, ki imajo močno skupnost in so povezani z enim (običajno večjim) strojem. Periferni procesorji si delijo obremenitev s centralnim procesorjem in mu posredujejo vse klice operacijskega sistema. Cilj perifernega sistema je povečati splošno zmogljivost omrežja in zagotoviti zmožnost dodelitve procesorja posameznemu procesu v operacijskem okolju UNIX. Sistem se zažene kot ločen modul; Za razliko od drugih modelov porazdeljenih sistemov periferni sistemi nimajo prave avtonomije, razen v primerih, povezanih z dispečiranjem procesov in dodelitvijo lokalnega pomnilnika.

Porazdeljeni sistemi, kot je "Newcastle", ki omogočajo oddaljeno komunikacijo z imeni oddaljenih datotek v knjižnici (ime je vzeto iz članka "The Newcastle Connection" - glej). Izbrisane datoteke imajo BOM (razlikovno ime), ki na poti iskanja vsebuje posebne znake ali izbirno komponento imena, ki je pred korenom datotečnega sistema. Izvedba te metode ne vključuje sprememb v sistemskem jedru, zato je enostavnejša od drugih metod, obravnavanih v tem poglavju, vendar manj prilagodljiva.

Porazdeljeni sistemi so popolnoma pregledni, v katerih zadoščajo standardna razločna imena, da se nanašajo na datoteke, ki se nahajajo na drugih strojih; jedro mora prepoznati te datoteke kot izbrisane. Poti iskanja datotek, podane v njihovih sestavljenih imenih, prečkajo meje stroja na točkah vpetja, ne glede na to, koliko takih točk je oblikovanih, ko so datotečni sistemi nameščeni na diske.

V tem poglavju si bomo ogledali arhitekturo vsakega modela; vse podane informacije ne temeljijo na rezultatih posebnega razvoja, temveč na informacijah, objavljenih v različnih tehničnih člankih. To predpostavlja, da so protokolarni moduli in gonilniki naprav odgovorni za naslavljanje, usmerjanje, nadzor pretoka ter odkrivanje in popravljanje napak – z drugimi besedami, da je vsak model neodvisen od omrežja, ki se uporablja. Primeri uporabe sistemskih funkcij, prikazani v naslednjem razdelku za periferne sisteme, delujejo na podoben način za sisteme, kot je Newcastle, in za popolnoma pregledne sisteme, o čemer bomo govorili kasneje; zato jih bomo enkrat podrobno obravnavali, v poglavjih, ki so namenjeni drugim vrstam sistemov, pa se bomo osredotočili predvsem na značilnosti, ki te modele ločijo od vseh drugih.

13.1 PERIFERNI PROCESORJI

Arhitektura perifernega sistema je prikazana na sliki 13.2. Cilj te konfiguracije je izboljšati splošno zmogljivost omrežja s prerazporeditvijo tekočih procesov med CPE in perifernimi procesorji. Vsak od perifernih procesorjev nima na voljo nobenih drugih lokalnih perifernih naprav, razen tistih, ki jih potrebuje za komunikacijo s centralno procesno enoto. Datotečni sistem in vse naprave so na voljo centralnemu procesorju. Recimo, da se vsi uporabniški procesi izvajajo na perifernem procesorju in se ne premikajo med perifernimi procesorji; ko se prenesejo v procesor, ostanejo na njem do zaključka. Periferni procesor vsebuje lahko različico operacijskega sistema, ki je zasnovan za upravljanje lokalnih klicev v sistem, upravljanje prekinitev, dodeljevanje pomnilnika, delo z omrežnimi protokoli in z gonilnikom naprave za komunikacijo s centralnim procesorjem.

Ko je sistem inicializiran na osrednjem procesorju, jedro naloži lokalni operacijski sistem na vsakega od perifernih procesorjev prek komunikacijskih linij. Vsak proces, ki teče na periferiji, je povezan s satelitskim procesom, ki pripada osrednjemu procesorju (glej); ko proces, ki teče na perifernem procesorju, pokliče sistemsko funkcijo, ki zahteva samo storitve centralnega procesorja, periferni proces komunicira s svojim satelitom in zahteva se pošlje centralnemu procesorju v obdelavo. Satelitski proces izvaja sistemsko funkcijo in rezultate pošlje nazaj v periferni procesor. Razmerje med perifernim procesom in njegovim satelitom je podobno odnosu odjemalec-strežnik, ki smo ga podrobno obravnavali v 11. poglavju: periferni proces deluje kot odjemalec svojega satelita, ki podpira funkcije dela z datotečnim sistemom. V tem primeru ima proces oddaljenega strežnika samo enega odjemalca. V razdelku 13.4 si bomo ogledali strežniške procese z več odjemalci.


Slika 13.2. Konfiguracija perifernega sistema


Slika 13.3. Formati sporočil

Ko periferni proces pokliče sistemsko funkcijo, ki jo je mogoče obdelati lokalno, jedru ni treba poslati zahteve satelitskemu procesu. Torej, na primer, da bi pridobil dodaten pomnilnik, lahko proces pokliče funkcijo sbrk za lokalno izvajanje. Če pa so potrebne storitve centralnega procesorja, na primer za odpiranje datoteke, jedro kodira informacije o parametrih, posredovanih klicani funkciji, in pogojih izvajanja procesa v sporočilo, poslano satelitskemu procesu (slika 13.3). Sporočilo vsebuje znak, iz katerega sledi, da sistemsko funkcijo izvaja satelitski proces v imenu odjemalca, parametre, posredovane funkciji, in podatke o okolju izvajanja procesa (na primer identifikacijske kode uporabnika in skupine), ki so različni za različne funkcije. Preostanek sporočila so podatki spremenljive dolžine (na primer sestavljeno ime datoteke ali podatki, ki se zapišejo s funkcijo pisanja).

Satelitski proces čaka na zahteve perifernega procesa; ko je zahteva prejeta, dekodira sporočilo, določi vrsto sistemske funkcije, jo izvede in pretvori rezultate v odgovor, poslan perifernemu procesu. Odgovor poleg rezultatov izvajanja sistemske funkcije vključuje sporočilo o napaki (če obstaja), številko signala in niz podatkov spremenljive dolžine, ki vsebuje na primer informacije, prebrane iz datoteke. Periferni proces se ustavi, dokler ne prejme odgovora, potem ko ga prejme, dešifrira in posreduje rezultate uporabniku. To je splošna shema za ravnanje s klici v operacijski sistem; zdaj pa preidimo na podrobnejšo obravnavo posameznih funkcij.

Če želite razložiti, kako deluje periferni sistem, upoštevajte številne funkcije: getppid, open, write, fork, exit in signal. Funkcija getppid je precej enostavna, saj obravnava preproste obrazce zahtev in odgovorov, ki se izmenjujejo med periferno napravo in CPE. Jedro na perifernem procesorju generira sporočilo, ki ima predznak, iz katerega sledi, da je zahtevana funkcija funkcija getppid, in pošlje zahtevo centralnemu procesorju. Satelitski proces na osrednjem procesorju prebere sporočilo iz perifernega procesorja, dešifrira vrsto sistemske funkcije, jo izvede in pridobi identifikator svojega nadrejenega. Nato ustvari odgovor in ga posreduje čakajočemu perifernemu procesu na drugem koncu komunikacijske linije. Ko periferni procesor prejme odgovor, ga posreduje procesu, ki je poklical sistemsko funkcijo getppid. Če periferni proces shranjuje podatke (kot je ID procesa nadrejenega) v lokalni pomnilnik, mu sploh ni treba komunicirati s svojim spremljevalcem.

Če se pokliče funkcija odprtega sistema, periferni proces svojemu spremljevalcu pošlje sporočilo, ki vključuje ime datoteke in druge parametre. Če je uspešen, spremljevalni proces dodeli indeks in vstopno točko tabeli datotek, dodeli vnos v tabeli deskriptorjev uporabniške datoteke v svojem prostoru in vrne deskriptor datoteke perifernemu procesu. Ves ta čas na drugem koncu komunikacijske linije periferni proces čaka na odgovor. Nima na razpolago nobenih struktur, ki bi hranile podatke o datoteki, ki se odpira; Deskriptor, ki ga vrne open, je kazalec na vnos v spremljevalnem procesu v tabeli deskriptorjev uporabniške datoteke. Rezultati izvajanja funkcije so prikazani na sliki 13.4.


Slika 13.4. Klicanje odprte funkcije iz perifernega procesa

Če se izvede klic sistemske funkcije write, periferni procesor generira sporočilo, sestavljeno iz znaka funkcije pisanja, deskriptorja datoteke in količine podatkov, ki jih je treba zapisati. Nato iz prostora perifernega procesa preko komunikacijskega voda kopira podatke v satelitski proces. Satelitski proces dešifrira prejeto sporočilo, prebere podatke iz komunikacijske linije in jih zapiše v ustrezno datoteko (deskriptor, ki je v sporočilu, se uporablja kot kazalec, na katerega indeks in zapis, o katerem se uporablja v datotečni tabeli ); vsa ta dejanja se izvajajo na osrednjem procesorju. Ob koncu dela satelitski proces pošlje perifernemu procesu sporočilo, ki potrjuje prejem sporočila in vsebuje število bajtov podatkov, ki so bili uspešno kopirani v datoteko. Operacija branja je podobna; satelit obvesti periferni proces o številu dejansko prebranih bajtov (v primeru branja podatkov s terminala ali iz kanala ta številka ne sovpada vedno z zneskom, navedenim v zahtevi). Za izvajanje ene ali druge funkcije bo morda potrebno večkratno pošiljanje informacijskih sporočil po omrežju, kar je odvisno od količine poslanih podatkov in velikosti omrežnih paketov.

Edina funkcija, ki jo je treba spremeniti med delovanjem na CPU, je sistemska funkcija vilic. Ko proces izvede to funkcijo na CPU, jedro zanj izbere periferni procesor in pošlje sporočilo posebnemu procesu - strežniku, ki slednjemu sporoči, da bo začel razkladati trenutni proces. Ob predpostavki, da je strežnik sprejel zahtevo, jedro uporabi fork za ustvarjanje novega perifernega procesa, ki dodeli vnos tabele procesov in naslovni prostor. Osrednji procesor v periferni procesor razloži kopijo procesa, ki je poklical funkcijo fork, prepiše novo dodeljeni naslovni prostor, ustvari lokalni satelit za komunikacijo z novim perifernim procesom in pošlje sporočilo periferni napravi, da inicializira programski števec za novi proces. Satelitski proces (na CPU) je potomec procesa, ki je imenoval fork; periferni proces je tehnično potomec strežniškega procesa, logično pa je potomec procesa, ki je imenoval funkcijo fork. Strežniški proces nima logične povezave z otrokom, ko se razcepitev konča; edina naloga strežnika je pomagati razbremeniti otroka. Zaradi močne povezave med komponentami sistema (periferni procesorji nimajo avtonomije) imata periferni in satelitski proces enako identifikacijsko kodo. Razmerje med procesi je prikazano na sliki 13.5: neprekinjena črta prikazuje odnos starš-otrok, črtkana črta pa razmerje med vrstniki.


Slika 13.5. Izvajanje funkcije fork na CPU

Ko proces izvede funkcijo vilice na perifernem procesorju, pošlje sporočilo svojemu satelitu na CPU, ki nato izvede celotno zaporedje zgoraj opisanih dejanj. Satelit izbere nov periferni procesor in opravi potrebne priprave za razbremenitev slike starega procesa: pošlje nadrejenemu perifernemu procesu zahtevo za branje njegove slike, na katero se na drugem koncu začne prenos zahtevanih podatkov. komunikacijskega kanala. Satelit prebere preneseno sliko in jo prepiše perifernemu potomcu. Ko je razlaganje slike končano, se satelit razcepi, ustvari svojega otroka na CPE in posreduje vrednost programskega števca perifernemu otroku, tako da slednji ve, s katerega naslova naj začne izvajanje. Očitno bi bilo bolje, če bi bil otrok spremljevalnega procesa dodeljen perifernemu otroku kot nadrejenemu, vendar se v našem primeru generirani procesi lahko izvajajo na drugih perifernih procesorjih, ne le na tistem, na katerem so ustvarjeni. Razmerje med procesi na koncu funkcije vilic je prikazano na sliki 13.6. Ko periferni proces konča svoje delo, pošlje ustrezno sporočilo satelitskemu procesu, ki se tudi konča. Spremljevalni proces ne more sprožiti zaustavitve.


Slika 13.6. Izvajanje funkcije vilice na perifernem procesorju

Tako v večprocesorskih kot pri enoprocesorskih sistemih se mora proces na signale odzvati na enak način: proces bodisi zaključi izvajanje sistemske funkcije, preden preveri signale, ali, nasprotno, po prejemu signala takoj zapusti stanje zaustavljenega stanja in nenadoma prekine delo sistemske funkcije, če je to skladno s prioriteto, s katero je bil suspendiran. Ker satelitski proces izvaja sistemske funkcije v imenu perifernega procesa, se mora na signale odzivati ​​v koordinaciji s slednjim. Če v enoprocesorskem sistemu signal povzroči, da proces prekine funkcijo, bi se moral spremljevalni proces v večprocesorskem sistemu obnašati na enak način. Enako lahko rečemo v primeru, ko signal pozove proces, da prekine svoje delo z izhodno funkcijo: periferni proces se zaključi in pošlje ustrezno sporočilo satelitskemu procesu, ki se seveda tudi konča.

Ko periferni proces pokliče funkcijo signalnega sistema, shrani trenutne informacije v lokalne tabele in pošlje sporočilo svojemu satelitu, v katerem ga obvesti, ali je treba določen signal sprejeti ali prezreti. Satelitskemu procesu je vseeno, ali prestreže signal ali privzeto dejanje. Reakcija procesa na signal je odvisna od treh dejavnikov (slika 13.7): ali je signal sprejet, medtem ko proces izvaja sistemsko funkcijo, ali je s signalno funkcijo izvedena indikacija za ignoriranje signala, ali se signal pojavi na istem perifernem procesorju ali na kakšnem drugem. Pojdimo na premislek o različnih možnostih.


algoritem sighandle / * algoritem za obdelavo signala * /
če (trenutni proces je nečiji spremljevalec ali ima prototip)
če (signal je prezrt)
če (signal je prišel med izvajanjem sistemske funkcije)
postavite signal pred satelitski proces;
pošiljanje signalnega sporočila perifernemu procesu;
drugače (/ * periferni proces * /
/ * ali je bil med izvajanjem sistemske funkcije prejet signal ali ne * /
pošiljanje signala satelitskemu procesu;
algoritem satelitski_end_syscall / * zaključek sistemske funkcije, ki jo kliče periferni proces * /
vhodni podatki: odsoten
odtis: brez
če (med izvajanjem sistemske funkcije je bila prejeta prekinitev)
pošiljanje prekinitvenega sporočila, signala perifernemu procesu;
drugače / * izvajanje sistemske funkcije ni bilo prekinjeno * /
pošlji odgovor: omogoči zastavico, ki prikazuje prihod signala;

Slika 13.7. Obdelava signalov v perifernem sistemu


Recimo, da je periferni proces prekinil svoje delo, medtem ko satelitski proces v njegovem imenu izvaja sistemsko funkcijo. Če se signal pojavi drugje, ga satelitski proces zazna prej kot periferni proces. Možni so trije primeri.

1. Če med čakanjem na neki dogodek satelitski proces ni prešel v zaustavljeno stanje, iz katerega bi izstopil ob prejemu signala, izvede sistemsko funkcijo do konca, pošlje rezultate izvedbe perifernemu procesu in prikaže kateri od signalov je prejel.

2. Če je procesu naloženo, da prezre to vrsto signala, satelit še naprej sledi algoritmu za izvajanje sistemske funkcije, ne da bi zapustil stanje začasne zaustavitve z longjmp. V odgovoru, poslanem perifernemu procesu, ne bo sporočila o prejetem signalu.

3. Če satelitski proces ob prejemu signala prekine izvajanje sistemske funkcije (z longjmp), o tem obvesti periferni proces in mu sporoči številko signala.

Periferni proces išče informacije o prejemu signalov v prejetem odgovoru in, če obstajajo, obdela signale, preden zapusti sistemsko funkcijo. Tako se obnašanje procesa v večprocesorskem sistemu popolnoma ujema z njegovim obnašanjem v enoprocesorskem sistemu: bodisi zapusti, ne da bi zapustil način jedra, bodisi pokliče funkcijo obdelave signala po meri ali pa ignorira signal in uspešno zaključi sistemsko funkcijo.


Slika 13.8. Prekinitev med izvajanjem sistemske funkcije

Recimo, da periferni proces pokliče funkcijo branja s terminala, ki je povezan s centralnim procesorjem, in začasno ustavi svoje delo, medtem ko satelitski proces izvaja funkcijo (slika 13.8). Če uporabnik pritisne tipko za prekinitev, jedro CPU pošlje signal satelitskemu procesu. Če je bil satelit v suspendiranem stanju in je čakal na del podatkov iz terminala, takoj zapusti to stanje in prekine funkcijo branja. V odgovoru na zahtevo perifernega procesa satelit zagotovi kodo napake in številko signala, ki ustreza prekinitvi. Periferni proces analizira odziv in, ker sporočilo pravi, da je prispela prekinitev, pošlje signal sam sebi. Pred izhodom iz funkcije branja periferno jedro preveri signalizacijo, zazna prekinitveni signal iz satelitskega procesa in ga obdela kot običajno. Če periferni proces zaradi prejema prekinitvenega signala prekine svoje delo z izhodno funkcijo, ta funkcija poskrbi za uničenje satelitskega procesa. Če periferni proces prestreže prekinitvene signale, pokliče uporabniško definirano funkcijo za obdelavo signalov in uporabniku po izhodu iz funkcije branja vrne kodo napake. Po drugi strani pa, če satelit izvaja funkcijo sistema stat v imenu perifernega procesa, ne bo prekinil njegovega izvajanja, ko prejme signal (statska funkcija bo zajamčeno zapustila vsak premor, saj ima omejen čas čakanja na vir ). Satelit zaključi izvajanje funkcije in vrne številko signala perifernemu procesu. Periferni proces pošlje signal sam sebi in ga prejme ob izhodu iz sistemske funkcije.

Če se na perifernem procesorju med izvajanjem sistemske funkcije pojavi signal, bo periferni proces v temi, ali se bo kmalu vrnil pod nadzor iz satelitskega procesa ali pa bo slednji za nedoločen čas prešel v suspendirano stanje. Periferni proces pošlje satelitu posebno sporočilo, ki ga obvesti o pojavu signala. Jedro na CPU dešifrira sporočilo in pošlje signal satelitu, katerega reakcija na sprejem signala je opisana v prejšnjih odstavkih (nenormalno prenehanje izvajanja funkcije ali njeno dokončanje). Periferni proces ne more poslati sporočila satelitu neposredno, ker je satelit zaseden z izvajanjem sistemske funkcije in ne bere podatkov iz komunikacijske linije.

Glede na primer branja je treba opozoriti, da periferni proces nima pojma, ali njegov spremljevalec čaka na vnos s terminala ali izvaja druga dejanja. Periferni proces pošlje satelitu signalno sporočilo: če je satelit v začasnem stanju s prekinljivo prioriteto, takoj zapusti to stanje in prekine delovanje sistema; v nasprotnem primeru se funkcija prenese do uspešnega zaključka.

Na koncu razmislite o primeru prihoda signala v času, ki ni povezan z izvajanjem sistemske funkcije. Če signal izvira iz drugega procesorja, ga satelit prejme najprej in pošlje signalno sporočilo perifernemu procesu, ne glede na to, ali se signal nanaša na periferni proces ali ne. Periferno jedro dešifrira sporočilo in pošlje signal procesu, ki se nanj odzove na običajen način. Če je signal izviral iz perifernega procesorja, proces izvaja standardna dejanja, ne da bi se zatekel k storitvam svojega satelita.

Ko periferni proces pošlje signal drugim perifernim procesom, kodira sporočilo o prekinitvi klica in ga pošlje satelitskemu procesu, ki lokalno izvede poklicano funkcijo. Če se nekateri procesi, ki jim je signal namenjen, nahajajo na drugih perifernih procesorjih, bodo njihovi sateliti prejeli signal (in se nanj odzvali, kot je opisano zgoraj).

13.2 VRSTA KOMUNIKACIJE NEWCASTLE

V prejšnjem razdelku smo obravnavali vrsto tesno povezanega sistema, za katerega je značilno pošiljanje vseh klicev funkcij podsistema za upravljanje datotek, ki se pojavijo na perifernem procesorju, na oddaljeni (centralni) procesor. Zdaj se obrnemo na obravnavo sistemov s šibkejšo povezavo, ki so sestavljeni iz strojev, ki kličejo datoteke, ki se nahajajo na drugih strojih. V omrežju osebnih računalnikov in delovnih postaj, na primer, uporabniki pogosto dostopajo do datotek, ki se nahajajo na velikem računalniku. V naslednjih dveh razdelkih si bomo ogledali sistemske konfiguracije, v katerih se vse sistemske funkcije izvajajo v lokalnih podsistemih, hkrati pa je možen dostop do datotek (prek funkcij podsistema za upravljanje datotek), ki se nahajajo na drugih strojih.

Ti sistemi uporabljajo eno od naslednjih dveh poti za prepoznavanje izbrisanih datotek. V nekaterih sistemih je sestavljenemu imenu datoteke dodan poseben znak: komponenta imena, ki je pred tem znakom, identificira stroj, preostanek imena je datoteka na tem računalniku. Torej, na primer ugledno ime


"sftig! / fs1 / mjb / rje"


identificira datoteko "/ fs1 / mjb / rje" na stroju "sftig". Ta shema identifikacije datotek sledi konvenciji uucp za prenos datotek med sistemi, podobnimi UNIX. V drugi shemi se izbrisane datoteke identificirajo z dodajanjem posebne predpone imenu, na primer:


/../sftig/fs1/mjb/rje


kjer je "/../" predpona, ki označuje, da je datoteka izbrisana; druga komponenta imena datoteke je ime oddaljenega računalnika. Ta shema uporablja znano sintakso imena datoteke UNIX, zato se za razliko od prve sheme uporabniškim programom ni treba prilagajati uporabi imen z nenavadno konstrukcijo (glej).


Slika 13.9. Oblikovanje zahtev za datotečni strežnik (procesor)


Preostanek tega razdelka bomo posvetili modelu sistema, ki uporablja povezavo Newcastle, pri katerem se jedro ne ukvarja s prepoznavanjem izbrisanih datotek; ta funkcija je v celoti dodeljena podprogramom iz standardne knjižnice C, ki v tem primeru igrajo vlogo sistemskega vmesnika. Te rutine analizirajo prvo komponento imena datoteke, ki v obeh opisanih metodah identifikacije vsebuje znak oddaljenosti datoteke. To je odstopanje od rutine, v kateri knjižnične rutine ne razčlenjujejo imen datotek. Slika 13.9 prikazuje, kako so oblikovane zahteve do datotečnega strežnika. Če je datoteka lokalna, lokalno sistemsko jedro zahteva normalno obdelavo. Razmislite o nasprotnem primeru:


odprt ("/../ sftig / fs1 / mjb / rje / datoteka", O_RDONLY);


Odprti podprogram v knjižnici C razčleni prvi dve komponenti razločenega imena datoteke in ve, da poišče datoteko na oddaljenem računalniku "sftig". Za pridobitev informacij o tem, ali je bil proces prej povezan z danim računalnikom, podprogram zažene posebno strukturo, v kateri si zapomni to dejstvo in v primeru negativnega odgovora vzpostavi povezavo z datotečnim strežnikom, ki teče na oddaljenem stroj. Ko proces oblikuje svojo prvo zahtevo za oddaljeno obdelavo, oddaljeni strežnik zahtevo potrdi, če je potrebno, zapiše v polja uporabniške in skupinske identifikacijske kode ter ustvari satelitski proces, ki bo deloval v imenu odjemalskega procesa.

Za izpolnjevanje zahtev odjemalca mora satelit imeti enaka dovoljenja za datoteke na oddaljenem računalniku kot odjemalec. Z drugimi besedami, uporabnik "mjb" mora imeti enake pravice dostopa do oddaljenih in lokalnih datotek. Na žalost je možno, da identifikacijska koda odjemalca "mjb" sovpada z identifikacijsko kodo drugega odjemalca na oddaljenem računalniku. Tako bi morali skrbniki sistema na napravah, ki delujejo v omrežju, bodisi zagotoviti, da je vsakemu uporabniku dodeljena identifikacijska koda, ki je edinstvena za celotno omrežje, ali pa izvesti pretvorbo kode v času oblikovanja zahteve za omrežno storitev. Če tega ne storite, bo imel spremljevalni proces pravice drugega odjemalca na oddaljenem računalniku.

Bolj občutljivo vprašanje je pridobivanje pravic superuporabnika v zvezi z delom z oddaljenimi datotekami. Po eni strani odjemalec superuporabnika ne bi smel imeti enakih pravic nad oddaljenim sistemom, da ne bi zavajal varnostnih kontrol oddaljenega sistema. Po drugi strani pa nekateri programi, če jim ne bodo podeljene pravice superuporabnika, preprosto ne bodo mogli delovati. Primer takega programa je program mkdir (glejte 7. poglavje), ki ustvari nov imenik. Oddaljeni sistem odjemalcu ne bi dovolil, da ustvari nov imenik, ker pravice superuporabnika ob izbrisu ne veljajo. Problem ustvarjanja oddaljenih imenikov je resen razlog za revizijo sistemske funkcije mkdir v smeri razširitve njenih zmogljivosti pri samodejnem vzpostavljanju vseh povezav, ki so potrebne za uporabnika. Še vedno pa je pogosta težava, da programi setuid (kot je program mkdir) pridobijo privilegije superuporabnika nad oddaljenimi datotekami. Morda bi bila najboljša rešitev tega problema nastavitev dodatnih značilnosti za datoteke, ki opisujejo dostop oddaljenih superuporabnikov do njih; na žalost bi to zahtevalo spremembe strukture indeksa diska (v smislu dodajanja novih polj) in bi povzročilo preveč nereda v obstoječih sistemih.

Če odprti podprogram uspe, lokalna knjižnica pusti ustrezno opombo o tem v uporabniško dostopni strukturi, ki vsebuje naslov omrežnega vozlišča, ID procesa satelitskega procesa, deskriptor datoteke in druge podobne informacije. Knjižnični rutini branja in pisanja na podlagi deskriptorja datoteke določijo, ali je datoteka izbrisana, in če je tako, pošljejo sporočilo satelitu. Odjemalski proces komunicira s svojim spremljevalcem v vseh primerih dostopa do sistemskih funkcij, ki zahtevajo storitve oddaljenega računalnika. Če proces dostopa do dveh datotek, ki se nahajata na istem oddaljenem računalniku, uporablja en satelit, če pa se datoteke nahajajo na različnih strojih, se že uporabljata dva satelita: po en na vsaki napravi. Dva satelita se uporabljata tudi, ko dva procesa dostopata do datoteke na oddaljenem računalniku. S priklicem sistemske funkcije preko satelita proces generira sporočilo, ki vključuje številko funkcije, ime iskalne poti in druge potrebne informacije, podobne tistim, ki so vključene v strukturo sporočila v sistemu z perifernimi procesorji.

Mehanizem za izvajanje operacij v trenutnem imeniku je bolj zapleten. Ko proces izbere oddaljeni imenik kot trenutni, rutina knjižnice pošlje sporočilo satelitu, ki spremeni trenutni imenik, in rutina si zapomni, da je imenik izbrisan. V vseh primerih, ko se ime iskalne poti začne z znakom, ki ni poševnica naprej (/), podprogram pošlje ime oddaljenemu računalniku, kjer ga satelitski proces usmeri iz trenutnega imenika. Če je trenutni imenik lokalni, rutina preprosto posreduje ime iskalne poti v lokalno sistemsko jedro. Sistemska funkcija chroot v oddaljenem imeniku je podobna, vendar je za lokalno jedro neopažena; strogo gledano, lahko proces prezre to operacijo, saj samo knjižnica beleži njeno izvedbo.

Ko proces pokliče fork, ustrezna knjižnična rutina pošlje sporočila vsakemu satelitu. Satelitski procesi se razvejajo in pošljejo svoje podrejene ID-je nadrejenemu odjemalcu. Proces odjemalca zažene sistemsko funkcijo fork, ki prenese nadzor na otroka, ki ga ustvari; lokalni otrok je v dialogu z oddaljenim satelitskim otrokom, katerega naslovi so shranjeni v knjižnični rutini. Ta razlaga funkcije fork olajša satelitskim procesom nadzor nad odprtimi datotekami in trenutnimi imeniki. Ko se proces, ki dela z oddaljenimi datotekami, konča (s klicem funkcije za izhod), podprogram pošlje sporočila vsem svojim oddaljenim satelitom, tako da ti storijo enako, ko prejmejo sporočilo. Na vajah so obravnavani določeni vidiki izvajanja funkcij exec in exit sistema.

Prednost povezave Newcastle je, da postane dostop procesa do oddaljenih datotek pregleden (neviden uporabniku), ne da bi bilo treba spreminjati sistemsko jedro. Vendar ima ta razvoj številne pomanjkljivosti. Prvič, med njegovim izvajanjem je možno zmanjšanje zmogljivosti sistema. Zaradi uporabe razširjene knjižnice C se velikost pomnilnika, ki ga uporablja vsak proces, poveča, tudi če proces ne dostopa do oddaljenih datotek; knjižnica podvaja funkcije jedra in zahteva več pomnilniškega prostora. Povečanje velikosti procesov podaljšuje zagonsko obdobje in lahko povzroči več sporov za pomnilniške vire, kar ustvarja pogoje za pogostejše razkladanje in ostranjevanje opravil. Lokalne zahteve se bodo zaradi podaljševanja trajanja vsakega klica v jedro izvajale počasneje, prav tako pa se lahko upočasni obdelava oddaljenih zahtev, povečajo se stroški njihovega pošiljanja po omrežju. Dodatna obdelava oddaljenih zahtev na ravni uporabnika poveča število preklopov konteksta, operacij razkladanja in zamenjave. Končno, za dostop do oddaljenih datotek je treba programe znova prevesti z uporabo novih knjižnic; stari programi in dostavljeni objektni moduli brez tega ne bodo mogli delati z oddaljenimi datotekami. Vse te pomanjkljivosti niso v sistemu, opisanem v naslednjem razdelku.

13.3 "PROZORNI" DISTRIBUIRANI DATOTEČNI SISTEMI

Izraz "transparentna dodelitev" pomeni, da lahko uporabniki na enem računalniku dostopajo do datotek na drugem računalniku, ne da bi se zavedali, da prečkajo meje stroja, tako kot na svojem računalniku, ko preklapljajo iz enega datotečnega sistema v drugega, prečkajo točke priklopa. Imena, s katerimi se procesi nanašajo na datoteke, ki se nahajajo na oddaljenih računalnikih, so podobna imenom lokalnih datotek: v njih ni posebnih znakov. V konfiguraciji, prikazani na sliki 13.10, je imenik "/ usr / src", ki pripada stroju B, "pritrjen" v imenik "/ usr / src", ki pripada stroju A. ista sistemska izvorna koda, ki jo tradicionalno najdemo v "/ usr / src" imenik. Uporabniki, ki izvajajo na stroju A, lahko dostopajo do datotek, ki se nahajajo na stroju B z uporabo običajne sintakse pisanja imen datotek (na primer: "/usr/src/cmd/login.c"), jedro pa se samo odloči, ali je datoteka oddaljena ali lokalna. . Uporabniki, ki izvajajo na stroju B, imajo dostop do svojih lokalnih datotek (ne zavedajo se, da lahko uporabniki naprave A dostopajo do istih datotek), vendar pa nimajo dostopa do datotek, ki se nahajajo na stroju A. Seveda so možne tudi druge možnosti, v zlasti tiste, v katerih so vsi oddaljeni sistemi nameščeni v korenu lokalnega sistema, tako da lahko uporabniki dostopajo do vseh datotek na vseh sistemih.


Slika 13.10. Datotečni sistemi po oddaljeni namestitvi

Podobnosti med priklopom lokalnih datotečnih sistemov in omogočanjem dostopa do oddaljenih datotečnih sistemov so spodbudile prilagoditev funkcije priklopa na oddaljene datotečne sisteme. V tem primeru ima jedro na voljo tabelo za priklop razširjenega formata. Z izvajanjem funkcije mount jedro organizira omrežno povezavo z oddaljenim računalnikom in shrani informacije, ki označujejo to povezavo, v tabeli za priklop.

Zanimiva težava je povezana z imeni poti, ki vključujejo "..". Če proces ustvari trenutni imenik iz oddaljenega datotečnega sistema, bo uporaba znakov ".." v imenu bolj verjetno vrnila proces v lokalni datotečni sistem in ne dostopala do datotek nad trenutnim imenikom. Če se vrnemo nazaj na sliko 13.10, upoštevajte, da ko bo proces, ki pripada stroju A, ki je predhodno izbral trenutni imenik "/ usr / src / cmd", ki se nahaja v oddaljenem datotečnem sistemu, izvedel ukaz



trenutni imenik bo korenski imenik stroja A, ne stroja B. Algoritem namei v jedru oddaljenega sistema po prejemu zaporedja znakov ".." preveri, ali je klicni proces agent odjemalskega procesa , in če je tako, nastavi, ali odjemalec obravnava trenutni delovni imenik kot koren oddaljenega datotečnega sistema.

Komunikacija z oddaljenim računalnikom poteka v eni od dveh oblik: klic oddaljenega postopka ali klic oddaljene sistemske funkcije. V prvi obliki vsak postopek jedra, ki se ukvarja z indeksi, preveri, ali indeks kaže na oddaljeno datoteko, in če je tako, pošlje zahtevo oddaljenemu računalniku za izvedbo določene operacije. Ta shema se seveda ujema z abstraktno strukturo podpore za datotečne sisteme različnih vrst, opisano v zadnjem delu 5. poglavja. Tako lahko dostop do oddaljene datoteke sproži prenos več sporočil po omrežju, katerih število je določeno s številom implicitnih operacij v datoteki, z ustreznim povečanjem odzivnega časa na zahtevo, ob upoštevanju čakalne dobe, sprejete v omrežju. Vsak nabor oddaljenih operacij vključuje vsaj akcije za zaklepanje indeksa, štetje referenc itd. Za izboljšanje modela so bile predlagane različne optimizacijske rešitve, povezane z združevanjem več operacij v eno poizvedbo (sporočilo) in shranjevanjem najpomembnejših podatkov (cm. ).


Slika 13.11. Odpiranje oddaljene datoteke


Razmislite o postopku, ki odpre oddaljeno datoteko "/usr/src/cmd/login.c", kjer je "src" točka priklopa. Z razčlenitvijo imena datoteke (z uporabo sheme namei-iget) jedro zazna, da je datoteka izbrisana, in pošlje zahtevo gostiteljskemu računalniku, da dobi zaklenjeni indeks. Ko prejme želeni odgovor, lokalno jedro ustvari kopijo indeksa v pomnilniku, ki ustreza oddaljeni datoteki. Nato jedro preveri potrebne pravice dostopa do datoteke (na primer za branje) tako, da pošlje drugo sporočilo oddaljenemu računalniku. Odprti algoritem se nadaljuje v celoti v skladu z načrtom, opisanim v 5. poglavju, in po potrebi pošilja sporočila oddaljenemu računalniku, dokler algoritem ni končan in se indeks sprosti. Razmerje med podatkovnimi strukturami jedra po zaključku odprtega algoritma je prikazano na sliki 13.11.

Če odjemalec pokliče sistemsko funkcijo branja, odjemalsko jedro zaklene lokalni indeks, izda zaklepanje oddaljenega indeksa, zahtevo za branje, kopira podatke v lokalni pomnilnik, izda zahtevo za sprostitev oddaljenega indeksa in sprosti lokalni indeks . Ta shema je skladna s semantiko obstoječega enoprocesorskega jedra, vendar pogostost uporabe omrežja (več klicev na vsako sistemsko funkcijo) zmanjša zmogljivost celotnega sistema. Za zmanjšanje pretoka sporočil v omrežju pa je mogoče več operacij združiti v eno zahtevo. V primeru s funkcijo branja lahko odjemalec strežniku pošlje eno splošno zahtevo za "branje", strežnik pa se sam odloči, da zgrabi in sprosti indeks, ko se izvede. Zmanjšanje omrežnega prometa je mogoče doseči tudi z uporabo oddaljenih medpomnilnikov (kot smo razpravljali zgoraj), vendar je treba paziti, da se funkcije sistemske datoteke, ki uporabljajo te medpomnilnike, pravilno izvajajo.

Pri drugi obliki komunikacije z oddaljenim računalnikom (klic funkciji oddaljenega sistema) lokalno jedro zazna, da je sistemska funkcija povezana z oddaljeno datoteko, in pošlje parametre, določene v svojem klicu, oddaljenemu sistemu, ki izvede funkcijo in vrne rezultate odjemalcu. Odjemalski stroj prejme rezultate izvajanja funkcije in zapusti stanje klica. Večino sistemskih funkcij je mogoče izvesti z uporabo samo ene omrežne zahteve in prejetja odgovora po razumnem času, vendar vse funkcije ne ustrezajo temu modelu. Tako na primer jedro ob prejemu določenih signalov ustvari datoteko za proces, imenovano "jedro" (7. poglavje). Ustvarjanje te datoteke ni povezano z določeno sistemsko funkcijo, ampak na koncu izvede več operacij, kot so ustvarjanje datoteke, preverjanje dovoljenj in izvajanje niza zapisov.

V primeru funkcije odprtega sistema zahteva za izvedbo funkcije, poslana oddaljenemu računalniku, vključuje del imena datoteke, ki ostane po izključitvi komponent imena poti iskanja, ki razlikujejo oddaljeno datoteko, kot tudi različne zastavice. V prejšnjem primeru odpiranja datoteke "/usr/src/cmd/login.c" jedro pošlje ime "cmd / login.c" oddaljenemu računalniku. Sporočilo vključuje tudi poverilnice, kot so identifikacijske kode uporabnika in skupine, ki so potrebne za preverjanje dovoljenj za datoteke na oddaljenem računalniku. Če je od oddaljenega računalnika prejet odgovor, ki kaže na uspešno odprto funkcijo, lokalno jedro pridobi prosti indeks v pomnilnik lokalnega računalnika in ga označi kot indeks oddaljene datoteke, shrani informacije o oddaljenem računalniku in oddaljenem indeksu ter rutinsko dodeli nov vnos v datotečni tabeli. V primerjavi z resničnim indeksom na oddaljenem računalniku je indeks, ki je v lasti lokalnega stroja, formalen in ne krši konfiguracije modela, ki je na splošno enaka konfiguraciji, ki se uporablja pri klicanju oddaljene procedure (slika 13.11). Če funkcija, ki jo je poklical proces, dostopa do oddaljene datoteke s svojim deskriptorjem, lokalno jedro iz (lokalnega) indeksa ve, da je datoteka oddaljena, oblikuje zahtevo, ki vključuje klicano funkcijo, in jo pošlje oddaljenemu računalniku. Zahteva vsebuje kazalec na oddaljeni indeks, s katerim lahko satelitski proces identificira samo oddaljeno datoteko.

Po prejemu rezultata izvajanja katere koli sistemske funkcije se lahko jedro zateče k storitvam posebnega programa, da ga obdela (po zaključku katerega bo jedro končalo delo s funkcijo), ker se lokalna obdelava rezultatov uporablja v enoprocesorskem sistemu. ni vedno primeren za sistem z več procesorji. Posledično so možne spremembe v semantiki sistemskih algoritmov, katerih cilj je zagotoviti podporo za izvajanje oddaljenih sistemskih funkcij. Hkrati pa v omrežju kroži minimalen tok sporočil, ki zagotavlja minimalni odzivni čas sistema na dohodne zahteve.

13.4 DISTRIBUIRANI MODEL BREZ PROCESOV PRENOSA

Uporaba prenosnih procesov (satelitskih procesov) v preglednem porazdeljenem sistemu olajša spremljanje izbrisanih datotek, vendar je tabela procesov oddaljenega sistema preobremenjena s satelitskimi procesi, ki večino časa mirujejo. V drugih shemah se za obdelavo oddaljenih zahtev uporabljajo posebni strežniški procesi (glej in). Oddaljeni sistem ima nabor (zbirko) strežniških procesov, ki jih občasno dodeli za obdelavo dohodnih oddaljenih zahtev. Po obdelavi zahteve se strežniški proces vrne v področje in preide v stanje, ki je pripravljeno za obdelavo drugih zahtev. Strežnik ne shrani uporabniškega konteksta med dvema klicema, ker lahko obdela zahteve iz več procesov hkrati. Zato mora vsako sporočilo, ki prihaja iz odjemalskega procesa, vsebovati informacije o njegovem izvajalnem okolju, in sicer: identifikacijske kode uporabnika, trenutni imenik, signale itd. funkcije.

Ko proces odpre oddaljeno datoteko, oddaljeno jedro dodeli indeks za nadaljnje povezave do datoteke. Lokalni stroj vzdržuje tabelo deskriptorjev datotek po meri, tabelo datotek in indeksno tabelo z običajnim naborom zapisov, z vnosom v indeksni tabeli, ki identificira oddaljeni stroj in oddaljeni indeks. V primerih, ko sistemska funkcija (na primer branje) uporablja deskriptor datoteke, jedro pošlje sporočilo, ki kaže na predhodno dodeljen oddaljeni indeks in prenese informacije, povezane s procesom: identifikacijsko kodo uporabnika, največjo velikost datoteke itd. strežniškega procesa, ki mu je na voljo, interakcija z odjemalcem poteka v prej opisani obliki, vendar se povezava med odjemalcem in strežnikom vzpostavi le za čas delovanja sistemske funkcije.

Uporaba strežnikov namesto satelitskih procesov lahko oteži upravljanje podatkovnega prometa, signalov in oddaljenih naprav. Veliko število zahtev do oddaljenega računalnika, če ni zadostnega števila strežnikov, je treba postaviti v čakalno vrsto. To zahteva protokol višje ravni od tistega, ki se uporablja v glavnem omrežju. V satelitskem modelu je po drugi strani prezasičenost odpravljena, ker se vse zahteve odjemalca obdelujejo sinhrono. Stranka ima lahko na čakanju največ eno zahtevo.

Obdelava signalov, ki prekinjajo izvajanje sistemske funkcije, je zapletena tudi pri uporabi strežnikov, saj mora oddaljeni stroj poiskati ustrezen strežnik, ki služi za izvajanje funkcije. Možno je celo, da je zaradi zasedenosti vseh strežnikov zahteva za sistemsko funkcijo v obdelavi. Pogoji za nastanek konkurence nastanejo tudi, ko strežnik vrne rezultat sistemske funkcije klicnemu procesu in odgovor strežnika vključuje pošiljanje ustreznega signalnega sporočila po omrežju. Vsako sporočilo mora biti označeno, da ga lahko oddaljeni sistem prepozna in po potrebi prekine strežniške procese. Pri uporabi satelitov se avtomatsko identificira proces, ki obravnava izpolnitev naročnikove zahteve, v primeru prihoda signala pa ni težko preveriti, ali je zahteva obdelana ali ne.

Nazadnje, če sistemska funkcija, ki jo kliče odjemalec, povzroči, da se strežnik za nedoločen čas zaustavi (na primer pri branju podatkov z oddaljenega terminala), strežnik ne more obdelati drugih zahtev za sprostitev strežniškega področja. Če več procesov hkrati dostopa do oddaljenih naprav in je število strežnikov omejeno od zgoraj, je precej oprijemljivo ozko grlo. To se ne zgodi pri satelitih, saj je satelit dodeljen vsakemu odjemalskemu procesu. Druga težava pri uporabi strežnikov za oddaljene naprave bo obravnavana v vaji 13.14.

Kljub prednostim, ki jih prinaša uporaba satelitskih procesov, postaja potreba po brezplačnih vnosih v procesno tabelo v praksi tako akutna, da se v večini primerov še vedno uporabljajo storitve strežniških procesov za obdelavo oddaljenih zahtev.


Slika 13.12. Konceptualni diagram interakcije z oddaljenimi datotekami na ravni jedra

13.5 ZAKLJUČKI

V tem poglavju smo obravnavali tri sheme za delo z datotekami, ki se nahajajo na oddaljenih računalnikih, pri čemer obravnavamo oddaljene datotečne sisteme kot razširitev lokalnega. Arhitekturne razlike med temi postavitvami so prikazane na sliki 13.12. Vsi se po vrsti razlikujejo od večprocesorskih sistemov, opisanih v prejšnjem poglavju, po tem, da si procesorji tukaj ne delijo fizičnega pomnilnika. Periferni procesorski sistem je sestavljen iz tesno povezanega niza procesorjev, ki si delijo datotečne vire osrednjega procesorja. Povezava tipa Newcastle omogoča skrit ("transparenten") dostop do oddaljenih datotek, vendar ne s pomočjo jedra operacijskega sistema, temveč z uporabo posebne knjižnice C. Zaradi tega je treba vse programe, ki nameravajo uporabljati tovrstno povezavo, ponovno prevesti, kar je na splošno resna pomanjkljivost te sheme. Oddaljenost datoteke je označena s posebnim zaporedjem znakov, ki opisujejo stroj, na katerem se datoteka nahaja, in to je še en dejavnik, ki omejuje prenosljivost programov.

V preglednih porazdeljenih sistemih se za dostop do oddaljenih datotek uporablja sprememba funkcije sistema mount. Indeksi v lokalnem sistemu so označeni kot oddaljene datoteke, lokalno jedro pa pošlje sporočilo oddaljenemu sistemu, ki opisuje zahtevano sistemsko funkcijo, njene parametre in oddaljeni indeks. Komunikacija v "transparentnem" porazdeljenem sistemu je podprta v dveh oblikah: v obliki klica na oddaljeno proceduro (na oddaljeni računalnik se pošlje sporočilo, ki vsebuje seznam operacij, povezanih z indeksom) in v obliki klica na funkcijo oddaljenega sistema (sporočilo opisuje zahtevano funkcijo). Zadnji del poglavja obravnava vprašanja v zvezi z obdelavo oddaljenih zahtev s pomočjo satelitskih procesov in strežnikov.

13.6 VAJE

*1. Opišite izvedbo funkcije izhodnega sistema v sistemu z perifernimi procesorji. Kakšna je razlika med tem primerom in tem, ko se proces konča, ko prejme neulovljeni signal? Kako naj jedro izprazni vsebino pomnilnika?

2. Procesi ne morejo prezreti signalov SIGKILL; Pojasnite, kaj se zgodi v perifernem sistemu, ko proces prejme tak signal.

* 3. Opišite izvedbo sistemske funkcije exec v sistemu z perifernimi procesorji.

*4. Kako naj centralni procesor porazdeli procese med periferne procesorje, da bi uravnotežil celotno obremenitev?

*5. Kaj se zgodi, če periferni procesor nima dovolj pomnilnika, da bi sprejel vse procese, ki so mu naloženi? Kako naj poteka raztovarjanje in zamenjava procesov v omrežju?

6. Razmislite o sistemu, v katerem se zahteve pošljejo oddaljenemu datotečnemu strežniku, če je v imenu datoteke najdena posebna predpona. Naj proces pokliče execl ("/../ sftig / bin / sh", "sh", 0); Izvedljiva datoteka je na oddaljenem računalniku, vendar se mora izvajati v lokalnem sistemu. Pojasnite, kako se oddaljeni modul preseli v lokalni sistem.

7. Če mora skrbnik obstoječemu sistemu s povezavo, kot je Newcastle, dodati nove stroje, kateri je najboljši način za obveščanje modulov knjižnice C o tem?

*osem. Med izvajanjem funkcije exec jedro prepiše naslovni prostor procesa, vključno s tabelami knjižnic, ki jih uporablja povezava Newcastle za sledenje povezavam do oddaljenih datotek. Po izvedbi funkcije mora proces ohraniti možnost dostopa do teh datotek prek njihovih starih deskriptorjev. Opišite izvajanje te točke.

* devet. Kot je prikazano v razdelku 13.2, klic izhodne sistemske funkcije v sistemih s povezavo Newcastle povzroči sporočilo, ki se pošlje spremljevalnemu procesu, zaradi česar se slednji konča. To se izvaja na ravni knjižničnih rutin. Kaj se zgodi, ko lokalni proces prejme signal, ki mu pove, naj zapusti v načinu jedra?

*deset. Kako lahko v sistemu s povezavo Newcastle, kjer se oddaljene datoteke identificirajo s predpono imena s posebno predpono, lahko uporabnik, ki navede ".." (nadrejeni imenik) kot komponento imena datoteke, prečka oddaljeno točko priklopa?

11. Iz 7. poglavja vemo, da različni signali povzročijo, da proces izpiše vsebino pomnilnika v trenutni imenik. Kaj bi se moralo zgoditi, če je trenutni imenik iz oddaljenega datotečnega sistema? Kakšen odgovor bi dali, če sistem uporablja razmerje, kot je Newcastle?

*12. Kakšne posledice za lokalne procese bi to imelo, če bi iz sistema odstranili vse satelitske ali strežniške procese?

*13. Razmislite, kako implementirati algoritem povezave v preglednem porazdeljenem sistemu, katerega parametra sta lahko dve oddaljeni imeni datotek, pa tudi algoritem exec, povezan z izvajanjem več notranjih operacij branja. Razmislite o dveh oblikah komunikacije: klic oddaljenega postopka in klic oddaljene sistemske funkcije.

* štirinajst. Pri dostopu do naprave lahko strežniški proces preide v zaustavljeno stanje, iz katerega ga bo odstranil gonilnik naprave. Seveda, če je število strežnikov omejeno, sistem ne bo več mogel zadovoljiti zahtev lokalnega računalnika. Pripravite zanesljivo shemo, pri kateri niso zaustavljeni vsi strežniški procesi, medtem ko čakate na dokončanje V/I, povezanih z napravo. Sistemska funkcija se ne bo končala, ko so vsi strežniki zasedeni.


Slika 13.13. Konfiguracija terminalskega strežnika

*15. Ko se uporabnik prijavi v sistem, disciplina terminalske linije shrani informacijo, da je terminal uporabniški terminal, ki vodi skupino procesov. Iz tega razloga, ko uporabnik pritisne tipko "break" na terminalski tipkovnici, vsi procesi v skupini prejmejo prekinitveni signal. Razmislite o sistemski konfiguraciji, v kateri so vsi terminali fizično povezani z enim računalnikom, registracija uporabnika pa je logično izvedena na drugih strojih (slika 13.13). V vsakem primeru sistem ustvari getty proces za oddaljeni terminal. Če zahteve do oddaljenega sistema obdeluje nabor strežniških procesov, upoštevajte, da ko se izvede odprti postopek, strežnik preneha čakati na povezavo. Ko se funkcija odprtja zaključi, se strežnik vrne v strežniško področje in prekine svojo povezavo s terminalom. Kako se s pritiskom na tipko "break" sproži prekinitveni signal, ki se pošlje na naslove procesov, ki so vključeni v isto skupino?

*16. Skupna raba pomnilnika je lastnost lokalnih strojev. Z logičnega vidika se lahko dodelitev skupnega območja fizičnega pomnilnika (lokalnega ali oddaljenega) izvede za procese, ki pripadajo različnim strojem. Opišite izvajanje te točke.

* 17. Algoritmi za ostranjevanje in stranski algoritmi, obravnavani v 9. poglavju, predpostavljajo uporabo lokalnega pozivnika. Kakšne spremembe je treba narediti v teh algoritmih, da bi lahko podprli naprave za oddaljeno razkladanje?

* osemnajst. Recimo, da oddaljeni stroj (ali omrežje) doživi usodno zrušitev in protokol lokalnega omrežnega sloja zabeleži to dejstvo. Razvijte obnovitveno shemo za lokalni sistem, ki oddaja zahteve oddaljenemu strežniku. Poleg tega razviti shemo za obnovitev strežniškega sistema, ki je izgubil stik s strankami.

*19. Ko proces dostopa do oddaljene datoteke, je možno, da bo proces prečkal več strojev v iskanju datoteke. Za primer vzemite ime "/ usr / src / uts / 3b2 / os", kjer je "/ usr" imenik, ki pripada stroju A, "/ usr / src" je točka priklopa korena stroja B, " / usr / src / uts / 3b2 "je točka priklopa korena stroja C. Sprehod skozi več strojev do končnega cilja se imenuje multihop. Če pa obstaja neposredna omrežna povezava med napravama A in C, bi bilo pošiljanje podatkov prek naprave B neučinkovito. Opišite značilnosti izvedbe "multishoppinga" v sistemu s povezavo Newcastle in v "transparentnem" porazdeljenem sistemu.

Trenutno imajo vsi razviti za komercialne namene porazdeljeno arhitekturo, kar pomeni uporabo globalnih in/ali lokalnih omrežij.

Zgodovinsko gledano je bila arhitektura datotečnega strežnika prva, ki je postala razširjena, saj je njena logika preprosta in je na takšno arhitekturo najlažje prenesti že delujoče IS-je. Nato se je preoblikovala v arhitekturo strežnik-odjemalec, ki jo lahko razlagamo kot njeno logično nadaljevanje. Sodobni sistemi, ki se uporabljajo v globalnem omrežju INTERNET, se večinoma nanašajo na arhitekturo porazdeljenih objektov (glej sl. III15 )


IS si lahko predstavljamo, sestavljen iz naslednjih komponent (slika III-16)

III.03.2. a Aplikacije datotečnega strežnika.

V preteklosti je to prva porazdeljena arhitektura (slika III-17). Organizirano je zelo preprosto: na strežniku so samo podatki, vse ostalo pa pripada odjemalskemu stroju. Ker so lokalna omrežja precej poceni in zaradi dejstva, da je s takšno arhitekturo aplikacijska programska oprema avtonomna, se taka arhitektura danes pogosto uporablja. Lahko rečemo, da je to različica arhitekture odjemalec-strežnik, pri kateri se na strežniku nahajajo samo podatkovne datoteke. Različni osebni računalniki medsebojno delujejo le s pomočjo skupnega skladišča podatkov, zato se programi, napisani za en računalnik, najlažje prilagajajo takšni arhitekturi.


Prednosti:

Prednosti arhitekture datotečnega strežnika:

Enostavnost organizacije;

Ni v nasprotju s potrebnimi zahtevami za zbirko podatkov za ohranjanje celovitosti in zanesljivosti.

prezasedenost omrežja;

Nepredvidljiv odgovor na zahtevo.

Te pomanjkljivosti je mogoče pojasniti z dejstvom, da vsaka zahteva do baze podatkov vodi do prenosa znatnih količin informacij po omrežju. Če želite na primer izbrati eno ali več vrstic iz tabel, se celotna tabela prenese na odjemalski računalnik in DBMS že izbere tam. Pomemben omrežni promet je še posebej preobremenjen z organizacijo oddaljenega dostopa do baze podatkov.

III.03.2. b Aplikacije odjemalec-strežnik.

V tem primeru gre za porazdelitev odgovornosti med strežnikom in stranko. Glede na to, kako so ločeni, se razlikujejo maščobe in tanek odjemalec.


V modelu tankega odjemalca se vse delo z aplikacijami in upravljanje podatkov izvaja na strežniku. Uporabniški vmesnik v teh sistemih »seli« na osebni računalnik, programska aplikacija pa sama opravlja funkcije strežnika, t.j. izvaja vse procese aplikacije in upravlja podatke. Model tankega odjemalca se lahko izvaja tudi tam, kjer so odjemalci računalniki ali delovne postaje. Omrežne naprave poganjajo internetni brskalnik in uporabniški vmesnik, ki je implementiran v sistemu.

Glavni napaka modeli tankih odjemalcev - velika obremenitev strežnika in omrežja. Vsi izračuni se izvajajo na strežniku, kar lahko privede do znatnega omrežnega prometa med odjemalcem in strežnikom. V sodobnih računalnikih je dovolj računalniške moči, vendar se praktično ne uporablja v modelu / tankem odjemalcu banke

V nasprotju s tem model debelega odjemalca uporablja procesorsko moč lokalnih strojev: sama aplikacija je nameščena na odjemalskem računalniku. Primer te vrste arhitekture so sistemi bankomatov, v katerih je bankomat odjemalec, strežnik pa osrednji računalnik, ki služi bazo podatkov o računih strank.

III.03.2. c Dvo- in tristopenjska arhitektura odjemalec-strežnik.

Vse zgoraj obravnavane arhitekture so dvotirne. Razlikujejo med nivojem odjemalca in nivojem strežnika. Strogo gledano, IC je sestavljen iz treh logičnih ravni:

· Raven uporabnika;

Raven aplikacije:

· Podatkovna plast.

Zato pri dvostopenjskem modelu, kjer sta vključeni samo dve ravni, obstajajo težave z razširljivostjo in zmogljivostjo, če je izbran model tankega odjemalca, ali težave z upravljanjem sistema, če je izbran model debelega odjemalca. Tem težavam se lahko izognemo, če uporabimo model, sestavljen iz treh nivojev, kjer sta dva strežnika (slika III-21).

Podatkovni strežnik

Dejansko se strežnik aplikacij in podatkovni strežnik lahko nahajata na istem računalniku, vendar ne moreta opravljati funkcij drug drugega. Dobra stvar pri tristopenjskem modelu je, da logično ločuje izvajanje aplikacije in upravljanje podatkov.

Tabela III-5 Uporaba različnih vrst arhitektur

arhitektura Aplikacija
Dvoslojni tanek odjemalec 1 Podedovani sistemi, v katerih ni priporočljivo ločiti izvajanja aplikacije in upravljanja podatkov. 2 Računalniško intenzivne aplikacije z malo upravljanja s podatki. 3 Aplikacije z veliko količino podatkov, a malo računanja.
Dvoslojni debel odjemalec 1 Aplikacije, kjer uporabnik zahteva intenzivno obdelavo podatkov, torej vizualizacijo podatkov. 2 Aplikacije z razmeroma stalnim naborom uporabniških funkcij, ki se uporabljajo za dobro vodeno sistemsko okolje.
Tristopenjski strežnik-odjemalec 1 Velike aplikacije s celicami in na tisoče odjemalcev 2 Aplikacije, v katerih se podatki in metode obdelave pogosto spreminjajo. 3 Aplikacije, ki integrirajo podatke iz več virov.

Ta model je primeren za številne vrste aplikacij, vendar omejuje razvijalce IS, ki se morajo odločiti, kje bodo nudili storitve, zagotoviti podporo za razširljivost in razviti orodja za povezovanje novih strank.

III.03.2. d Arhitektura porazdeljenih objektov.

Bolj splošen pristop zagotavlja arhitektura porazdeljenih objektov, katere glavne komponente so objekti. Preko svojih vmesnikov zagotavljajo nabor storitev. Drugi objekti pošiljajo zahteve brez razlikovanja med odjemalcem in strežnikom. Objekti se lahko nahajajo na različnih računalnikih v omrežju in medsebojno delujejo prek vmesne programske opreme, podobno kot sistemsko vodilo, ki omogoča povezovanje različnih naprav in vzdrževanje komunikacije med strojnimi napravami.

Upravitelj gonilnikov ODBC
Voznik 1
Voznik K
DB 1
DB K
Delo s SQL

Arhitektura ODBC vključuje komponente:

1. Aplikacija (npr. IS). Izvaja naloge: zahteva povezavo z virom podatkov, pošilja poizvedbe SQL viru podatkov, opisuje območje shranjevanja in format za poizvedbe SQL, obravnava napake in o njih obvesti uporabnika, potrdi ali povrne transakcije, zahteva povezavo z vir podatkov.

2. Upravitelj naprav. Nalaga gonilnike na zahtevo aplikacij, ponuja enoten vmesnik za vse aplikacije, skrbniški vmesnik ODBC pa je enak in ne glede na to, s katerim DBMS bo aplikacija sodelovala. Upravitelj gonilnikov, ki ga priskrbi Microsoft, je knjižnica z dinamičnim nalaganjem (DLL).

3. Gonilnik je odvisen od DBMS. Gonilnik ODBC je knjižnica z dinamičnimi povezavami (DLL), ki izvaja funkcije ODBC in sodeluje z virom podatkov. Gonilnik je program, ki obdela zahtevo za funkcijo, specifično za DBMS (lahko spreminja zahteve v skladu s DBMS) in vrne rezultat aplikaciji. Vsak DBMS, ki podpira tehnologijo ODBC, mora razvijalcem aplikacij zagotoviti gonilnik za ta DBMS.

4. Vir podatkov vsebuje kontrolne informacije, ki jih določi uporabnik, informacije o viru podatkov in se uporablja za dostop do določenega DBMS. V tem primeru se uporabljajo sredstva OS in omrežna platforma.

Dinamični model

Ta model predpostavlja številne vidike, za katere je v UML uporabljenih vsaj 5 diagramov, glej str. 2.04.2-2.04.5.

Upoštevajte vidik upravljanja. Model upravljanja dopolnjuje strukturne modele.

Ne glede na to, kako je struktura sistema opisana, je sestavljen iz niza strukturnih enot (funkcij ali objektov). Da lahko delujejo kot celota, jih je treba nadzorovati in v statičnih diagramih ni nadzornih informacij. Nadzorni modeli oblikujejo tok nadzora med sistemi.

Obstajata dve glavni vrsti nadzora v programskih sistemih.

1. Centralizirano upravljanje.

2. Upravljanje na podlagi dogodkov.

Centralizirano upravljanje je lahko:

· Hierarhično- po principu "klic-vrni" (tako najpogosteje delujejo izobraževalni programi)

· Model dispečerja ki se uporablja za vzporedne sisteme.

V modeli dispečerjev domneva se, da je ena od komponent sistema dispečer. Upravlja tako zagon in zaustavitev sistemov kot tudi koordinacijo preostalih procesov v sistemu. Procesi lahko potekajo vzporedno drug z drugim. Proces se nanaša na program, podsistem ali postopek, ki se trenutno izvaja. Ta model se lahko uporablja tudi v zaporednih sistemih, kjer krmilni program kliče posamezne podsisteme glede na nekatere spremenljivke stanja (preko operaterja Ovitek).

Upravljanje dogodkov predpostavlja odsotnost podprogramov, odgovornih za upravljanje. Nadzor se izvaja z zunanjimi dogodki: pritiskom na gumb miške, pritiskom na tipkovnico, spreminjanjem odčitkov senzorja, spreminjanjem odčitkov časovnika itd. Vsak zunanji dogodek je kodiran in postavljen v čakalno vrsto dogodkov. Če je podana reakcija na dogodek v čakalni vrsti, se pokliče postopek (podprogram), ki izvede reakcijo na ta dogodek. Dogodki, na katere se sistem odzove, se lahko pojavijo v drugih podsistemih ali v zunanjem okolju sistema.

Primer takega upravljanja je organizacija aplikacij v sistemu Windows.

Vse prej opisane strukturne modele je mogoče implementirati z uporabo centraliziranega upravljanja ali upravljanja na podlagi dogodkov.

Uporabniški vmesnik

Pri razvoju modela vmesnika je treba upoštevati ne le naloge oblikovane programske opreme, temveč tudi značilnosti možganov, povezane z zaznavanjem informacij.

III.03.4. a Psihofizične značilnosti osebe, povezane z zaznavanjem in obdelavo informacij.

Del možganov, ki ga lahko konvencionalno imenujemo procesor zaznavanja, nenehno, brez sodelovanja zavesti, obdeluje prejete informacije, jih primerja s preteklimi izkušnjami in jih shranjuje.

Ko vizualna podoba pritegne našo pozornost, te informacije, ki nas zanimajo, prispejo v kratkoročni spomin. Če naše pozornosti nismo pritegnili, potem informacije v shrambi izginejo in jih nadomestijo naslednji deli.

V vsakem trenutku se lahko fokus pozornosti fiksira na eni točki, tako da če je potrebno hkrati spremljati več situacij, se fokus premakne z enega sledenega predmeta na drugega. Hkrati je pozornost razpršena, nekatere podrobnosti pa se lahko spregledajo. Pomembno je tudi, da zaznavanje v veliki meri temelji na motivaciji.

Ko spremenite okvir, so možgani za nekaj časa blokirani: obvladajo novo sliko in poudarijo najpomembnejše podrobnosti. To pomeni, da če potrebujete hiter odziv uporabnika, potem slik ne smete nenadoma spreminjati.

Kratkoročni spomin je ozko grlo v sistemu za obdelavo informacij osebe. Njegova zmogljivost je 7 ± 2 nepovezana predmeta. Podatki, ki niso zahtevani, so v njem shranjeni največ 30 sekund. Da ne bi pozabili kakšne za nas pomembne informacije, si jo običajno ponavljamo in posodobimo informacije v kratkoročnem spominu. Tako je treba pri oblikovanju vmesnikov upoštevati, da si velika večina na primer težko zapomni in na drugem zaslonu vnese številke, ki vsebujejo več kot pet števk.

Čeprav sta zmogljivost in čas shranjevanja dolgoročnega pomnilnika neomejena, dostop do informacij ni enostaven. Mehanizem za pridobivanje informacij iz dolgoročnega spomina je asociativen. Za izboljšanje pomnjenja informacij je vezan na podatke, ki jih pomnilnik že shranjuje in omogoča enostavno pridobivanje. Ker je dostop do dolgoročnega pomnilnika otežen, je priporočljivo pričakovati, da si uporabnik informacije ne zapomni, ampak na dejstvu, da jo bo uporabnik prepoznal.

III.03.4. b Osnovni kriteriji za ocenjevanje vmesnikov

Številne raziskave in raziskave, ki so jih izvedla vodilna podjetja za razvoj programske opreme, so pokazala, da uporabniki cenijo vmesnik:

1) enostavnost obvladovanja in pomnjenja - posebej ocenite čas obvladovanja in trajanje ohranjanja informacij in spomina;

2) hitrost doseganja rezultatov pri uporabi sistema, ki je določena s številom ukazov in nastavitev, ki jih vnese ali izbere miška;

3) subjektivno zadovoljstvo z delovanjem sistema (enostavnost uporabe, utrujenost ipd.).

Poleg tega za profesionalne uporabnike, ki nenehno delajo z istim paketom, hitro prideta na prvo mesto drugo in tretje merilo, za neprofesionalne uporabnike, ki občasno delajo s programsko opremo in opravljajo razmeroma preprosta opravila - prvo in tretje.

S tega vidika imajo vmesniki z brezplačno navigacijo danes najboljše lastnosti za profesionalne uporabnike, za neprofesionalne pa vmesniki za neposredno manipulacijo. Že dolgo je bilo opaženo, da pri kopiranju datotek, če so vse druge enake, večina strokovnjakov uporablja lupine, kot je Far, neprofesionalci pa uporabljajo Windows "povleci in spusti".

III.03.4. c Vrste uporabniških vmesnikov

Razlikujejo se naslednje vrste uporabniških vmesnikov:

Primitivno

Brezplačna navigacija

Neposredna manipulacija.

Vmesnik je primitiven

Primitivno se imenuje vmesnik, ki organizira interakcijo z uporabnikom in se uporablja v načinu konzole. Edino odstopanje od zaporednega procesa, ki ga zagotavljajo podatki, je zanka skozi več nizov podatkov.

Vmesnik menija.

Za razliko od primitivnega vmesnika omogoča uporabniku, da izbere operacijo s posebnega seznama, ki ga prikaže program. Ti vmesniki predvidevajo izvajanje številnih scenarijev dela, zaporedje dejanj v katerih določijo uporabniki. Drevesna organizacija menija kaže, da je iskanje elementa v več kot dvostopenjskih menijih težko.

(Material spletnega mesta http://se.math.spbu.ru)

Uvod.

Danes so skoraj vsi veliki programski sistemi distribuirani. Porazdeljen sistem- sistem, v katerem obdelava informacij ni osredotočena na en računalnik, ampak je porazdeljena med več računalniki. Pri načrtovanju porazdeljenih sistemov, ki ima veliko skupnega z načrtovanjem programske opreme na splošno, je treba upoštevati še nekaj posebnosti.

Obstaja šest glavnih značilnosti porazdeljenih sistemov.

  1. Skupna raba virov. Porazdeljeni sistemi omogočajo skupno rabo tako strojne opreme (trdi diski, tiskalniki) kot programske opreme (datoteke, prevajalniki) virov.
  2. Odprtost.Gre za možnost razširitve sistema z dodajanjem novih virov.
  3. Vzporednost.V porazdeljenih sistemih se lahko več procesov hkrati izvaja na različnih računalnikih v omrežju. Ti procesi lahko medsebojno delujejo, medtem ko se izvajajo.
  4. Razširljivost . Spodaj razširljivost razume se možnost dodajanja novih lastnosti in metod.
  5. Toleranca napak. Prisotnost več računalnikov omogoča podvajanje informacij in odpornost na nekatere strojne in programske napake. Porazdeljeni sistemi lahko podpirajo delno funkcionalnost v primeru napake. Popolna okvara sistema se pojavi le pri omrežnih napakah.
  6. Preglednost.Uporabnikom je omogočen popoln dostop do virov v sistemu, hkrati pa so jim skriti podatki o razporeditvi virov po sistemu.

Porazdeljeni sistemi imajo tudi številne pomanjkljivosti.

  1. Kompleksnost... Veliko težje je razumeti in ovrednotiti lastnosti porazdeljenih sistemov na splošno, težje pa jih je načrtovati, testirati in vzdrževati. Tudi zmogljivost sistema je odvisna od hitrosti omrežja in ne od posameznih procesorjev. Prerazporeditev virov lahko bistveno spremeni hitrost sistema.
  2. Varnost... Običajno je do sistema mogoče dostopati z več različnih strojev, sporočila v omrežju je mogoče spremljati in prestrezati. Zato je v porazdeljenem sistemu veliko težje vzdrževati varnost.
  3. Obvladljivost... Sistem je lahko sestavljen iz različnih vrst računalnikov, na katere je mogoče namestiti različne različice operacijskih sistemov. Napake na enem stroju se lahko na nepredvidljiv način razširijo na druge stroje.
  4. Nepredvidljivost ... Odziv porazdeljenih sistemov na nekatere dogodke je nepredvidljiv in je odvisen od polne obremenitve sistema, njegove organizacije in obremenitve omrežja. Ker se ti parametri lahko nenehno spreminjajo, se lahko odzivni čas na zahtevo bistveno razlikuje od časa.

Iz teh pomanjkljivosti lahko vidite, da se pri načrtovanju porazdeljenih sistemov pojavljajo številne težave, ki jih morajo razvijalci upoštevati.

  1. Identifikacija vira ... Viri v porazdeljenih sistemih se nahajajo na različnih računalnikih, zato je treba o sistemu poimenovanja virov razmišljati tako, da lahko uporabniki zlahka dostopajo in se sklicujejo na vire, ki jih potrebujejo. Primer je sistem URL (Uniform Resource Locator), ki definira imena spletnih strani.
  2. Komunikacija... Univerzalna operativnost interneta in učinkovito izvajanje protokolov TCP/IP v internetu za večino porazdeljenih sistemov sta primera najučinkovitejšega načina organiziranja komunikacije med računalniki. Vendar pa je v nekaterih primerih, kjer je potrebna posebna zmogljivost ali zanesljivost, mogoče uporabiti specializirana orodja.
  3. Kakovost sistemskih storitev ... Ta parameter odraža zmogljivost, zdravje in zanesljivost. Na kakovost storitve vplivajo številni dejavniki: razporeditev procesov, virov, strojne opreme in prilagodljivost sistema.
  4. Arhitektura programske opreme ... Arhitektura programske opreme opisuje porazdelitev sistemskih funkcij med komponentami sistema, pa tudi porazdelitev teh komponent med procesorje. Če morate vzdrževati visokokakovostne sistemske storitve, je izbira prave arhitekture ključnega pomena.

Izziv za oblikovalce porazdeljenih sistemov je načrtovati programsko in strojno opremo, ki bo zagotovila vse zahtevane značilnosti porazdeljenega sistema. To zahteva poznavanje prednosti in slabosti različnih arhitektur porazdeljenih sistemov. Obstajajo tri vrste arhitektur porazdeljenih sistemov.

  1. Arhitektura odjemalec/strežnik ... V tem modelu si lahko sistem predstavljamo kot niz storitev, ki jih strežniki zagotavljajo odjemalcem. V takih sistemih se strežniki in odjemalci med seboj bistveno razlikujejo.
  2. Tristopenjska arhitektura ... V tem modelu strežnik ne zagotavlja storitev odjemalcem neposredno, temveč prek strežnika poslovne logike.

O prvih dveh modelih je bilo že večkrat povedano, podrobneje se osredotočimo na tretji.

  1. Arhitektura porazdeljenih objektov ... V tem primeru ni razlik med strežniki in odjemalci, sistem pa si lahko predstavljamo kot niz medsebojno delujočih objektov, katerih lokacija pravzaprav ni pomembna. Med ponudnikom storitev in njihovimi uporabniki ni razlike.

Ta arhitektura se danes pogosto uporablja in se tudi imenuje arhitektura spletnih storitev. Spletna storitev je aplikacija, ki je dostopna prek interneta in ponuja nekatere storitve, katerih oblika je neodvisna od ponudnika (saj se uporablja univerzalni podatkovni format - XML) in platforme delovanja. Trenutno obstajajo tri različne tehnologije, ki podpirajo koncept porazdeljenih objektnih sistemov. To so tehnologije EJB, CORBA in DCOM.

Najprej nekaj besed o tem, kaj je na splošno XML. XML je splošni format podatkov, ki se uporablja za zagotavljanje spletnih storitev. Spletne storitve temeljijo na odprtih standardih in protokolih: SOAP, UDDI in WSDL.

  1. MILO ( Protokol Simple Object Access Protocol, ki ga je razvil W3C, opredeljuje format za zahteve do spletnih storitev. Sporočila med spletno storitvijo in njenim uporabnikom so zapakirana v tako imenovane ovojnice SOAP (včasih imenovane tudi ovojnice XML). Samo sporočilo lahko vsebuje bodisi zahtevo za izvedbo nekega dejanja bodisi odgovor - rezultat tega dejanja.
  2. WSDL (jezik opisa spletnih storitev).Vmesnik spletnih storitev je opisan v dokumentih WSDL (WSDL pa je podmnožica XML). Pred uvedbo storitve razvijalec sestavi njen opis v jeziku WSDL, določi naslov spletne storitve, podprte protokole, seznam dovoljenih operacij ter formate zahtev in odgovorov.
  3. UDDI (univerzalni opis, odkrivanje in integracija) - Protokol iskanja internetnih spletnih storitev ( http://www.uddi.org/). To je poslovni register, kjer ponudniki spletnih storitev registrirajo storitve, razvijalci pa najdejo storitve, ki jih morajo vključiti v svoje aplikacije.

Iz govora se morda zdi, da so spletne storitve najboljša in nesporna rešitev, vprašanje pa je le izbira razvojnih orodij. Vendar pa ni. Obstaja alternativa spletnim storitvam, semantični splet, o katerem je pred petimi leti govoril ustvarjalec WWW Tim Berners-Lee.

Če je cilj spletnih storitev olajšati komunikacijo med aplikacijami, je semantični splet zasnovan za reševanje veliko bolj zapletenega problema – z uporabo metapodatkovnih mehanizmov za povečanje učinkovitosti vrednosti informacij, ki jih je mogoče najti na spletu. To je mogoče doseči z opustitvijo dokumentno usmerjenega pristopa v korist objektno usmerjenega.

Bibliografija

  1. SomervilleI. Programsko inženirstvo.
  2. Dranitsa A. Java proti .NET. - "Computerra", # 516.
  3. Internetni viri.