az internet ablakok Android

Fix: Service "távoli hívási eljárások (RPC)" szolgáltatás nem indul el. Hívás távoli eljárások (RPC - Távoli eljáráshívás) Távoli hozzáférés RPC

Hívás távoli eljárások (RPC) Távoli eljárás Call Concept

Távoli eljárás Call - RPC (távoli eljáráshívás - RPC) az, hogy kibővítse a jól ismert és érthető vezérlési mechanizmust és adatokat az egyik gépen futó programon belül, hogy továbbítsa a vezérlést és az adatokat a hálózaton keresztül. A távoli híváseszközök célja az elosztott számítástechnika megszervezésének megkönnyítése. Az RPC használatának legnagyobb hatékonysága olyan alkalmazásokban érhető el, amelyekben interaktív kapcsolat van a távoli komponensek között, kis válaszidővel és viszonylag kis mennyiségű továbbított adatokkal. Az ilyen alkalmazásokat RPC-orientáltnak nevezik.

A helyi eljárások hívásának jellemző jellemzői:

Aszimmetria, azaz az interakció egyike az iniciátor; A Synchronicitás, azaz a hívási eljárás végrehajtása, amikor a kérés pillanatától kezdődően megáll, és csak a hívott eljárásból való visszatérés után folytatódik.

A távoli hívások végrehajtása jelentősen bonyolultabb a helyi hívás kihívások végrehajtásával. Kezdjük azzal, hogy mivel a hívás és az úgynevezett eljárások különböző gépeken végeznek, különböző címterületekkel rendelkeznek, és ez problémákat okoz, ha paramétereket és eredményeket továbbít, különösen akkor, ha a gépek nem azonosak. Mivel az RPC nem számíthat a megosztott memóriára, ez azt jelenti, hogy az RPC-paraméterek nem tartalmazhatnak mutatókat a nem defo-memória sejteken, és hogy a paraméterértékeket egy számítógépről a másikra kell másolni. Következő kitüntetések A helyi hívás rpc az, hogy szükségszerűen használja az alapul szolgáló kommunikációs rendszert, de ez nem lehet jól látható az eljárások meghatározásában vagy az önmagukban. A távoli területek további problémákat okoznak. Az okozó program végrehajtását és az ebből eredő helyi eljárást egyetlen folyamatban hajtják végre. De legalább két folyamat vesz részt az RPC - egyik végrehajtásában minden gépben. Abban az esetben, ha az egyiket kiemelték, a következő helyzetek fordulhatnak elő, a következő esetek előfordulhatnak: ha az okozó eljárás baleset, távolról okozott eljárások "árva", és amikor a távoli eljárások véletlenül befejeződnek, olyan eljárásokat okoznak, amelyek sikertelenül várnak a távoli válaszra eljárások.

Ezenkívül számos probléma merül fel a programozási nyelvek heterogenitásával és a működési környezetekkel kapcsolatban: az egyik programozási nyelvben támogatott adatstruktúrák és eljárási eljárások nem támogatottak ugyanúgy az összes többi nyelven.

Ezek és más problémák megoldják a széles körben elterjedt RPC technológiát, amely számos elosztott operációs rendszert tartalmaz.

Alapvető RPC műveletek

Az RPC munkájának megértése érdekében először vegye figyelembe a helyi eljáráshívás végrehajtását egy autonóm módon működő rendszeres gépen. Hagyja, hogy például rendszerhívás lesz

COUNT \u003d READ (FD, BUF, NBYETES);

ahol az fd egész szám
BUF - karakterek tömbje,
A Nbytes egész szám.

Hívás kezdeményezése, amely az eljárást okozza, a paramétereket fordított sorrendben nyomja meg a paramétereket (3.1. Ábra). Az olvasási hívás után a visszatérési értéket a nyilvántartásba helyezi, áthelyezi a visszatérési címet, és visszaadja a hívási eljárás ellenőrzését, amely kiválasztja a veremből származó paramétereket, a kezdeti állapot. Ne feledje, hogy a paraméterekkel rendelkező nyelven hivatkozhat (név szerint), vagy érték szerint (érték szerint). A nevezett eljárás tekintetében az értékek inicializált helyi változók. A hívott eljárás megváltoztathatja őket, és ez nem befolyásolja a változók eredeti példányainak értékét a hívó eljárás során.

Ha a változóra mutató mutató a hívott eljáráshoz továbbítódik, akkor a változó értékének változása a kapott eljárás magában foglalja a változó értékét és az okozási eljárást. Ez a tény nagyon jelentős az RPC esetében.

Van egy másik paraméterátviteli mechanizmus is, amelyet nem használnak a S-ben. Ezt hívják hívás-mellékhelyi / visszaállítás és másolás oktatási program Változók a kötegben értékek formájában, majd másolják vissza, miután a hívás átveszi a hívási eljárás eredeti értékeit.

Az a döntés, amelyről a használati paraméterek továbbítására szolgáló mechanizmust a nyelv fejlesztői fogadják el. Néha a továbbított adatok típusától függ. A nyelvben például a teljes és más skaláradatokat mindig az érték és a tömbök - referenciaként továbbítják.

Ábra. 3.1. a) verem az olvasás ellenőrzése előtt;
b) verem az eljárás során;
c) a hívó programhoz való visszatérés után

Az RPC-n alapuló ötlet az, hogy felhívja a távoli eljárást, amely úgy néz ki, mint a hívás a helyi eljáráshoz. Más szóval - az RPC átlátszóvá tétele: a hívónak nem kell tudnia, hogy a hívott eljárás egy másik gépen van, és fordítva.

Az RPC az alábbiak szerint éri el az átláthatóságot. Amikor az úgynevezett eljárás valóban távoli, a könyvtár helyi eljárás helyett a Client Stub (csonk - dugó) újabb verziója. Az eredeti eljáráshoz hasonlóan a csonkot a hívószekvenciával (mint a 3.1. Ábrán) hívják fel, a rendszermag elérésekor is megszakítás van. Csak az eredeti eljárással ellentétben nem helyezi el a regiszterek paramétereit, és nem kéri az adatokat a magból, hanem üzenetet generál, hogy távoli gépet küldjön a rendszermaghoz.

RPC végrehajtási lépések

A szoftverkomponensek kölcsönhatása az eljárás távoli hívásának végrehajtása során a 3.2. Ábrán látható. Miután az ügyfél Stubot az ügyfélprogram hívta, az első feladat az, hogy a puffert küldéssel töltse ki. Bizonyos rendszerekben az ügyfélkötés egyetlen fix hosszúságú pufferrel rendelkezik, amelyet minden egyes új kérés kézhezvételétől kezdve minden alkalommal tölt meg. Más rendszerekben az üzenetpuffer egy puffermedence az egyes üzenetmezők számára, és ezeknek a puffereknek a már feltöltötték. Ez a módszer különösen alkalmas olyan esetekre, amikor a csomag tartalmaz egy formátumot nagy szám mezők, de a sok mező értékei nem változik a híváshoz.

Ezután a paramétereket megfelelő formátumra kell átalakítani, és be kell illeszteni az üzenetpufferbe. Ezen a ponton az üzenet készen áll az átvitelre, ezért az alaphívás megszakadása történik.

Ábra. 3.2. Távoli eljáráshívás

Amikor a kernel megkapja az ellenőrző, átkapcsol az összefüggéseket, megmenti a processzor regiszterek és a memória kártya (oldal leírásokat), beállít egy új memóriakártya, amely lehet használni, hogy a munka magmódban. Mivel a rendszermag és a felhasználó kontextusai különböznek, a rendszermagnak pontosan másolja az üzenetet saját címterületére, hogy hozzáférjen hozzá, emlékezzen a célcímre (A, esetleg más fejléc mezőkre), és legyen átkerül a hálózati felületre. Ez befejeződik az ügyfél oldalán. Az átviteli időzítő be van kapcsolva, és a rendszermag végrehajthat egy ciklikus felmérést egy válasz, vagy átadhatja a tervező vezérlését, amely bármely más végrehajtási folyamat kiválasztása. Az első esetben a lekérdezés felgyorsul, de nincs többprogramozás.

A kiszolgáló oldalán a bejövő biteket a fogadó készülék vagy a beépített puffer, vagy a RAM-ban helyezi el. Ha minden információt kap, megszakítás keletkezik. A megszakítási kezelő ellenőrzi a csomagadatok helyességét, és meghatározza, hogy melyeket a szúrt kell továbbítani. Ha a csonkok közül egyik sem várja ezt a csomagot, a kezelőnek a pufferbe kell helyezni, vagy akár megtagadhatja azt. Ha van egy várakozó stub, az üzenet másolódik hozzá. Végül a kontextusokat a regiszterek és a memóriakártyák kapják, figyelembe véve azokat az értékeket, amelyeket abban az időben, amikor a csonk felhívta a fogadást.

Most a kiszolgáló stub elindul. Csomagolja ki a paramétereket, és ennek megfelelően helyezi el őket a veremen. Ha minden készen áll, a szerver hívja. Az eljárás befejezése után a kiszolgáló az eredményeket az ügyfélnek továbbítja. Ehhez a fent leírt összes fázis csak fordított sorrendben történik.

A 3.3. Ábra mutatja az egyes RPC-híváshoz szükséges parancssorozatot, és a 3.4. Ábra - amely a teljes RPC időtartamát a leírt 14 szakaszuk végrehajtására fordítják. Tanulmányok végeztük többprocesszoros munkaállomáson december Firefly, és, bár a jelenléte öt processzorok szükségszerűen befolyásolja a mérési eredményeket, a hisztogram leírt az ábrán ad egy általános elképzelést az RPC végrehajtása folyamatban.

Ábra. 3.3. RPC eljárás végrehajtási lépései

Ábra. 3.4. Az RPC 14 szakasza közötti időmegosztás

1. Hívjon szúrást

2. Készítsen puffert

3. Csomagparaméterek

4. Töltse ki a fejléc mezőt

5. Számítsa ki az üzenetet az üzenetben

6. Megszakítás a kernelre

7. Csomagsor a végrehajtáshoz

8. Az üzenet átvitele a QBUS buszvezérlőnek

9. Az Ethernet átviteli ideje

10. Szerezzen be egy csomagot a vezérlőből

11. A megszakítás feldolgozására vonatkozó eljárás

12. Az ellenőrző összeg kiszámítása

13. A kontextus kapcsolása a felhasználói térhez

14. A szerver csonkja

Dinamikus kötés

Fontolja meg azt a kérdést, hogy az ügyfél hogyan állítja be a kiszolgáló helyét. A probléma megoldásának egyik módszere a kiszolgáló hálózati címének közvetlen használata az ügyfélprogramban. Ennek a megközelítésnek a hiánya rendkívüli rugalmatlanság: amikor a kiszolgálót mozgatják, vagy a kiszolgálók számának növekedésével, vagy ha az interfész megváltozik mindezenbb, és sok más esetet, akkor az összes használt programot újra kell fordítani a kiszolgáló címének merev feladata. Annak érdekében, hogy elkerüljük ezeket a problémákat, egyes elosztott rendszerekben az úgynevezett dinamikus kötést alkalmazzuk.

A dinamikus kötődés kezdeti pillanat a szerver formális meghatározása (specifikációja). A specifikáció tartalmazza a fájlkiszolgáló nevét, a verziószámát és az eljárások listáját az ügyfelek számára (3.5. Ábra). Minden eljárás, leírását adjuk a paraméterei jelzi, hogy a paraméter a bemeneti vagy kimeneti képest a szerver. Egyes paraméterek egyidejűleg bemenetek és kimenetek lehetnek - például egy bizonyos tömb, amelyet az ügyfélnek a kiszolgálóra küldenek, akkor módosulnak, majd visszatér az ügyfélhez (másolási / visszaállítási művelet).

Ábra. 3.5. RPC szerver specifikáció

A hivatalos szerver specifikáció használunk a forrás adatokat a Staby generáló program, amely megteremti a kliens és a szerver hasogat. Ezután az adott könyvtárakba kerülnek. Amikor a felhasználó (kliens) program a kiszolgáló specifikációjában meghatározott bármilyen eljárást okozza, a megfelelő csonkozási eljárás a bináris programkódhoz kapcsolódik. Hasonlóképpen, amikor a kiszolgáló összeáll, a kiszolgáló stabilizálódik hozzá.

A szerver elindításakor az első művelete a kiszolgáló interfészének átadása egy speciális, kötőanyag "ohmnak nevezhető programjával. Ez a folyamat, amelyet a kiszolgáló regisztrációs folyamatnak neveznek, magában foglalja a névszerver átvitelét, a verziószámot, az egyedi azonosítót és a vezető helyét leíró. a leíró szisztémásán független és jelenleg IP, Ethernet, X.500 vagy bármely más címre. Ezen kívül egyéb adatot is tartalmazhat, mint a hitelesítés.

Amikor az ügyfél először hívja az egyik távoli eljárásokat, például olvasni, az ügyfélcsövek úgy véli, hogy még nem kapcsolódik a kiszolgálóhoz, és küld egy üzenet Binder programot, amely az Interface behozatalát kéri a kívánt verzió A kívánt kiszolgáló. Ha ilyen szerver létezik, a kötőanyag továbbítja a leírót és az egyedi azonosítót az ügyfélbe.

Az Ügyfél Stab Ha üzenetet küld egy lekérdezéssel, a leírót használja címként. Az üzenet tartalmazza a paramétereket és egy egyedi azonosítót, hogy a szerver kernel felhasználása érdekében küldje el a kapott üzenetet a kívánt szervert, ha van néhány közülük ezen a gépen.

Ez a módszer, amely az import / export interfészek, nagy rugalmassággal rendelkezik. Például több kiszolgáló is támogatja ugyanazt az interfészt, és az ügyfelek véletlenszerűen oszthatók ki a szervereken. E módszer keretében a szerverek rendszeres felmérése lehetővé válik, teljesítményük elemzése, valamint az elutasítás esetén, automatikus leállításamely növeli a rendszer átfogó failódálását. Ez a módszer támogathatja az ügyfél hitelesítését is. Például a szerver meghatározhatja, hogy csak az ügyfelek használhatók-e egy adott listából.

A dinamikus kötés azonban hátrányai vannak, például további (ideiglenes költségek) az export- és import interfészekhez. Nagysága ezeket a költségeket jelentős lehet, mivel sok ügyfél folyamatok léteznek rövid idő alatt, és minden alkalommal a folyamat elindul a folyamat, a felület eljárást végre kell hajtani újra. Ezenkívül a kötőanyag program lehet egy szűk keresztmetszet a nagy elosztott rendszerekben, és számos hasonló célú program létrehozása szintén növeli a folyamatok létrehozásának és szinkronizálásának túllépését.

RPC szemantika hibák esetén

Ideális esetben az RPC-nek megfelelően és hibák esetén kell működnie. Tekintsük a következő kudarcok osztályát:

Az ügyfél nem tudja meghatározni a kiszolgáló helyét, például a kívánt kiszolgáló meghibásodása esetén, vagy annak köszönhető, hogy az ügyfélprogramot hosszú ideig összeállították és használják régi verzió Szerver interfész. Ebben az esetben az ügyfélkérésre válaszul egy üzenet hibakódot tartalmaz. Elvesztette az ügyfél kérését a kiszolgálóra. A legegyszerűbb megoldás - egy bizonyos idő elteltével ismételje meg a kérést. Elveszett válasz a szerverről az ügyfélre. Ezt az opciót bonyolultabb az előző, mivel egyes eljárások nem idempotens. Az IDEMPOTENT-t az eljárásnak nevezik, amelynek végrehajtása többször megismételhető, és az eredmény nem változik. Az ilyen eljárás példája egy fájlt olvashat. De a bankszámla egyes összegének eltávolítására vonatkozó eljárás nem idempotens, és válaszvesztés esetén az ismételt kérelem jelentősen megváltoztathatja az ügyfél fiókjának állapotát. Az egyik lehetséges megoldás az, hogy minden eljárást az IDEMPOTENT űrlapra hozza. A gyakorlatban azonban ez nem mindig sikerül, ezért egy másik módszert alkalmazhatunk - az ügyfélmag összes kérésének következetes számozása. A szerver kernel emlékszik az egyes ügyfelek legfrissebb kérésének számára, és az egyes kérelmek fogadásakor elvégzi az elemzést - hogy ez a kérés elsődleges vagy megismétlődött-e. A kiszolgáló a kérés kézhezvételét követően összeomlott. Fontos az idempotenciát is, de sajnos a számozási lekérdezésekkel rendelkező kéréseket nem lehet alkalmazni. Ebben az esetben számít, ha a hiba történt - a művelet előtt vagy után. De az ügyfél rendszermag nem tudja felismerni ezeket a helyzeteket, csak arról ismert, hogy a válaszidő lejárt. A probléma három megközelítése van: Várja meg, amíg a kiszolgáló újraindul, és próbálja meg újra végrehajtani a műveletet. Ez a megközelítés biztosítja, hogy az RPC-t legalább egyszer, és esetleg több. Azonnal jelentse be a hibára vonatkozó kérelmet. Ez a megközelítés biztosítja, hogy az RPC-t többször is elvégezték. A harmadik megközelítés nem garantál semmit. Amikor a kiszolgáló megtagadja, az ügyfél nem jelenik meg, hogy ne legyen támogatás. Az RPC lehet, vagy nem teljesülhet, vagy sokszor. Mindenesetre ez a módszer nagyon könnyű megvalósítani.

Ezek közül egyik ilyen megközelítés sem nagyon vonzó. És az ideális lehetőség, amely garantált, pontosan egy RPC végrehajtást biztosítana, az általános eset nem valósítható meg alapvető megfontolásokon. Hagyja, például egy távoli működés egy olyan szöveg nyomtatása, amely magában foglalja a nyomtató puffer betöltését és egy bitet telepít egy nyomtatóvezérlő regiszterben, amelynek eredményeképpen a nyomtató elindul. A szerver meghibásodása is előfordulhat mind mikroszekundum és azok a mikroszekundum telepítése után a bitet. A hiba pillanatát teljesen meghatározza a helyreállítási eljárást, de az ügyfél nem tudhat a kudarc pillanatáról. Röviden, a szerver összeomlásának képessége radikálisan megváltoztatja az RPC természetét, és világosan tükrözi a központi és elosztott rendszer közötti különbséget. Az első esetben a kiszolgáló összeomlása az ügyfél összeomlásához vezet, és a fellendülés lehetetlen. A második esetben a rendszer helyreállítására szolgáló rendszer elvégzi és esetleg szükséges.

Az ügyfél a kérés elküldése után balesetet szenvedett. Ebben az esetben az eredmények számításait elvégzik, amelyeket senki sem vár. Az ilyen számításokat "árváknak" nevezik. Az árvák jelenléte különböző problémákat okozhat: a processzor idejének nem reflektív költségei, az erőforrások blokkolása, a kérelemre adott válaszra adott válasz, amelyet az ügyfélgép indított, mielőtt újraindította a rendszert.

Hogyan kell csinálni az árvákkal? Tekintsük 4 lehetséges megoldást.

Megsemmisítés. Mielőtt az ügyfél Stub egy RPC-üzenetet küld, jelöl egy magazinban, értesíti, hogy most fog tenni. A naplót lemezen vagy egy másik memóriában tárolják, fenntartható kudarcokat. A baleset után a rendszer újraindul, a magazint elemzik, és az árvák megszűnnek. Ennek a megközelítésnek a hátrányai először is megnövekedett költségek, amelyek az egyes RPC lemezre történő rekordjához kapcsolódnak, másrészt a lehetséges hatékonyság miatt az első generációs árvák által kiadott RPC-hívások által létrehozott második generációs árvák megjelenése miatt. Reinkarnáció. Ebben az esetben minden probléma megoldódott anélkül, hogy felvételeket használnánk lemezre. A módszer a szekvenciálisan számozott időszakok időtartamát osztja. Amikor az ügyfél újraindul, sugárzott üzenetet továbbít minden gépnek az új időszak kezdetén. Miután megkapta ezt az üzenetet, az összes távoli számítás megszűnik. Természetesen, ha a hálózat szegmentálva van, akkor néhány árvák túlélhetnek. A lágy reinkarnáció hasonló az előző esethez, kivéve, hogy nem minden távoli számítás megtalálható és megsemmisül, de csak az újraindító ügyfél kiszámítása. Lejárat. Minden lekérdezés szabványos időtartamot kap, amely alatt végre kell hajtani. Ha a kérelmet nem végzik el a megadott időre, további kvantumot osztanak ki. Bár megköveteli további munkaDe ha az ügyfél balesete után a szerver egy intervallumot vár, mielőtt újraindítja az ügyfél, akkor az összes árvát szükségszerűen megsemmisíti.

A gyakorlatban e megközelítések közül egyik sem kívánatos, ráadásul az árvák megsemmisítése súlyosbíthatja a helyzetet. Például, hagyja, hogy az árva blokkolt egy vagy több adatbázis fájlt. Ha az árvát hirtelen megsemmisíti, akkor ezek a zárak továbbra is maradnak, emellett az elpusztult árvák is különböző rendszersorokban állhatnak, a jövőben új folyamatokat és hasonlókat okozhatnak.

Számos számítógépes rendszerek felhasználója hallott ilyen fogalmakról, mint távoli eljárások, telefonos eljárások vagy RPC hívása. Ez nem mindenki elképzelni, hogy a technológia, hogyan működik és mit kell. De sokan közülük, akik ezt a szolgáltatást a Windows-Systems-ben leválasztják, gyakran a kritikus kudarcokhoz kapcsolódó hibákat kaphatnak. Erről és sok más dologról megvitatásra kerül.

Távoli hívási eljárások: Mi az?

Kezdje el néhány elméleti információval. A távoli eljárásoknak tekintve (hívás távoli eljárások) olyan mechanizmus, amely lehetővé teszi a számítógépes rendszerek bármilyen funkciójának elindítását vagy használatát a használt terminál által használt címtérben. Egyszerűen tegye, ez egy olyan módja annak, hogy hozzáférjenek egy távoli számítógéphez, például helyi hálózaton vagy internetkapcsolattal.

Azonban, a távoli eljárások (call távoli eljárások) jelöljük RPC (rövidítése az angol Remote Procedure Call), lehetőség van nem csak a távoli számítógépeken. Helyi szinten ezeket a technológiákat is alkalmazzák. A legegyszerűbb példaként egy program bizonyos funkcióját egy másik alkalmazásból hívhatja meg a speciális könyvtárak közötti kölcsönhatással.

Ezen kívül teljesen mindenben windows verziók Van egy ilyen szolgáltatás, és ha ki van kapcsolva vagy megtagadja a hatékonyságot, az XP módosítása egyáltalán nem működik.

Működési elve

Általános szabály, hogy a „Távoli RPC Procedure Call” szolgáltatás a dolgozó a kliens-szerver módban igényel legalább két fő részből áll: egy hálózati protokoll adatcsere és sorszámozás nyelven (fordítás egy folyamat vagy információs adatok szerkezetét a bitsorozatot ).

Az architektúrák teljesen mások lehetnek és különböző képességeikben. De az adatcsere az úgynevezett szállítás szintjén az UDP és a TCP protokollt, a leggyakrabban használt, ritkábban - HTTP.

Annak érdekében, hogy ne lépjenek technikai szempontokba, az ilyen technológiák működésének elvének legegyszerűbb magyarázata lehet a következő példa: az ügyfélfolyamat kérelmet generál a kiszolgálónak a kiválasztott eljárás leírásával a megadott paraméterekkel, és elküldi azt , miután a kiszolgáló elvégzi a szükséges irányelvet, és elküldi a hívást az ügyfélnek, amely az ügyfélkocsiban jelenik meg. Azonban maga a szerverkezelő készenléti állapotban van, és csak az ügyfélkérések fogadásának pillanataiban aktiválódik. Ez egyáltalán nem szükséges, hogy a "kérés-válasz" séma azonnal történjen.

Ugyanakkor a maximális teljesítményhatás akkor érhető el, ha viszonylag kis mennyiségű adatot és alacsony válaszidőt cserélnek, amelyek között interaktív kapcsolat áll fenn.

Távoli eljárások (Hívás távoli eljárások): Jellemző funkciók és kivitelezés

Így ezeknek a technológiáknak két fő jellemzője megkülönböztethető:

  • aszimmetria (a távoli eljárás megindítása csak az egyik fél);
  • synchronicitás (a hívási eljárás felfüggesztése a kérelem megkezdése óta, és a válasz elküldése után).

Ami a megvalósításokat illeti, távoli eljárások (hívás távoli eljárások) Ma több alapvető technológiát használnak, amelyek közül a legszélesebb körben alkalmazható:

  • DCE / RPC-bináris protokoll a TCP / IP, SMB / SIFC stb.
  • A DCOM egy objektumorientált kiegészítés az objektumokra való hivatkozások továbbítására, és felhívja a feldolgozási módszereket;
  • JSON-RPC - egy szöveges protokoll a http;
  • .NET Remoting egy bináris protokoll, amely UDP, TCP és HTTP;
  • Java RMI;
  • SZAPPAN;
  • XML RPC;
  • Sun RPC;
  • Zeroc jég;
  • Routix.rpc et al.

Problémák és feladatok

Most néhány szó a hiányosságokról. A legfontosabb probléma, és ennek megfelelően a végrehajtás feladata az, hogy ugyanazt a műveletet hívja a távoli eljárás a távoli hívásszolgáltató csomóponton keresztül, egyidejűleg különböző gépeken, és gyakran különböző operációs rendszerekkel, címekkel és architektúrával kell ellátni. A folyamat során ezeket a paramétereket egy terminálról a másikra kell másolni. Ez nemcsak a szállítási protokollt használja, hanem a serializációt is, amely lehetővé teszi, hogy különböző típusú adatokat konvertáljon a bájt sorrendbe.

A második pont az a tény, hogy a távoli eljárások (hívás távoli eljárások) nem használnak egy olyan eljárást, mind a helyi szinten, mindkettő (az ügyfélgépen és a szerveren). Ezért a program vészhelyzetének befejezése az egyik terminálon ugyanazt a reakciót okozhatja.

Végül az egyik hálózat a kompatibilitás problémája, mivel egyes programozási nyelvek heterogenitásának köszönhetően a megállapított egységes szabványok ellenére.

Fő típusú alrendszerek

A Windows 10 Eljárások távoli kihívása vagy az alábbi bármely más rangsor a speciális alrendszerek használatát jelenti:

  • a közlekedési alrendszer, amely a kimenő és bejövő kapcsolatok kezelésére szolgál az adatcsomagok garantált kézbesítésével;
  • pool protokollok - az eljárás végrehajtásának fogalma a kapott terminálon;
  • serialization (menetelés) - Az adatfolyamok átalakítása standard bájtos kódokba, az architektúrától függetlenül;
  • a titkosítás küldött és kapott csomagokat a digitális aláírás kivetésével;
  • hitelesítési és engedélyezési rendszer.

Milyen típusú programok szükségesek az RPC végrehajtása?

Ha beszélünk arról, hogy mi szoftver modulok Az operációs rendszerek megkövetelik az RPC szolgáltatás tartását, mindegyik egyszerűen lehetetlen.

De között a jól ismert Windows-rendszerek alkatrészek, akkor vegye figyelembe a telefax, kriptográfia szolgáltatások, hibanaplózásához segítséget és támogatást, a hozzáférést HID eszközök Messaging Service (Messenger), a lemez adminisztráció és logikai partíciók, kontrolling cserélhető meghajtók, hangrendszer, windows Installer És az Isten hír.

Úgy tűnik, hogy ez a lista elég ahhoz, hogy megértsük, hogy a rendszer és a felhasználó által a szolgáltatástól függően.

Mi befolyásolja az rpc-t

Általában az előző leírás alapján az RPC hatását becsülhetjük. Például, nagyon kevés eset van, ha a hang teljesen eltűnt, ha a szolgáltatás ki van kapcsolva, a rendszer nem lehet visszaállítani a rendszert a kritikus hibák után, vagy a felhasználó által kezdeményezett, "repült" a vezeték nélküli hálózati beállítások.

De a legszomorúbb dolog az, hogy ha letiltja a távoli hívást az RPC-eljárásokhoz, néha lehetetlen hozzáférni a fő rendszerbeállításokhoz, legyen a felhasználó legalább háromszor a rendszergazda saját terminálján.

Lehetséges-e letiltani ezt a szolgáltatást

És nagy, sok, sok megpróbálta (és próbálja) a "távoli eljáráshívás" szolgáltatás letiltásához. Ez kategorikusan tilos. Általánosságban elmondható, hogy a rendszer, amikor ilyen kísérletet hajt végre erre, nem adja meg ezt, adja ki a megfelelő értesítést.

De nem mindenki tudja, hogy a Szolgáltatási szekcióban (Services.msc) még mindig van egy ilyen dolog, mint az "RPC-eljárások távoli hívásának helyét". Itt van, és lehet, hogy fogyatéktalan a rendszer számára. A munkájukban használható alkalmazások önállóan hívják a szolgáltatást, ha szükséges.

A hibák és hibák megszüntetése

Végül nézzük meg, hogy mit lehet tenni, ha hiba kerül kiadásra, ha az eljárás távolról hívódik. A legegyszerűbb esetben megpróbálhatja újra a szolgáltatást (ha természetesen kiderül).

Ehhez a megfelelő szekcióban, ahol a kívánt szolgáltatás található, a dupla kattintásos menü a Paraméter szerkesztő menünek nevezik, a bekapcsológombot megnyomja, és a kapcsoló típus az automatikus beállításra kerül. Ha ilyen eljárást végez egy szabványos rakodórendszerrel, akkor nem lehetséges, hogy hasonló műveleteket próbálj meg biztonságos mód. Néhány szakembert ugyanakkor javasoljuk, hogy tiltsa le az antivírus szoftvert.

Ha ez nem segít, de a rendszer telepítéséhez vagy helyreállítási lemeze van, akkor a parancskonzol adminisztrátori jogokkal futtathatja (nem kell letöltenie a lemezt), és ezek a parancsok regisztrálni benne:

  • cD Z: \\ I386 (Z - Irodalmi optikai meghajtó);
  • expand explorer.ex_% temp% \\ Explorer.exe;
  • expand svchost.ex_% temp% \\ svchost.exe.

Ezt követően indítsa el a "Feladatkezelő" (CTRL + DEL + ALT vagy TASKMGR a "Run" menüben, és töltse ki a Explorer.exe folyamatot.

A "Diszpécser", hagyja abba az SVHOST.EXE összes folyamatát, majd szükség van 60 másodpercig kell lennie, hogy beírja a Copy% temp% \\ svchost.exe% systemroot% \\ system32 / y-t a karakterláncban.

Végül, ha hozzáférést kap a szerkesztőhöz rendszerellenőrzési rendszerleíró adatbázis (Regedit) visszaállt, át kell mennie a HKCC-ágon keresztül a rendszeren és az aktuális kultrálszelvényeken keresztül, és a CCONFIGLAGS paraméterhez érkezik, ha értékét nulla értékre változtatja.

Ez nem az RPC-hez kapcsolódó hibák korrekciójának módja. Az a tény, hogy ha ez a szolgáltatás magában foglalta a többi szolgáltatás megsértését, először meg kell szüntetnie a teljesítményükkel kapcsolatos problémákat, de csak akkor tegyen egy kis intézkedést az RPC ellen. És nem mindig a fent leírt paraméterekhez és beállításokhoz teljes hozzáférés. Ha semmi sem történik, akkor az is, mint az enyhítés, akkor teljesen újratelepítenie kell az operációs rendszert, bár remélni szeretném, hogy ez nem fog elérni.

Következtetés

Itt van egy rövid és mindaz, ami a technológiát és az RPC szolgáltatást érinti. Valójában mindannyian sokkal nehezebbnek tűnik, mint amennyit jelenítettek meg ebben a specifikációban, és a kérdés teljes megértése érdekében legalább kezdeti ismeretekkel kell rendelkeznie. De annak érdekében, hogy közös ötlet legyen az RPC-ről, eddig elég.

Ami a leválasztást illeti, ne próbálja meg részt venni ilyen dolgokat, különben az egész rendszer megtagadja. A csökkentett korrekciós megoldás általában segít, de a teljes garanciát nem adhatjuk meg, mert a szolgáltatás deaktiválása más komponensek hibáit okozhatja.



A hálózaton keresztül kommunikáló programok kommunikációs mechanizmusra van szükségük. Az alsó szinten a csomag érkezett, a hálózati jelfeldolgozó program által feldolgozott jel kerül. A felső szinten a rendezvous mechanizmus (Rendezvu) működik a pokolban. Az NFS távoli eljáráshívásmechanizmust (RPC) használ, amelyben az ügyfél kölcsönhatásba lép a szerverrel (lásd az 1. ábrát). E folyamatnak megfelelően az ügyfél először a kiszolgálóra vonatkozó kérelmet küld. A csomag megérkezésekor a lekérdezéssel érkezik, a kiszolgáló felhívja az eljárást a megnyitásához, elvégzi a kért szolgáltatásokat, elküldi a választ, és az ellenőrzést visszaküldi az ügyfélnek.

Az RPC interfész három szintből állhat:

  1. A felső szint teljesen "átlátszó". Ennek a szintnek a programja például a távoli gépen található felhasználók számát visszaadja az RNusers () eljáráshoz. Nem kell tudnia az RPC-mechanizmus használatáról, mivel fellebbezést tesz a programban.
  2. Átlagos szint Ajánlott: a leggyakoribb alkalmazásokhoz. Az RPC-hívások ezen a szinten részt vesznek a Regograms RegisterRPC () és CallRPC (): RegisterRPC () egy közös sötét kódot kapnak, és a CallRPC () hívást hajt végre a távoli eljáráshoz. Az RNusers () hívás a két szubrutin segítségével valósul meg.
  3. Az alacsonyabb szintet az összetettebb feladatokhoz használják, amelyek az eljárások paraméterértékei paraméterértékeire váltanak. Ezen a szinten kifejezetten manipulálhatja az RPC üzenetek továbbításához használt aljzatokat.

Szabályként a felső szintet kell használni, és ne használjon alacsonyabb szinteket anélkül, hogy sok igény lenne.

Annak ellenére, hogy ebben a kézikönyvben csak a C interfészt vesszük figyelembe, a távoli eljárásokhoz való fellebbezés bármely nyelvből készülhet. A különböző gépeken végzett folyamatok közötti kölcsönhatás szervezésére szolgáló RPC mechanizmus működése nem különbözik az egyik gépen végzett munkájától.

RPC (távoli eljáráshívás, távoli eljáráshívás szolgáltatás) a távoli felhasználók és bizonyos fogadó programok közötti interfész, amelyek e felhasználók kérésére indulnak. A gazdaszervezet RPC-szolgáltatása, szabályként számos programot biztosít az ügyfeleknek. Mindegyik program egy vagy több távoli eljárásból származik. Például a Service Remote fájlrendszer Az RPC-hívásokra épülő NFS csak két programból állhat: például egy program kölcsönhatásba lép a magas szintű felhasználói felületekkel, a másik pedig alacsony szintű I / O funkciókkal.

A távoli eljárás minden egyes hívásában két fél részt vesznek: egy aktív ügyfél, amely kérést küld az eljárásnak a kiszolgálóra történő hívására, és a kiszolgáló, amely az ügyfélre válaszol.

Jegyzet. Emlékeztetni kell arra, hogy az "ügyfél" és a "kiszolgáló" kifejezés ebben az esetben egy adott tranzakciós specifikus gazda- vagy szoftverre (folyamatra vagy programra) vonatkozik, amelyek mind kliens szerepkörként működhetnek, mind a szerver szerepét. Például egy olyan program, amely biztosítja a távirányítási szolgáltatás működését, ugyanakkor egy olyan ügyfél lehet, aki hálózati fájlrendszerrel dolgozik.

Az RPC protokoll a távoli eljáráshívási modellekre épül, amelyek hasonlóak a helyi eljárások hívásának mechanizmusához. Ha helyi eljárást hív, akkor az érveket egy bizonyos memória helyre helyezi, a veremben vagy a környezeti változókban, és küldje el a folyamatvezérlést egy adott címen. A munka befejezése után olvassa el az eredményeket egy adott címen, és folytassa a folyamatot.

A távoli eljárással való munkavégzés esetén a fő különbség az, hogy a távoli funkció hívása két folyamatot szolgál fel: az ügyfélfolyamat és a kiszolgáló folyamat.

Az ügyfélfolyamat üzenetet küld a kiszolgálónak, amelyben a hívott eljárás paraméterei engedélyezve vannak, és a válaszüzenet a működésének eredményeivel várja. Válasz fogadásakor az eredmény olvasható, és a folyamat továbbra is működik. A szerver oldalán a híváskezelő folyamat a várakozás állapotában van, és amikor az üzenet érkezik, az eljárás paraméterei olvasnak, végrehajtják, elküldi a választ, és várja a következő hívást.

Az RPC protokoll nem írja elő a folyamatok közötti további kapcsolatokra vonatkozó követelményeket, és nem igényli az elvégzett funkciók szinkronizálását, azaz a hívásokat aszinkron és elképzelte, így az ügyfél más eljárásokat is elvégezhet a válasz során. Az RPC-kiszolgáló minden egyes funkcióhoz külön folyamatot vagy virtuális gépet kiemelhet, ezért az előző lekérdezések végének várakozása nélkül azonnal elfogadhatja a következőket.

A helyi és távoli eljárások iránti kérések között azonban számos fontos különbség van:

  1. Hibafeldolgozás. Az ügyfélnek minden esetben értesítenie kell a hibákat, amelyek a szerveren vagy a hálózaton távoli eljárások hívásakor fordulnak elő.
  2. Globális változók. Mivel a kiszolgáló nem fér hozzá az ügyfél címtartományához, nem használhat rejtett paramétereket globális változók formájában, amikor távoli eljárások.
  3. Teljesítmény. A távoli eljárások végrehajtásának sebessége általában egy vagy két, a hasonló helyi eljárások teljesítésének sebessége alatt.
  4. Hitelesítés. Mivel a távoli eljárásokra vonatkozó felhívások a hálózaton keresztül fordulnak elő, az ügyfél-hitelesítési mechanizmusokat kell használni.

A jegyzőkönyv megépítésének alapelvei.

Az RPC protokoll több különböző szállítási protokollt is használhat. Az RPC-jegyzőkönyv felelőssége csak a szabványok és az üzenetküldés értelmezését szolgálja. Az üzenetküldés pontosságát és megbízhatóságát teljes egészében a közlekedési szint biztosítja.

Az RPC azonban ellenőrizheti a választás és a szállítási protokoll funkciókat. Az RPC és a szállítási protokoll közötti kölcsönhatás példájaként figyelembe vesszük az alkalmazási folyamat RPC-portjának RPC-portmapperen keresztül történő hozzárendelésének eljárását.

Ez a funkció dinamikusan (kérésre) egy adott portot hozzárendel az RPC-kapcsolathoz. A portmapper funkciót gyakran használják, mivel az RPC szállítási kikötőkre fenntartott készlet korlátozott, és az olyan folyamatok száma, amelyek esetlegesen nagyon magasak lehetnek. Például az ügyfél interakciós portjai és az NFS Server Server kiválasztásakor a portmapper.

A portmapper szolgáltatás az RPC sugárzott üzeneteket használja egy adott port - III. Az ügyfél az aktuális RPC port lekérdezési hirdetési üzenetet küld. A portmapper szolgáltatás kezel egy tacskó üzenetet határozza meg a címet helyi szolgálat RPC és elküldi a választ az ügyfélnek. Az RPC portmapper szolgáltatás mind a TCP, mind az UDP protokollokkal működhet.

Az RPC különböző szállítási protokollokkal működhet, de soha nem másolja a funkcióikat, azaz az RPC-t a TCP felett dolgozik, az összes RPC-kapcsolat és megbízhatóság összekapcsolása a TCP-re kerül. Ha azonban az RPC protokoll az UDP tetején van telepítve, további eIigenfunkciót biztosít a garantált üzenetek szállításának biztosításához.

Jegyzet.

Az alkalmazásfeladatok figyelembe vehetik az RPC protokollt, mint egy konkrét eljárást a JSR hálózat funkciójának (ugrás alprogram utasításai).

Az RPC protokoll működtetéséhez a következő feltételeket kell végrehajtani:

  1. Az összes távoli nevű eljárások egyedülálló azonosítása ezen a fogadóban. Az RPC-kérések három azonosítómezőt tartalmaznak - a távoli programszám (szolgáltatás), a távoli program verziószáma és a megadott program távoli eljárás száma. A programszámot a szerviz gyártója hozzárendeli, az eljárás száma jelzi a szolgáltatás sajátos funkcióját.
  2. Az RPC protokoll verziójának azonosítása. Az RPC üzenetek tartalmazzák az RPC protokoll verziót. A továbbított paraméterek formátumainak megfelel, ha az ügyfél dolgozik különböző verziók RPC.
  3. Ügyfél hitelesítési mechanizmusok biztosítása a kiszolgálón. Az RPC protokoll biztosítja az ügyfél hitelesítési eljárását a szolgáltatásban, és szükség esetén minden egyes kéréssel, vagy válaszoljon az ügyfélre. Ezenkívül az RPC lehetővé teszi különböző további biztonsági mechanizmusok használatát.

Az RPC négyféle hitelesítési mechanizmust használhat:

  • Auth_Null - hitelesítés nélkül
  • AUTH_UNIX - UNIX hitelesítés
  • AUTH_SHORT - Hitelesítés a UNIX szabvány szerint saját kódolási struktúrájával
  • AUTH_DES - DES szabványos hitelesítés
  1. A válaszüzenetek azonosítása a megfelelő kérésekhez. Az RPC válaszüzenetek tartalmaznak egy lekérdezési azonosítót, amely alapján épültek. Ez az azonosító az RPC hívás tranzakció azonosítójának nevezhető. Ez a mechanizmus különösen szükség van az aszinkron üzemmódban való munkavégzés során és több RPC-hívás sorrendjében.
  2. A protokoll hibájának azonosítása. Minden hálózati vagy szerver hiba egyedi azonosítókkal rendelkezik, amelyekhez mindegyik vegyület résztvevői meghatározhatják a munka elmulasztásának okát.

Az üzenetek szerkezete protokoll

Az RPC-üzenetek továbbítása a szállítási protokollon keresztül, több RPC üzenet található egy közlekedési csomagon belül. Annak érdekében, hogy egy üzenetet elkülönítsen a másikból, a felvételi jelzőt használják (RM - Record marker). Minden RPC üzenet "megjelölve" pontosan egy RM.

Az RPC üzenet több fragmentumból állhat. Mindegyik fragmentum a cím négy bájtából áll, és (0-2 ** 31-1) adat. A cím első bitje azt jelzi, hogy ez a fragmens az utolsó, és a fennmaradó 31 bit jelzi az adatcsomag hosszát.

Az RPC-struktúrát hivatalosan írja le az adatformátumok leírása és ábrázolása - XDR kiegészítőkkel az eljárások leírásával kapcsolatban. Azt is mondhatja, hogy az RPC leírása nyelv az XDR bővülése, kiegészítve az eljárásokkal való munkával.

Az RPC csomag szerkezete a következő:


A válaszszerkezet (Válasz_Body) tartalmazhat a hiba esetén továbbított szerkezetet (ezután hibakódot tartalmaz), vagy a sikeres kérés feldolgozásának szerkezete (ezután tartalmaz visszaadott adatokat).

Magas szintű szoftveres felület.

A programban lévő szubrutinok használata hagyományos módja a feladat felépítésének, világosabbá tétele. A leggyakrabban használt szubrutinokat a könyvtárban gyűjtik össze, ahol különböző programok használhatók. Ebben az esetben a helyi (helyi) hívásról beszélünk, azaz a hívás, és az úgynevezett objektumok ugyanabban a programon belül működnek egy számítógépen.

Távoli hívás esetén az egyik számítógépen futó folyamat elindítja a folyamatot egy távoli számítógépen (azaz ténylegesen elindítja az eljáráskódot egy távoli számítógépen). Nyilvánvaló, hogy az eljárás távoli felhívása jelentősen eltér a hagyományos helyiektől, de a programozó szempontjából az ilyen különbségek gyakorlatilag hiányoznak, azaz az eljárás távoli hívás architektúrája lehetővé teszi, hogy szimulálja a helyi hívás.

Ha helyi hívás esetén azonban a program továbbítja a paramétereket az úgynevezett eljáráshoz, és megkapja az eredményt egy halom vagy általános memóriaterületen keresztül, majd távoli hívás esetén a paraméterek továbbítása a Kérelem kérése a hálózaton keresztül, és a művelet eredménye a bejövő válaszban van.

Ez a megközelítés az elosztott alkalmazások létrehozásának lehetséges alapja, és bár sok modern rendszer nem használja ezt a mechanizmust, az alapfogalmak és a kifejezések sok esetben megmaradnak. Az RPC mechanizmus leírásakor hagyományosan hívja fel a hívási folyamatot - az ügyfél és a távoli folyamat, amely végrehajtja az eljárást, a kiszolgáló.

A távoli eljáráshívás a következő lépéseket tartalmazza:

  1. Az ügyfélprogram helyi kihívást eredményez a dugó (csonk) nevű eljárásnak. Ebben az esetben az ügyfél "úgy tűnik", hogy egy stubot okozza, valójában a kiszolgáló eljárást hívják. És valójában az ügyfél átadja a szükséges paramétereket a csatlakozóhoz, és visszaadja az eredményt. Azonban a helyzet nem teljesen elképzelhető az ügyfél. A dugó problémája a távoli eljáráshoz szánt argumentumok bevétele, amely szabványos formátumra konvertálható, és hálózati lekérdezést képez. Az érvek csomagolását és a hálózati lekérdezés létrehozását összeszerelésnek nevezik (Marshalling).
  2. A hálózati kérelmet a hálózaton keresztül távoli rendszerre küldi. Ehhez a dugó megfelelő hívásokat használ, például az előző szakaszokban. Ne feledje, hogy ugyanakkor különböző szállítási protokollok használhatók, és nem csak TCP / IP családok.
  3. A távoli fogadónál minden fordított sorrendben történik. A szerver dugó vár egy lekérdezést, és fogadja a paramétereket, amikor fogadás, az eljárás argumentumok. Az extrakció (az eltávolítás) tartalmazhat a szükséges konverziókat (például a bájtok sorrendjének változásait).
  4. A dugó végrehajtja a kiszolgálói eljárás hívását, amelyet az ügyfél kérésére címez, továbbítja a hálózaton át tartó érveket.
  5. Az eljárás befejezése után a vezérlés visszatér a kiszolgáló csatlakozójához a szükséges paraméterek továbbításával. Mint egy kliens dugó; A szerver dugót átalakítja a visszaadott érték az érték eljárást hálózatának kialakításában válaszüzenetet, amely továbbítja a hálózaton keresztül rendszer, amelyben a kérelmet eljött.
  6. Az operációs rendszer továbbítja a fogadott üzenetet az ügyfélpántnak, amely a kívánt konverzió után továbbítja azokat az értékeket (amelyek a távoli eljárás által visszaküldött értékeket) az ügyfélnek tekinti, amely az eljárás normál visszatérését érzékeli.

Így az ügyfél szempontjából hívást kezdeményez a távoli eljáráshoz, amint azt a helyi. Ugyanez mondható el a szerverről: Az eljáráshívás standard módon történik, egy bizonyos objektum (szerver dugó) felhívja a helyi eljárást, és visszaküldi hozzá. Az ügyfél érzékeli a dugót a hívott kiszolgálónak, és a kiszolgáló saját kliens sapkát veszi.

Így a dugók az RPC rendszer lényege, amely felelős az Ügyfél és a távoli kiszolgáló (Eljárás) közötti üzenetek kialakulásának és továbbításának minden aspektusáért, bár az ügyfél és a szerver úgy véli, hogy a hívások helyben fordulnak elő. Ez az RPC fő koncepciója - hogy teljes mértékben elrejtse az elosztott (hálózati) természetét a kölcsönhatásban a plug kódban. A megközelítés előnyei nyilvánvalóak: az ügyfél és a szerver független a hálózati megvalósítástól, mindkettő egy bizonyos elosztott virtuális gépés az eljárásoknak a hívások szabványos felülete van.

Átviteli paraméterek

A paraméterek-értékek átadása nem okoz különleges nehézségeket. Ebben az esetben az ügyfélpult a hálózati lekérdezés paraméterértékét helyezi el, amely lehetővé teszi a standard forma átalakítását (például a bájt sorrendjének megváltoztatását). Sokkal inkább bonyolultabb a mutatók továbbítása, ha a paraméter az adatok címét jelöli, és nem az értéküket. A címkérés átvitelét megfosztják, mivel a távoli eljárást teljesen más címterületen végzik. A legtöbb. egyszerű döntésAz RPC-re alkalmazható az ügyfelek tilalma az ügyfelek számára az értéket más módon továbbítja, bár határozottan komoly korlátozásokat hajt végre.

Kötés (kötés)

Mielőtt az ügyfél távoli eljárást okozhat, szükség van egy távoli rendszerre, amely a kívánt kiszolgálóval rendelkezik. Így a kötelező erejű feladat kétre szétesnek:

  1. Távoli gazdagép keresése a kívánt kiszolgálóval
  2. Megtalálni a kívánt kiszolgáló folyamatot ezen a fogadóban

Különböző megközelítések használhatók a gazdagép megtalálásához. Lehetséges lehetőség, hogy hozzon létre egy bizonyos központosított referenciakönyvet, amelyben a gazdagépek bejelentik a szervereiket, és ahol az ügyfél választhatja ki a megfelelő eljárás fogadóját és címét.

Minden egyes RPC-eljárást egyedileg határozza meg a programszám és az eljárás. A program száma meghatározza a távoli eljárások csoportját, amelyek mindegyike saját számmal rendelkezik. Minden program a verziószámhoz is rendelhető, így ha a bejövő kisebb változtatások (például az eljárás hozzáadásával) nincs szükség a szám megváltoztatására. Jellemzően számos funkcionálisan hasonló eljárást hajtanak végre egy programmodulban, amely az indításkor ezeknek az eljárásoknak a kiszolgálójává válik, és amelyet a programszám azonosít.

Így, amikor az ügyfél távoli eljárást szeretne hívni, meg kell ismernie a szükséges szolgáltatást nyújtó programszámokat, verziót és eljárásokat.

A kérés elküldéséhez az ügyfélnek meg kell ismerni a fogadó és a kiszolgálóprogramhoz tartozó portszám hálózati címét is, amely a szükséges eljárásokat biztosítja. Ehhez használja a Portmap (IM) démont (bizonyos rendszerekben, amelyet rpcbind (IM) neveznek). A démon elindul a gazdagépen, amely távoli eljárások szolgáltatását biztosítja, és a jól ismert portszámot használja. A folyamatkiszolgáló inicializálásakor a portmap (IM) regisztrálja az eljárásokat és a portszámokat. Most, hogy az ügyfélnek ismernie kell a portszámot, hogy hívjon egy konkrét eljárást, kérést küld a portmap szerverre (IM), amely viszont, vagy visszaadja a portszámot, vagy átirányítja a kérést közvetlenül a távoli eljáráskiszolgálóra és Végrehajtás után válaszol az ügyfélre. Mindenesetre, ha a szükséges eljárás létezik, az ügyfél portmap-számot kap a Portmap kiszolgálóból, és további kérések közvetlenül a kikötőbe kerülhetnek.

Különleges helyzetek feldolgozása (kivétel)

Különleges helyzetek feldolgozása a helyi eljárások hívásakor nem jelent különleges problémát. A Unix olyan folyamatok feldolgozási hibáit biztosítja, mint a nullára való megosztás, az érvénytelen memóriaterületre stb. A távoli eljárás felhívása esetén a hibás helyzetek valószínűsége növekszik. A hibák, például a hibás hálózati üzenet beszerzéséhez hozzáadódnak a kiszolgáló hibáihoz és dugókhoz.

Például az UDP használatakor az üzenetek adatátviteli protokollként továbbítják egy adott időtúllépés után. Az ügyfél hibát ad vissza, ha egy bizonyos számú kísérlet után a kiszolgáló válaszát soha nem kapták meg. Abban az esetben, ha a TCP protokollt használ, az ügyfél hibát ad vissza, ha a kiszolgáló csökkenti a TCP-kapcsolatot.

Semantika kihívás

Egy helyi eljárás meghívása egyértelműen végrehajtja a végrehajtását, amely után a vezérlést visszaküldi az anyavállalathoz. Ellenkező esetben a helyzet a távoli eljárás meghívásakor történik. Lehetetlen megállapítani, hogy az eljárást kifejezetten elvégezzék, hogy egyáltalán elvégezhető-e, és ha igen, mi az idők? Például, ha a kérelmet egy távoli rendszer fogadja, a kiszolgálóprogram vészhelyzetének befejezése után az eljárás egyáltalán nem teljesül. Ha az ügyfél akkor, ha a válasz egy bizonyos idő után (Timeout) után sikertelen (Timeout) Újra küldi a kérelmet, akkor a válasz már a hálózaton keresztül továbbított helyzetet hozhat létre, és a kérelmet ismét elfogadja a távoli eljárás feldolgozásához. Ebben az esetben az eljárás többször is végrehajtásra kerül.

Így a távoli eljárás végrehajtása a következő szemantika jellemezhető:

  • Egy és csak egyszer. Ez a viselkedés (egyes esetekben a legkívánatosabb) nehézséget igényel kiszolgáló riasztást.
  • Maximális idő. Ez azt jelenti, hogy az eljárás egyáltalán nem teljesül, vagy csak egyszer teljesült. Ilyen állítás elvégezhető, ha a normál válasz helyett hiba érkezik.
  • Legalább egyszer. Az eljárás biztosan egyszer teljesült, de talán több. Az ilyen helyzetben normál működés esetén a távoli eljárásnak Idempotencia tulajdonsággal kell rendelkeznie (az angol iszdementől). Az eljárás többszörös végrehajtásával rendelkezik, amelynek nem okoz kumulatív változásokat. Például a fájl olvasása IDEMpotens, és szöveg hozzáadása a fájlhoz - nem.

Adatszolgáltatás

Amikor az ügyfél és a kiszolgáló egy rendszerben egy számítógépen történik, az adatok inkompatibilitási problémái nem fordulnak elő. És az ügyfél és a kiszolgáló számára a bináris formában lévő adatok egyaránt tűnnek. Távoli hívás esetén az ügyet bonyolítja az a tény, hogy az ügyfél és a kiszolgáló különböző architektúrával rendelkező rendszereken végezhető el, amelyek eltérő adatokkal rendelkeznek (például a lebegőpont értékének ábrázolása, a a bájtok stb.)

Az RPC-rendszer legtöbb implementációja határozza meg az adatokat, amelyekre a lekérdezések és válaszok során továbbított összes értéket át kell alakítani.

Például az RPC Company Sun Microsystems adatmegjelenítési formátuma a következő:

  1. A bájtok sorrendje - a legidősebb - az utolsó
  2. A lebegőpontos értékek bemutatása - IEEE
  3. Szimbólum bemutató - ASCII

Háló

A funkcionalitással az RPC rendszer közti helyet foglal el az alkalmazás szintje és a közlekedési szint között. Az OSI modellnek megfelelően ez a rendelkezés megfelel a bemutató és a munkamenet szintjének. Így az RPC elméletileg független a hálózat megvalósításától, különösen a közlekedési szint hálózati protokolljaitól.

A rendszer szoftverének megvalósítása, általában egy vagy két protokoll támogatása. Például a Sun Microsystems szoftverfejlesztés RPC támogatja az üzeneteket a TCP és az UDP protokollok segítségével. Ennek vagy a protokoll kiválasztása az alkalmazás követelményeitől függ. Az UDP protokoll kiválasztása indokolt olyan alkalmazásokhoz, amelyek a következő jellemzőkkel rendelkeznek:

  • Úgynevezett eljárások idempotens
  • A továbbított argumentumok és a visszaküldött eredmény mérete kisebb, mint az UDP csomag mérete - 8 KB.
  • A kiszolgáló több száz ügyfelet kínál. Mivel a TCP protokollokkal való együttműködés során a kiszolgáló kénytelen támogatni az aktív ügyfelekkel való kapcsolatot, az erőforrások jelentős részét képezi. Az UDP protokoll ebben a tekintetben kevésbé erőforrás-intenzív

Másrészt a TCP biztosítja hatékony munka Alkalmazások a következő jellemzőkkel:

  • Az alkalmazás megbízható átviteli protokollt igényel
  • Nem befolyásoló eljárások
  • Az érvek vagy a visszaküldött eredmény mérete meghaladja a 8 kb-ot

A protokoll kiválasztása általában az ügyfél mögött marad, és a rendszer különböző módon szervezi az üzenetek kialakulását és továbbítását. Tehát a TCP protokoll használata esetén, amelyre a továbbított adatok a bájtok árama, akkor elkülönítenie kell az üzeneteket egymástól. Erre például a rekord címkézés ismertetett protokoll RFC1057 „RPC: Remote Procedure Call jegyzőkönyv Specification Version 2” alkalmazzák, ahol a 32-bites egész helyezzük elején minden egyes üzenet, hogy határozza meg a méretét az üzenet bájtok.

Ez más, és a hívás szemantikájával. Például, ha az RPC megbízhatatlan szállítási protokollt (UDP) történik, a rendszer rövid ideig (timeouts) keresztül az üzenet átirányítását végzi. Ha az ügyfélalkalmazás nem kap választ, akkor azt bizalommal lehet mondani, hogy az eljárás nulla vagy több alkalommal állítható be. Ha a válasz beérkezett, az alkalmazás arra a következtetésre juthat, hogy az eljárást legalább egyszer végeztük. A megbízható szállítási protokoll (TCP) használata esetén, ha válasz van, azt mondhatjuk, hogy az eljárás egyszer befejeződött. Ha a válasz nem érkezett be, határozottan azt mondja, hogy az eljárás nem teljesült, lehetetlen3.

Hogyan működik?

Lényegében az RPC rendszer maga egy beépített ügyfélprogram és kiszolgálóprogram. Az elosztott alkalmazások fejlesztésekor örvendezve, hogy az RPC protokoll részleteit, vagy az üzenetfeldolgozás programozását nem kellene megadnia. A rendszer magában foglalja a megfelelő fejlesztési környezet létezését, amely nagymértékben megkönnyíti az alkalmazott életét szoftver. Az RPC egyik legfontosabb pontja, hogy az elosztott alkalmazás fejlesztése elkezdi meghatározni az objektum interfészt - a kiszolgálói funkciók hivatalos leírását egy speciális nyelven. Az interfész alapján az ügyfél- és szerver dugókat automatikusan létrehozzák. Az egyetlen dolog, amit meg kell tennie, hogy írja az eljárás tényleges kódját.

Például fontolja meg a Sun Microsystems cég RPC-jét. A rendszer három fő részből áll:

  • az RPCGEN (1) - RPC-fordító, amely a távoli eljárás interfészének leírásán alapul, az ügyfél- és szerver dugókat program formájában S.
  • XDR könyvtár (külső adatok ábrázolása), amely az átalakítás funkcióit tartalmazza különböző típusok Adatok egy géptől független nézetbe, amely lehetővé teszi a heterogén rendszerek közötti információcserét.
  • A rendszer egészének működését biztosító modulok könyvtára.

Fontolja meg a naplózás legegyszerűbb elosztott alkalmazásának példáját. Az ügyfél az indításkor távoli eljárást eredményez egy üzenet rögzítésére egy távoli számítógép naplófájlba.

Ehhez legalább három fájlt kell létrehoznia: Log.x Távoli eljárások Specifikáció (az interfész leírása nyelvén), valójában a távoli eljárások naplójának szövege és a fő ügyfél fejprogramjának szövege () Ügyfél.c (a c) nyelven.

A RPCGEN fordító (L) alapján a log.x leírás létre három fájlt: a szöveg az ügyfél dugók és a szerver a Log Clnt.c és Log SVC.C), valamint a Log.h leíró fájl által használt mindkét dugót.

Tehát fontolja meg a programok forrásszövegeit.

Ez a fájl jelzi a távoli eljárás regisztrációs paramétereit - a programszámok, verziók és eljárások, valamint a hívásinterfész - a bemeneti argumentumok és a visszatérési értékek. Így az RLOG eljárást definiálják, a fogadó karakterlánc (amelyet a naplóban rögzítenek) és a visszatérési érték jelzi a megrendelt művelet sikeres vagy sikertelen végrehajtását.


program Log_Prog ( változat. Log_ver ( int. Rlog (string) \u003d 1; ) \u003d 1; ) \u003d 0x31234567;

Az RPCGEN (L) fordító létrehozza a log.h fejléc fájlt, ahol különösen az eljárások meghatározása:


Figyelembe vesszük ezt a fájlt. A fordítót Transolja az interfész leírási fájljában megadott RLOG nevet, a RLOG_1-ben, a nagybetűket cserélve a vonalra, és hozzáadja a verziószámot az aláhúzással. A visszaküldött érték értéke az int *-ról megváltozott. Ez a szabály - Az RPC lehetővé teszi, hogy csak a paraméterek interfészének leírásakor kijelölt címeket továbbítsa. Ugyanazt a szabályt érinti, és mintázatos érvként továbbítják. Bár valójában az RLOG_L () függvény is az RLOG_L () függvény argumentumára is utal.

A fejlécfájl mellett az RPCGEN Compiler (L) létrehozza az ügyfélpánt moduljait és a szerver dugókat. Lényegében, ezeknek a fájloknak a szövegében a teljes távoli híváskód zárul.

A szerver csatlakozó egy fejprogram, amely az összes hálózati interakciót feldolgozza az ügyféllel (pontosabban a dugóval). A művelet végrehajtásához a szerverpult helyi funkcióhívást eredményez, amelynek szövegét meg kell írni:


Az ügyfél elfogadja azt az érvet dugó által továbbított távoli eljárás lehetővé teszi a szükséges átalakítás, generál egy kérést a portmap szervernek (1M), kommunikál a távoli eljárás szerver és végül továbbítja a visszatérési érték az ügyfélnek. Az ügyfél számára a távirányítási felhívás leáll, hogy felhívja a dugót, és nem különbözik a szokásos helyi hívástól.

Ügyfél.c.


#Inlude. #Inlude. "Logh" fő.(int. Argc char. * argv) (Ügyfél * Cl; char. * Kiszolgáló, * mystring, * clntime; TIME_T BINTIME; int. * Eredmény; ha (ARGC! \u003d 2) (Fprintf (STDERR, "Hívásformátum:% s Ces Address_CHOST \\ n", argv); kilépés (1);) kiszolgáló \u003d argv; / * Kapunk egy ügyfélleírót. Kifizetés esetén - értesítsük a kapcsolatot a kiszolgálóval való kapcsolat létrehozásának lehetetlenségét * / ha ((C1 \u003d clnt_create (kiszolgáló, log_prog, log_ver, "UDP")) \u003d\u003d null) (CLNT_PCREERROR (szerver); kilépés (2);) / * Jelölje ki a puffert a karakterlánc * / Mystring \u003d ( char. *) malloc (100); / * Határozza meg az eseményidőt * / Bintime \u003d idő ((Time_t *) null); Clnttime \u003d ctime (& bintime); A Sprintf (MyString, "% s - ügyfél fut", clnttime); / * Adunk üzenetet a magazin számára - az ügyfél kezdési ideje. Hiba esetén - értesítem a hibát * / ha ((Eredmény \u003d rlog_l (& mystring, cl) \u003d\u003d NULLA) (Fprintf (STDERR, "ERROR2 \\ n"); CLNT_PERROR (CL, SERVER); Kilépés (3);) / * B hiba esetén a távoli számítógépen értesítsük a hibát * / ha (* Eredmény! \u003d 0) Frintf (Stderr, "Hiba írás a magazinhoz \\ n"); / * 0 csontváz leíró * / Cint pusztítás (CL); Kilépés (0); )

A LOG_CLNT.C kliens dugó össze van állítva az ügyfél.c modulhoz, hogy megkapja a végrehajtható ügyfélprogramot.


Most néhány gazda kiszolgálón.nowhere.ru, meg kell indítania a kiszolgáló folyamatot:


$ Logger.

Ezután, amikor az ügyfél RLOG egy másik gépre indul, a kiszolgáló hozzáadja a megfelelő bejegyzést a naplófájlba.

Az RPC működési sémája ebben az esetben az 1. ábrán látható. 1. A modulok az alábbiak szerint lépnek kapcsolatba:

  1. Amikor a kiszolgáló folyamat indul, létrehoz egy UDP-csatlakozót, és összekapcsolja a helyi portot ezzel az aljzattal. Ezután a kiszolgáló az SVC_REGISTER (3N) könyvtár funkcióját hívja be a programszámok és annak verziójának regisztrálásához. Ehhez a funkció a portmap (IM) folyamatra utal, és továbbítja a kívánt értékeket. A portmap szerver (IM) általában akkor kezdődik, amikor a rendszer inicializálása és néhány jól ismert porthoz van társítva. Most a Portmap (3n) ismeri a portszámunk számát és verzióját. A szerver kérésre vár. Megjegyezzük, hogy az összes leírt intézkedések készülnek a szerveren dugó által létrehozott RPCGEN fordító (IM).
  2. Amikor az RLOG program elindult, az első dolog, amit csinál, a triggerek - hívja a CLNT_CREATE könyvtár funkciót, jelezve a távoli rendszer címét, a programszámokat és a verziót, valamint a szállítási protokollt. A függvény kérést küld a Portmap Server (IM) távoli kiszolgálóra. NowHere.m, és megkapja a távvezérlő számát a naplószerver számára.
  3. Az ügyfél az ügyféldugóban meghatározott RLOG_1 () eljárást hívja, és továbbítja a dugó vezérlését. Ez viszont kérést képez (az argumentumok átalakítása az XDR formátumba) UDP csomagként, és elküldi a Portmap szerver (IM) által kapott távoli portra. Aztán egy ideig választ költséget, és nem kezelés esetén újra elküldi a kérést. Kedvező körülmények között a lekérdezést a Logger Server (Server Plug modul) fogadja el. A dugó meghatározza, hogy melyik funkciót hívták (az eljárási számmal), és hívja a log.c. modul RLOG_1 () funkcióját Miután visszajuttatta a vezérlést a dugóhoz, az utóbbi átalakítja az RLOG_1 () függvény által az XDR formátumban visszaküldött értéket, és válaszol egy UDP csomagként. A válasz beérkezése után az ügyfélbugó megkerüli a visszatérési értéket, átalakítja, és visszatér az ügyfél fejprogramjához

) Távoli eljárás Call Concept

Távoli eljárás Call - RPC (távoli eljáráshívás - RPC) az, hogy kibővítse a jól ismert és érthető vezérlési mechanizmust és adatokat az egyik gépen futó programon belül, hogy továbbítsa a vezérlést és az adatokat a hálózaton keresztül. A távoli híváseszközök célja az elosztott számítástechnika megszervezésének megkönnyítése. Az RPC használatának legnagyobb hatékonysága olyan alkalmazásokban érhető el, amelyekben interaktív kapcsolat van a távoli komponensek között, kis válaszidővel és viszonylag kis mennyiségű továbbított adatokkal. Az ilyen alkalmazásokat RPC-orientáltnak nevezik.

A helyi eljárások hívásának jellemző jellemzői:

Aszimmetria, azaz az interakció egyike az iniciátor; A Synchronicitás, azaz a hívási eljárás végrehajtása, amikor a kérés pillanatától kezdődően megáll, és csak a hívott eljárásból való visszatérés után folytatódik.

A távoli hívások végrehajtása jelentősen bonyolultabb a helyi hívás kihívások végrehajtásával. Kezdjük azzal, hogy mivel a hívás és az úgynevezett eljárások különböző gépeken végeznek, különböző címterületekkel rendelkeznek, és ez problémákat okoz, ha paramétereket és eredményeket továbbít, különösen akkor, ha a gépek nem azonosak. Mivel az RPC nem számíthat a megosztott memóriára, ez azt jelenti, hogy az RPC-paraméterek nem tartalmazhatnak mutatókat a nem defo-memória sejteken, és hogy a paraméterértékeket egy számítógépről a másikra kell másolni. A helyi hívás RPC közötti következő különbség az, hogy szükségszerűen használja az alapul szolgáló kommunikációs rendszert, de ez nem lehet jól látható az eljárások meghatározásában vagy az önmagukban. A távoli területek további problémákat okoznak. Az okozó program végrehajtását és az ebből eredő helyi eljárást egyetlen folyamatban hajtják végre. De legalább két folyamat vesz részt az RPC - egyik végrehajtásában minden gépben. Abban az esetben, ha az egyiket kiemelték, a következő helyzetek fordulhatnak elő, a következő esetek előfordulhatnak: ha az okozó eljárás baleset, távolról okozott eljárások "árva", és amikor a távoli eljárások véletlenül befejeződnek, olyan eljárásokat okoznak, amelyek sikertelenül várnak a távoli válaszra eljárások.

Ezenkívül számos probléma merül fel a programozási nyelvek heterogenitásával és a működési környezetekkel kapcsolatban: az egyik programozási nyelvben támogatott adatstruktúrák és eljárási eljárások nem támogatottak ugyanúgy az összes többi nyelven.

Ezek és más problémák megoldják a széles körben elterjedt RPC technológiát, amely számos elosztott operációs rendszert tartalmaz.

Alapvető RPC műveletek

Az RPC munkájának megértése érdekében először vegye figyelembe a helyi eljáráshívás végrehajtását egy autonóm módon működő rendszeres gépen. Hagyja, hogy például rendszerhívás lesz

COUNT \u003d READ (FD, BUF, NBYETES);

ahol az fd egész szám
BUF - karakterek tömbje,
A Nbytes egész szám.

Hívás kezdeményezése, amely az eljárást okozza, a paramétereket fordított sorrendben nyomja meg a paramétereket (3.1. Ábra). Az olvasott hívás után a visszatérési értéket a regiszterbe helyezi, áthelyezi a visszatérési címet, és visszaadja a hívó eljárás vezérlését, amely kiválasztja a verem paramétereit, visszaadja az eredeti állapotba. Ne feledje, hogy a paraméterekkel rendelkező nyelven hivatkozhat (név szerint), vagy érték szerint (érték szerint). A nevezett eljárás tekintetében az értékek inicializált helyi változók. A hívott eljárás megváltoztathatja őket, és ez nem befolyásolja a változók eredeti példányainak értékét a hívó eljárás során.

Ha a változóra mutató mutató a hívott eljáráshoz továbbítódik, akkor a változó értékének változása a kapott eljárás magában foglalja a változó értékét és az okozási eljárást. Ez a tény nagyon jelentős az RPC esetében.

Van egy másik paraméterátviteli mechanizmus, amelyet nem használnak az S-ben. Azt nevezik hívás-mellékhelyi / visszaállítás, és az, hogy a hívóprogramot az értékek formájában átmásolja, majd a hívás befejezése után másoljon a hívási eljárás eredeti értékei.

Az a döntés, amelyről a használati paraméterek továbbítására szolgáló mechanizmust a nyelv fejlesztői fogadják el. Néha a továbbított adatok típusától függ. A nyelvben például a teljes és más skaláradatokat mindig az érték és a tömbök - referenciaként továbbítják.

Ábra. 3.1. a) verem az olvasás ellenőrzése előtt;
b) verem az eljárás során;
c) a hívó programhoz való visszatérés után

Az RPC-n alapuló ötlet az, hogy felhívja a távoli eljárást, amely úgy néz ki, mint a hívás a helyi eljáráshoz. Más szóval - az RPC átlátszóvá tétele: a hívónak nem kell tudnia, hogy a hívott eljárás egy másik gépen van, és fordítva.

Az RPC az alábbiak szerint éri el az átláthatóságot. Amikor az úgynevezett eljárás valóban távoli, a könyvtár helyi eljárás helyett a Client Stub (csonk - dugó) újabb verziója. Az eredeti eljáráshoz hasonlóan a csonkot a hívószekvenciával (mint a 3.1. Ábrán) hívják fel, a rendszermag elérésekor is megszakítás van. Csak az eredeti eljárással ellentétben nem helyezi el a regiszterek paramétereit, és nem kéri az adatokat a magból, hanem üzenetet generál, hogy távoli gépet küldjön a rendszermaghoz.

RPC végrehajtási lépések

A szoftverkomponensek kölcsönhatása az eljárás távoli hívásának végrehajtása során a 3.2. Ábrán látható. Miután az ügyfél Stubot az ügyfélprogram hívta, az első feladat az, hogy a puffert küldéssel töltse ki. Bizonyos rendszerekben az ügyfélkötés egyetlen fix hosszúságú pufferrel rendelkezik, amelyet minden egyes új kérés kézhezvételétől kezdve minden alkalommal tölt meg. Más rendszerekben az üzenetpuffer egy puffermedence az egyes üzenetmezők számára, és ezeknek a puffereknek a már feltöltötték. Ez a módszer különösen alkalmas azoknál az esetekre, amikor a csomag nagyszámú mezőből áll, de ezek közül sok terület értéke nem változik a híváshoz.

Ezután a paramétereket megfelelő formátumra kell átalakítani, és be kell illeszteni az üzenetpufferbe. Ezen a ponton az üzenet készen áll az átvitelre, ezért az alaphívás megszakadása történik.

Ábra. 3.2. Távoli eljáráshívás

Amikor a kernel megkapja az ellenőrző, átkapcsol az összefüggéseket, megmenti a processzor regiszterek és a memória kártya (oldal leírásokat), beállít egy új memóriakártya, amely lehet használni, hogy a munka magmódban. Mivel a rendszermag és a felhasználó kontextusai különböznek, a rendszermagnak pontosan másolja az üzenetet saját címterületére, hogy hozzáférjen hozzá, emlékezzen a célcímre (A, esetleg más fejléc mezőkre), és legyen átkerül a hálózati felületre. Ez befejeződik az ügyfél oldalán. Az átviteli időzítő be van kapcsolva, és a rendszermag végrehajthat egy ciklikus felmérést egy válasz, vagy átadhatja a tervező vezérlését, amely bármely más végrehajtási folyamat kiválasztása. Az első esetben a lekérdezés felgyorsul, de nincs többprogramozás.

A kiszolgáló oldalán a bejövő biteket a fogadó készülék vagy a beépített puffer, vagy a RAM-ban helyezi el. Ha minden információt kap, megszakítás keletkezik. A megszakítási kezelő ellenőrzi a csomagadatok helyességét, és meghatározza, hogy melyeket a szúrt kell továbbítani. Ha a csonkok közül egyik sem várja ezt a csomagot, a kezelőnek a pufferbe kell helyezni, vagy akár megtagadhatja azt. Ha van egy várakozó stub, az üzenet másolódik hozzá. Végül a kontextusokat a regiszterek és a memóriakártyák kapják, figyelembe véve azokat az értékeket, amelyeket abban az időben, amikor a csonk felhívta a fogadást.

Most a kiszolgáló stub elindul. Csomagolja ki a paramétereket, és ennek megfelelően helyezi el őket a veremen. Ha minden készen áll, a szerver hívja. Az eljárás befejezése után a kiszolgáló az eredményeket az ügyfélnek továbbítja. Ehhez a fent leírt összes fázis csak fordított sorrendben történik.

A 3.3. Ábra mutatja az egyes RPC-híváshoz szükséges parancssorozatot, és a 3.4. Ábra - amely a teljes RPC időtartamát a leírt 14 szakaszuk végrehajtására fordítják. Tanulmányok végeztük többprocesszoros munkaállomáson december Firefly, és, bár a jelenléte öt processzorok szükségszerűen befolyásolja a mérési eredményeket, a hisztogram leírt az ábrán ad egy általános elképzelést az RPC végrehajtása folyamatban.

Ábra. 3.3. RPC eljárás végrehajtási lépései

Ábra. 3.4. Az RPC 14 szakasza közötti időmegosztás

1. Hívjon szúrást

2. Készítsen puffert

3. Csomagparaméterek

4. Töltse ki a fejléc mezőt

5. Számítsa ki az üzenetet az üzenetben

6. Megszakítás a kernelre

7. Csomagsor a végrehajtáshoz

8. Az üzenet átvitele a QBUS buszvezérlőnek

9. Az Ethernet átviteli ideje

10. Szerezzen be egy csomagot a vezérlőből

11. A megszakítás feldolgozására vonatkozó eljárás

12. Az ellenőrző összeg kiszámítása

13. A kontextus kapcsolása a felhasználói térhez

14. A szerver csonkja

Dinamikus kötés

Fontolja meg azt a kérdést, hogy az ügyfél hogyan állítja be a kiszolgáló helyét. A probléma megoldásának egyik módszere a kiszolgáló hálózati címének közvetlen használata az ügyfélprogramban. Ennek a megközelítésnek a hiánya rendkívüli rugalmatlanság: amikor a kiszolgálót mozgatják, vagy a kiszolgálók számának növekedésével, vagy ha az interfész megváltozik mindezenbb, és sok más esetet, akkor az összes használt programot újra kell fordítani a kiszolgáló címének merev feladata. Annak érdekében, hogy elkerüljük ezeket a problémákat, egyes elosztott rendszerekben az úgynevezett dinamikus kötést alkalmazzuk.

A dinamikus kötődés kezdeti pillanat a szerver formális meghatározása (specifikációja). A specifikáció tartalmazza a fájlkiszolgáló nevét, a verziószámát és az eljárások listáját az ügyfelek számára (3.5. Ábra). Minden eljárás, leírását adjuk a paraméterei jelzi, hogy a paraméter a bemeneti vagy kimeneti képest a szerver. Egyes paraméterek egyidejűleg bemenetek és kimenetek lehetnek - például egy bizonyos tömb, amelyet az ügyfélnek a kiszolgálóra küldenek, akkor módosulnak, majd visszatér az ügyfélhez (másolási / visszaállítási művelet).

Ábra. 3.5. RPC szerver specifikáció

A hivatalos szerver specifikáció használunk a forrás adatokat a Staby generáló program, amely megteremti a kliens és a szerver hasogat. Ezután az adott könyvtárakba kerülnek. Amikor a felhasználó (kliens) program a kiszolgáló specifikációjában meghatározott bármilyen eljárást okozza, a megfelelő csonkozási eljárás a bináris programkódhoz kapcsolódik. Hasonlóképpen, amikor a kiszolgáló összeáll, a kiszolgáló stabilizálódik hozzá.

A szerver elindításakor az első művelete a kiszolgáló interfészének átadása egy speciális, kötőanyag "ohmnak nevezhető programjával. Ez a folyamat, amelyet a kiszolgáló regisztrációs folyamatnak neveznek, magában foglalja a névszerver átvitelét, a verziószámot, az egyedi azonosítót és a vezető helyét leíró. a leíró szisztémásán független és jelenleg IP, Ethernet, X.500 vagy bármely más címre. Ezen kívül egyéb adatot is tartalmazhat, mint a hitelesítés.

Ha az ügyfél első alkalommal hívja az egyik távoli eljárásokat, például olvasni, az ügyfélcsövek úgy véli, hogy még nem kapcsolódik a kiszolgálóhoz, és küld egy kötőanyag-programot, amely a kívánt verzió felületének behozatalát kéri a kívánt kiszolgáló. Ha ilyen szerver létezik, a kötőanyag továbbítja a leírót és az egyedi azonosítót az ügyfélbe.

Az Ügyfél Stab Ha üzenetet küld egy lekérdezéssel, a leírót használja címként. Az üzenet tartalmazza a paramétereket és egy egyedi azonosítót, hogy a szerver kernel felhasználása érdekében küldje el a kapott üzenetet a kívánt szervert, ha van néhány közülük ezen a gépen.

Ez a módszer, amely az import / export interfészek, nagy rugalmassággal rendelkezik. Például több kiszolgáló is támogatja ugyanazt az interfészt, és az ügyfelek véletlenszerűen oszthatók ki a szervereken. Ennek a módszernek a részeként a szerverek rendszeres felmérése lehetséges, teljesítményük elemzése, és az elutasítás, az automatikus leállítás esetén, amely növeli a rendszer átfogó hullámát. Ez a módszer támogathatja az ügyfél hitelesítését is. Például a szerver meghatározhatja, hogy csak az ügyfelek használhatók-e egy adott listából.

A dinamikus kötés azonban hátrányai vannak, például további (ideiglenes költségek) az export- és import interfészekhez. Nagysága ezeket a költségeket jelentős lehet, mivel sok ügyfél folyamatok léteznek rövid idő alatt, és minden alkalommal a folyamat elindul a folyamat, a felület eljárást végre kell hajtani újra. Ezenkívül a kötőanyag program lehet egy szűk keresztmetszet a nagy elosztott rendszerekben, és számos hasonló célú program létrehozása szintén növeli a folyamatok létrehozásának és szinkronizálásának túllépését.

RPC szemantika hibák esetén

Ideális esetben az RPC-nek megfelelően és hibák esetén kell működnie. Tekintsük a következő kudarcok osztályát:

Az ügyfél nem tudja meghatározni a kiszolgáló helyét, például a kívánt kiszolgáló meghibásodása esetén, vagy annak köszönhetően, hogy az ügyfélprogram sokáig összeállított, és a kiszolgáló felület régi verzióját használta. Ebben az esetben az ügyfélkérésre válaszul egy üzenet hibakódot tartalmaz. Elvesztette az ügyfél kérését a kiszolgálóra. A legegyszerűbb megoldás - egy bizonyos idő elteltével ismételje meg a kérést. Elveszett válasz a szerverről az ügyfélre. Ezt az opciót bonyolultabb az előző, mivel egyes eljárások nem idempotens. Az IDEMPOTENT-t az eljárásnak nevezik, amelynek végrehajtása többször megismételhető, és az eredmény nem változik. Az ilyen eljárás példája egy fájlt olvashat. De a bankszámla egyes összegének eltávolítására vonatkozó eljárás nem idempotens, és válaszvesztés esetén az ismételt kérelem jelentősen megváltoztathatja az ügyfél fiókjának állapotát. Az egyik lehetséges megoldás az, hogy minden eljárást az IDEMPOTENT űrlapra hozza. A gyakorlatban azonban ez nem mindig sikerül, ezért egy másik módszert alkalmazhatunk - az ügyfélmag összes kérésének következetes számozása. A szerver kernel emlékszik az egyes ügyfelek legfrissebb kérésének számára, és az egyes kérelmek fogadásakor elvégzi az elemzést - hogy ez a kérés elsődleges vagy megismétlődött-e. A kiszolgáló a kérés kézhezvételét követően összeomlott. Fontos az idempotenciát is, de sajnos a számozási lekérdezésekkel rendelkező kéréseket nem lehet alkalmazni. Ebben az esetben számít

    Java RMI mint a hálózatotől független távoli kihívások típusát, a munka főbb lépéseit és célt. Az elosztott és el nem osztott összehasonlítás Java programok. Építészet, dugó és csontváz szintek, távoli linkek és közlekedés Java RMI.

    Az SQL lekérdezések előzetes összeállítása a végrehajtás helyén. Használjon előkészítési utasításokat. A hívásmeghatározás szintaxisát az eljárás vagy a funkció által visszaküldött érték eléréséhez. Útmutató létrehozása a minta kérésére.

    A munka célja és rendszere. Összetétel és telepítés. HTTP csomag-eljárások specifikáció.

    Az eljárások és funkciók olyan zárt programegységekként definiálhatók, amelyek bizonyos algoritmust hajtanak végre. Tény, hogy az eljárás vagy a funkció szinte program.

    Automatizált TCP / IP beállítás, dinamikus konfigurációs konfiguráció a BOOTP használatával. IP-címek a kérések / válaszok, veszteségek és üzenetformátum, fázisok fázisa. DHCP protokoll a WWP protokoll bővítésével. IP-címek eloszlása \u200b\u200bés hozzárendelése.

    A rekurzió fogalmával már találkoztunk: az ismétlődő arányok meglehetősen gyakoriak a matematikai kifejezésekben. A meghatározás szerinti rekurzió az, hogy a definiálható koncepciót önmagában határozzák meg.

    1. BEVEZETÉS 2 2. A COM technológia áttekintése 2 2.1. A COM Object 3 2.2 összetétele 2.2. Interfészek 4 2.3. A COM objektumok tulajdonságai 6 2.4. COM szerverek 6 2.5. Marshalling mechanizmus 7.

    A lényeg, a működés elvének és a távoli adatbázisok fő céljának tanulmányozása. Modell távirányító Adatok (fájlkiszolgáló modell). A párhuzamosság típusai. A trigger egy olyan mechanizmus, amely az adatbázisállapothoz kapcsolódó különleges események nyomon követésére szolgál.

    Csomagok Metamodel, Tény és biztonság modellek. Az ügyfél fogalmi modellje. Példa az elosztott architektúra működésére. A végrehajtás teljessége.

    A dll koncepciója. Emlékezzünk a DOS programozási folyamatra. Konvertáló forrás szöveg a gépkódban 2 folyamat: összeállítás és összekapcsolás. A programkód összekötése során nem csak a funkciók és eljárások hirdetései kerültek el, hanem teljes körű kódexükre is.

    A TCP / IP, az aljzat, a kötés, a hallgatás és az elfogadás funkciói. Fájlleíró. Kommunikációs folyamatok. Adatok fogadása. Olvasás az aljzatból. Írjon az aljzatba. Záró aljzat. A program szövege webkiszolgálót hoz létre operációs rendszer QNX.

    Internet hozzáférés hálózati hozzáférés elektronikus üzeneteka szerveren tárolva. Programleírás, egyszerű, apop és hitelesítési hitelesítés. Végrehajtási funkciók, felhasználói kézikönyv, program működési algoritmusok, grafikus felület.

    A TURBO-PASKAL programozási nyelv fő üzemeltetőinek működésének elvét: a hozzárendelési szolgáltató, az esetválasztás, a feltétel nélküli átmenet, a ciklus, a fogás, a kompozit. Formális leírás és hívás funkció és eljárások. A tényleges paraméterek listájára vonatkozó követelmények.

    A Java Servlets működésének és céljának elve, azok fontossága a webkiszolgálók funkcionalitásának javításában és a programozásuk, előnyök és hátrányok javítása érdekében. Módja a böngészőből és oldalakból származó szervletek hívásának módja. Felvételi és olvasási munkamenet-attribútumok.

    Windows NT architektúra. Az operációs rendszer szerkezete a mikrorolitok alapján. Windows NT Secure Subsystems.

    Alapvető primitívek az üzenetküldés elosztott rendszerekben. Kezelési módszerek. Blokkoló és nem blokkoló primitívek. Pufferizálható és nem pufferolt primitívek.

    Alkalmazások szerver. Ügyfélrész.

    Két évvel ezelőtt Ajax volt a csoda (és az Ajax szó, majd nem találta fel). Most webes alkalmazások, amelyek oldalait frissítették a repülés során, a dolgok sorrendjében. Még ellenkezőleg is: Ajax nélkül nehéz elképzelni néhány szolgáltatást.

    Szintaxis leírása és hívási eljárás. Paraméterek. Példa leírás és hívás eljárás. Paraméterek típusai. Program.