29.09.2013 Views

Vereenvoudiging van gedistribueerde Applicatie ... - Aske Plaat

Vereenvoudiging van gedistribueerde Applicatie ... - Aske Plaat

Vereenvoudiging van gedistribueerde Applicatie ... - Aske Plaat

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong><br />

Integratie<strong>van</strong>SunRPCenC <strong>Applicatie</strong>ontwikkeling<br />

Doctoraalscriptie<strong>van</strong><strong>Aske</strong><strong>Plaat</strong> 24juni1992<br />

ansiC<br />

prp?<br />

rpcgen ?<br />

Studienummer53697 FaculteitderEconomischeWetenschappen ErasmusUniversiteitRotterdam Ir.J.<strong>van</strong>denBerg<br />

VakgroepInformatica Docent:


Inhoud<br />

1Inleiding 1.2Probleemstelling::::::::::::::::::::::::: 1.1Achtergrond:::::::::::::::::::::::::::: 6<br />

1.5Wijze<strong>van</strong>aanpak::::::::::::::::::::::::: 1.4Legitimering:::::::::::::::::::::::::::: 1.3Doelstelling:::::::::::::::::::::::::::: 8<br />

7<br />

2Gedistribueerdheid 2.1Ontstaansgeschiedenis::::::::::::::::::::::10 1.6Opbouwscriptie::::::::::::::::::::::::: 109<br />

2.1.4Redenen<strong>gedistribueerde</strong>applicaties::::::::::13 2.1.3Gedistribueerd::::::::::::::::::::::13 2.1.2Gedecentraliseerd:::::::::::::::::::::12 2.1.1Gecentraliseerd::::::::::::::::::::::10<br />

2.3Gedistribueerdecomputersystemen:::::::::::::::21 2.2Begrippenkader::::::::::::::::::::::::::16<br />

2.3.1Typologiehardware:::::::::::::::::::21 2.2.2Gerelateerdetermen:::::::::::::::::::18 2.2.1Virtuelemachines::::::::::::::::::::16<br />

2.3.4Beheersen<strong>van</strong>complexiteit:::::::::::::::28 2.3.2Fysiek/logisch::::::::::::::::::::::23 2.3.5Transparantie:::::::::::::::::::::::31 2.3.3Operatingsystem:::::::::::::::::::::24<br />

3<strong>Applicatie</strong>ontwikkeling 3.1Soortentoepassingen:::::::::::::::::::::::34 3.1.2Fouttolerantie:::::::::::::::::::::::36 3.1.1Parallellisme:::::::::::::::::::::::35 34<br />

3.2Programmeertaal:::::::::::::::::::::::::36<br />

3.3Beoordelingscriteria:::::::::::::::::::::::38 3.2.3Gedistribueerdetaal:::::::::::::::::::37 3.2.2Uitgebreidesequentieletaal:::::::::::::::37 3.2.1Standaardsequentieletaal::::::::::::::::36<br />

3.3.2Interproces-communicatie(2)::::::::::::::42 3.3.3Fouttolerantie(3):::::::::::::::::::::49 3.3.1Parallellisme(1):::::::::::::::::::::38<br />

1


Inhoud<br />

3.4RemoteProcedureCall:::::::::::::::::::::56 3.3.4Integratie(4):::::::::::::::::::::::52 3.3.5Beschrijvingaspectenomgeving:::::::::::::52<br />

3.4.3Structuur<strong>van</strong>eenimplementatie::::::::::::71 3.4.2Speciekerpccriteria::::::::::::::::::59 3.4.1Algemenekenmerken:::::::::::::::::::56<br />

4BeoordelingSunomgeving 3.4.5Nadelen<strong>van</strong>hetrpcmodel:::::::::::::::75 3.4.4Client/server:::::::::::::::::::::::73<br />

4.1Beschrijving::::::::::::::::::::::::::::78 4.1.1Gedistribueerdsysteem:::::::::::::::::78 4.1.2<strong>Applicatie</strong>ontwikkeling::::::::::::::::::79 78<br />

4.2Beoordelingontwikkelomgeving:::::::::::::::::83 4.2.3Samenvatting:::::::::::::::::::::::92 4.2.2rpc::::::::::::::::::::::::::::87 4.2.1Gedistribueerdheid::::::::::::::::::::84<br />

5Verbeteringen 5.1ProblemenSun::::::::::::::::::::::::::95 5.1.1rpcgen-stubs:::::::::::::::::::::::96 5.1.2<strong>Plaat</strong>sbepaling<strong>van</strong>prp:::::::::::::::::97 95<br />

5.2Opbouw<strong>van</strong>prp:::::::::::::::::::::::::99 5.1.3Outputles::::::::::::::::::::::::98<br />

5.3Ontwerpproblemen::::::::::::::::::::::::104 5.2.1Systeemontwerpprp:::::::::::::::::::99<br />

5.3.1Beperkingentaal:::::::::::::::::::::105 5.2.3Structuurprp::::::::::::::::::::::102 5.2.2Functiesprp-laag::::::::::::::::::::101<br />

5.4Detailsprp::::::::::::::::::::::::::::110 5.4.1Analyseprototypes::::::::::::::::::::110 5.3.3Nieuwetaalelementen::::::::::::::::::109 5.3.2Ontwerpkeuzes::::::::::::::::::::::107<br />

6BeoordelingPRP 5.4.2Parameteroverdracht:::::::::::::::::::111<br />

6.1Kritiek:::::::::::::::::::::::::::::::114 5.4.3rpcgendatatypes::::::::::::::::::::111<br />

6.2Beoordelingmodel::::::::::::::::::::::::116 6.2.1Gedistribueerdheid::::::::::::::::::::116 114<br />

6.3Implementatieprototype:::::::::::::::::::::122 6.3.1Ervaringen::::::::::::::::::::::::123 6.2.2rpc::::::::::::::::::::::::::::118<br />

6.3.2Uitbreidingprp-prototype::::::::::::::::125 6.2.3Samenvatting:::::::::::::::::::::::122<br />

7Bevindingen 2 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling<br />

129


8Samenvatting Inhoud<br />

AHandleidingprototype A.1Eenvoorbeeld:::::::::::::::::::::::::::138 138 134<br />

A.1.3prp(2)::::::::::::::::::::::::::139 A.1.4rpcgenendeCcompiler(3&4):::::::::::141 A.1.2Deapplicatie(1):::::::::::::::::::::139 A.1.1Decompileergang:::::::::::::::::::::138<br />

A.2Cextensies::::::::::::::::::::::::::::143 A.1.5Opstarten<strong>van</strong>demodules(5)::::::::::::::142<br />

A.3Werkingstubs:::::::::::::::::::::::::::146 A.2.1Verschilprp-CenansiC::::::::::::::::143<br />

A.4Problemen:::::::::::::::::::::::::::::152 A.3.1Schema'sprp-stubs:::::::::::::::::::147 A.2.2Parametertypen:::::::::::::::::::::144<br />

A.4.3Afsluiting:::::::::::::::::::::::::155 A.4.2Tekortkomingen<strong>van</strong>hetprp-prototype::::::::154 A.4.1Cineen<strong>gedistribueerde</strong>omgeving:::::::::::152<br />

CVoorbeeldprogrammaPRP BVoorbeeldprogrammaRPCGEN C.1prp-applicatiecode::::::::::::::::::::::::167 166 157<br />

Literatuur C.2prp-output::::::::::::::::::::::::::::171 183<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 3


Lijst<strong>van</strong> guren<br />

2.1Lagenmodel[Tanenbaum1]:::::::::::::::::::16 2.2<strong>Applicatie</strong>-versussysteemsoftware[VanRenesse]:::::::19 2.3Programma's,modulesenprocedures::::::::::::::20<br />

3.1<strong>Plaat</strong>s<strong>van</strong>rpc::::::::::::::::::::::::::56 2.4Welofnietgedistribueerd[Coulouris]::::::::::::::22 2.5Complexiteitensemantiek<strong>van</strong>primitieven::::::::::30 3.2Side-eects::::::::::::::::::::::::::::63<br />

4.2rpcgenles:::::::::::::::::::::::::::82 4.1Sunrpcomgeving::::::::::::::::::::::::80 3.3Stubs[Birrell]:::::::::::::::::::::::::::72<br />

5.2prples::::::::::::::::::::::::::::::100 5.4Structuur<strong>van</strong>hetprpprogramma:::::::::::::::103 5.3Inputenoutput<strong>van</strong>prp:::::::::::::::::::::101 5.1prpinderpcomgeving:::::::::::::::::::::98<br />

C.1prples::::::::::::::::::::::::::::::166<br />

4


Voorwoord<br />

gegevenwerkcollege`Netwerken'hebbenzijeengedistribueerdprogramma team'(zie[Chin]indeliteratuurlijst).VoorhetdoorJan<strong>van</strong>denBerg geschrevenvoordeSunomgeving.Zijhebbendebetekenis<strong>van</strong>`matige Hetonderwerp<strong>van</strong>dezescriptieisvoortgekomenuithetwerk<strong>van</strong>het`Net-<br />

transparantie'zeerconcreetmoetenervaren.Metnamededoorrpcgen gegenereerdestubsblekeningewikkeldomtegebruiken,enaanleidingte geventotveelfrustratiesbijhetdebuggen. Ikwilhenhierbedankenvoorhundoorzettingsvermogenenvoorhetmet mijdelen<strong>van</strong>hunervaringen. Hunervaringenvormdendeaanzetvoorhetonderwerp<strong>van</strong>dezescriptie.<br />

heletrajectheefthijsteedskritischdevorderingengevolgd.Bijdekeuze <strong>van</strong>hetonderwerp,hetbespreken<strong>van</strong>hetprogramma,enmetnamebij hettheoretischgedeelteheefthij,metdehemeigenpositieveinstelling,de Jan<strong>van</strong>denBergwasdebegeleider<strong>van</strong>ditonderzoek.Tijdenshet<br />

telkenshetbelang<strong>van</strong>preciezeformuleringenenduidelijkeonderbouwingen ontwikkeling<strong>van</strong>hetwerknauwgezetenmetinteressebegeleid.Hijheeft<br />

plaatshartelijkbedanken. draad,envooralvoorzijnpositieve,kritischeinstellingwilikhemopdeze <strong>van</strong>uitsprakenbenadrukt. Voorzijninzicht,kennis<strong>van</strong>details,hetinhetooghouden<strong>van</strong>derode<br />

mantiek<strong>van</strong>C.Hiervoor|envoorzijnenthousiasme|wilhetgebied<strong>van</strong>parallellisme,operatingsystemsendese- enkleineverbeteringenindetekstgezorgd,metnameop DoorzijncommentaarheeftAriedeBruinvoorgrote<br />

ikhemgraagbedanken. m<br />

opmerkingen,enhetonweerlegbarelogischinzichtnevenstaandeguurgraagbedanken. Entenslottewilikvooralleliefde,steun,slimmee<br />

aa be<br />

<strong>Aske</strong><strong>Plaat</strong> 24juni1992.<br />

3051RKRotterdam email:plaat@theory.lcs.mit.edu Willem<strong>van</strong>Hillegaersbergstraat34<br />

5


Hoofdstuk1<br />

Inleiding<br />

Indezescriptiewordtonderzochthoehetschrijven<strong>van</strong>toepassingsprogramma'svoor<strong>gedistribueerde</strong>systemenzogoedmogelijkondersteundkan deverbetering<strong>van</strong>eenaantalzwakkepunteniseenprogrammageschreven gramma's.VervolgensisdeSunomgevingopdezecriteriabeoordeeld.Voor worden.Hiervooriseenliteratuurstudieverrichtnaardeeisendiemen<br />

datbeoogthetschrijven<strong>van</strong><strong>gedistribueerde</strong>programma'stevereenvoudikanstellenaaneenapplicatieontwikkelomgevingvoor<strong>gedistribueerde</strong>progen.Indithoofdstukwordtdestructuur<strong>van</strong>descriptiebesproken.naar<strong>gedistribueerde</strong>computersystemen.Ditzijnsystemendiezijnopge- 1.1 Sindsdeopkomst<strong>van</strong>computernetwerkenwordterveelonderzoekgedaan Achtergrond<br />

bouwduitmeerdereprocessorenmetgescheidengeheugendiedoormiddeldelenoverdebeschikbareprocessoren.Doorprogramma'sopverschillendesystemsen-talenishetmogelijkdetotalewerklast<strong>van</strong>eensysteemtever-<br />

soortsystemenvaaktoegepast.Metbehulp<strong>van</strong><strong>gedistribueerde</strong>operating <strong>van</strong>eennetwerkzijnverbonden.Declient/server-architectuurwordtbijdit<br />

eengroteverwerkingskracht[Bal]. processorenmetlokaalgeheugenuittevoerenheefthetsysteemalsgeheel<br />

tieprogramma'skunnensnelleren/ofbetrouwbaarderwordendoorzegetrouwbaarheidovermeerdereprocessorenverdeeldworden.Voorbeeldenhier<strong>van</strong>,zoalsleservers,zijnin[Coulouris]beschreven.OokveelapplicaSommigesysteemprogramma'skunnenomredenen<strong>van</strong>snelheidenbekelgereedschappenontwikkeldworden.Dezegereedschappenoftoolszijnarchitecturen.Terondersteuninghier<strong>van</strong>moetenadequatesysteemontwik- wordengesteldomhunprogramma'sgeschikttemakenvoor<strong>gedistribueerde</strong> distribueerduittevoeren.Hiertoemoetenapplicatieontwikkelaarsinstaat<br />

hetonderwerp<strong>van</strong>dezescriptie. applicatiesvoor<strong>gedistribueerde</strong>computersystemeninhetalge- Hetonderwerp<strong>van</strong>dezescriptieishoemendeontwikkeling<strong>van</strong> 6


Probleemstelling meenendeSunomgevinginhetbijzonderadequaatkanonder- 1.3<br />

1.2steunen. gewikkelderdanvoorsequentieleomgevingen(ziex1.4).SunbiedtdeappliHetschrijven<strong>van</strong>programma'sisvoor<strong>gedistribueerde</strong>omgevingenveelin- Probleemstelling<br />

Indezescriptiewordensterkeenzwakkepunten<strong>van</strong>dezehulpmiddelen catieprogrammeurhulpmiddelenomhetontwikkelprocestevereenvoudigen.<br />

probleemstelling gedenticeerd,enerwordeneenaantalverbeteringenvoorgesteld.<br />

Deprobleemstellingluidtalsvolgt: Aanwelkecriteriamoeteengoedeontwikkelomgevingvoor<strong>gedistribueerde</strong>applicatiesvoldoen?voudigdworden?OpwelkewijzekanhetprogrammerenvoordeSunomgevingvereen- InhoeverrevoldoetdeSunontwikkelomgevingaandezecriteria?<br />

Decriteriawordeninhoofdstuk3besproken.Destructuur<strong>van</strong>deSun ontwikkelomgevingwordtinx4.1behandeld.Opbasis<strong>van</strong>debeoordeling <strong>van</strong>x4.2bestaatdewensomdeSunontwikkelomgevingteverbeteren.<br />

antwoordopdelaatstevraag<strong>van</strong>deprobleemstellingtevinden. decriteriauitx3.3enx3.4.2.Indathoofdstuk,eninhoofdstuk7,ishet hoofdstuk6vindtdebeoordeling<strong>van</strong>deverbeteringenplaatsopbasis<strong>van</strong> Hoofdstuk5beschrijftdeverbeteringen,endeimplementatieer<strong>van</strong>.In<br />

men.Hetdoel<strong>van</strong>dezescriptieistweeledig:teneerstehetkunnenbeoor 1.3 Dezescriptieonderzoektapplicatieontwikkelingvoor<strong>gedistribueerde</strong>syste- Doelstelling<br />

Omtekunnenbeoordelenofditdoelbereiktwordt,wordteenlijstcriteten<strong>van</strong>)deSunomgeving.Hetdoel<strong>van</strong>applicatieontwikkelomgevingenis hetschrijven<strong>van</strong>toepassingsprogramma'szoeenvoudigmogelijktemaken. delen<strong>van</strong>ontwikkelomgevingen,ententweedehetverbeteren<strong>van</strong>(aspec<br />

doelomschrijvingvoordeverbeteringer<strong>van</strong>naarvoren. riaaangelegd.Vervolgenswordteenconcreteomgevingbekeken:deSun<br />

callzoveelmogelijkopdie<strong>van</strong>eenlokaleprocedureaanroeplatenlijken. omgeving.Uitdebeoordeling<strong>van</strong>dezeomgevingkomteengedetailleerde<br />

DitisindeSunomgevingdesyntax<strong>van</strong>detaalC.Hetdoelwordtaldus: Dezeomschrijvingis:desyntaxensemantiek<strong>van</strong>eenremoteprocedure<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling Steleenlijstcriteriaopvoordebeoordeling<strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkelomgevingen. 7


1.5BeoordeeldeSunomgeving;steleenlijstmetsterkeenzwakkepunten Inleiding<br />

op. OnderzoekhoedeSunomgevingveranderdzoukunnenwordenzodat<br />

komenwordteenkadervoordebeoordeling<strong>van</strong>applicatieontwikkelomge- Omtotdezegedetailleerdebeschrijving<strong>van</strong>degewensteverbeteringente standaardCprogramma'salsinputgeaccepteerdworden.<br />

1.4 vingenaangelegd.Ditgebeurtinhoofdstuk2en3.Nadathetonderzoekophetgebied<strong>van</strong><strong>gedistribueerde</strong>systemenzichvoornamelijkopoperatingsystemsgerichtheeftkomtersteedsmeeraandacht<br />

Legitimering<br />

[Bal].Hetdoel<strong>van</strong>ditonderzoekishetvereenvoudigen<strong>van</strong>applicatie- voordeondersteuning<strong>van</strong>deontwikkeling<strong>van</strong><strong>gedistribueerde</strong>applicaties ontwikkelingvooreengedistribueerdcomputersysteem.Erwordencriteriadigen.Naaraanleiding<strong>van</strong>debeoordeling<strong>van</strong>dezeveelgebruikteomgevingwordtgeprobeerdhetschrijven<strong>van</strong>toepassingsprogramma'stevereenvouaangelegdvoordebeoordeling<strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkelom-<br />

wordenmogelijkeverbeteringenvoorgesteldenonderzocht.Birrell&Nelson gevingeninhetalgemeen,envooreenspeciekvoorbeeld,deSunomgeving,<br />

schrijvenin[Birrell,p.41]:<br />

gramswasadiculttask,undertakenonlybymembersofasebutedcomputationeasy.Previously,itwasobservedwithinourresearchcommunitythattheconstructionofcommunicatingproTheprimarypurposeofourRPCprojectwastomakedistrilectgroupofcommunicationexperts.[...]Ourhopeisthatbyprovidingcommunicationwithalmostasmucheaseaslocalpro- Gezienhetveleonderzoeknaar<strong>gedistribueerde</strong>systemenendeverspreiding withdistributedapplications. cedurecalls,peoplewillbeencouragedtobuildandexperiment<br />

1.5 <strong>van</strong><strong>gedistribueerde</strong>programma'sdemoeitewaard. <strong>van</strong>dezesystemenis,onderzoeknaarhetvereenvoudigen<strong>van</strong>hetschrijven<br />

lingvooreengedistribueerdcomputersysteem.Debasis<strong>van</strong>ditonderzoekHetdoel<strong>van</strong>hetonderzoekishetvereenvoudigen<strong>van</strong>applicatieontwikke- Wijze<strong>van</strong>aanpak<br />

wordtgevormddoorbestudering<strong>van</strong>literatuuroversysteemontwikkeling,<br />

bruikbaarmodelwordenteruggebracht.Ditwordtinx2.2.1enx2.3.4 operatingsystemsen<strong>gedistribueerde</strong>systemen.Een<strong>van</strong>debelangrijkste conceptendiehiernaarvorenisgekomenis`abstractie'.Doorabstractie toegelicht. kandeingewikkeldheid(complexiteit)<strong>van</strong><strong>gedistribueerde</strong>systementoteen<br />

8 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Opbouwscriptie Nadebestudering<strong>van</strong>detheorieishetonderzoeksobject,deSunomge- 1.6<br />

ving,bestudeerd.Opbasis<strong>van</strong>eenlijstcriteriauitdeliteratuurzijnsterkeenzwakkepunten<strong>van</strong>hetonderzoeksobjectgedenticeerd.Hiernazijnver- hetverhogen<strong>van</strong>detransparantie|centraalgesteld.Voorhetverbeteren beteringenvoordezwakkeplekken<strong>van</strong>Sun'srpc-omgevingvoorgesteld. <strong>van</strong>detransparantieiseenmodelontworpen,waar<strong>van</strong>eendeelalsprototype isgemplementeerd.Ookhetmodelisopbasis<strong>van</strong>deliteratuurcriteriabe- Indeprobleemstellingwordthetvereenvoudigen<strong>van</strong>deSunomgeving|<br />

1.6 Deonderzoeksbevindingenenaanbevelingenzijninhoofdstuk7beschreven. oordeeld.Deresultaten<strong>van</strong>dezebeoordelingzijninhoofdstuk6beschreven.Hetvolgendehoofdstukbehandelttheorieover<strong>gedistribueerde</strong>computersystemeninhetalgemeen.Allereerstwordtdeevolutiedietot<strong>gedistribueerde</strong><br />

Opbouwscriptie<br />

rantiebij<strong>gedistribueerde</strong>systemen.systemengeleidheeftgeschetst.Hiernawordteenbegrippenkaderbesproken.Daarnawordtingegaanopderelatietussencomplexiteitentranspatieontwikkelomgevingenvoor<strong>gedistribueerde</strong>systemenkanbeoordelen.Hettemen.Indithoofdstukwordencriteriageformuleerdwaarmeemenapplica laatstedeel<strong>van</strong>dithoofdstukgaatoverremoteprocedurecalls|een<strong>van</strong> Hoofdstuk3behandeltapplicatieontwikkelingvoor<strong>gedistribueerde</strong>sysdepijlers<strong>van</strong><strong>gedistribueerde</strong>systemen.rpc'szijndebasis<strong>van</strong>hetonderzoeksobject,deSunomgeving.<br />

besproken. oordelen.PuntendievoorverbeteringinaanmerkingkomenwordenhierDecriteriawordeninhoofdstuk4gebruiktomdeSunomgevingtebetransparantieverhogingzijnindeappendicestweeversies<strong>van</strong>eenvoorbeeldmenteertwordtbeschreveninx6.3enappendixA.Terillustratie<strong>van</strong>dezwakkepunten,hetmodel.Hetprototypedatdezeverbeteringenimple- Hoofdstuk5beschrijfteenvoorstelvoordeverbetering<strong>van</strong>eenaantal<br />

eenvoordeverbeterde.AppendixAgeefteenhandleidingbijhetprototype. programmaopgenomen.EenversievoordeongewijzigdeSunomgeving,en<br />

eensamenvatting.Eenlijstmetdegeraadpleegdeliteratuurcompleteerthet stuk6gebruiktomtekijkeninhoeverrededoelstellingenzijnbereikt. Tenslottevolgendebevindingenenaanbevelingen<strong>van</strong>hetonderzoek,en Decriteria,waarmeedeSunomgevingisbeoordeeld,wordeninhoofd-<br />

geheel.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 9


Hoofdstuk2<br />

Gedistribueerdheid<br />

Hetdoel<strong>van</strong>dithoofdstukiseenkadervoorhetonderwerp<strong>van</strong>dezescriptie 2.1 teschetsen.<br />

Dezeparagraafbehandeltontwikkelingendietothetconcept`gedistribueerdheid'geleidhebben.Aandeenekantisdatdehistorischeontwikkeling Ontstaansgeschiedenis<br />

<strong>van</strong>deverdeling<strong>van</strong>rekencapaciteit.Hierwordtnietgetrachteencomplete geschiedenis<strong>van</strong>deontwikkeling<strong>van</strong>geautomatiseerdesystementegeven. deanderekantwordtinx2.1.4wordtdezeontwikkelingmetverschillende categorieentoepassingen(applicaties)inverbandgebracht. Hetdoelisomeenaantalontwikkelingenuithetverledeninverbandtebrengenmetdehedendaagseproblematiek<strong>van</strong><strong>gedistribueerde</strong>systemen.Aanteem,overdewijzewaaropdeleninhetgeheelsamenhangen.Hetuitgangspunt<strong>van</strong>dehistorischeontwikkelingisdeverdeling<strong>van</strong>rekenkrachtover degebruikers.Destructuurveranderingendieindeloopderjarenhebben Determ`gedistribueerd'zegtietsoverdestructuur<strong>van</strong>eencomputersys-<br />

opgebouwdzijnophetniveau<strong>van</strong>hetoperatingsystemduidelijkzichtbaar. plaatsgevondenindeverschillendelagenwaaruiteencomputersysteemis Inonderstaandetabelishetsoortoperatingsysteminverbandgebrachtmet deverdeling<strong>van</strong>derekenkracht.<br />

singleuser batchverwerking gecentraliseerd Operatingsystemsgedecentraliseerd<br />

Hieronderwordtdezetabeluitgewerkt. multiuser multiprogrammingnos/gedistribueerd pc<br />

rekenkrachtoverdegebruikerszoecientmogelijktelatenplaatsvinden.De Sindsercomputerszijnwordtergezochtnaarmanierenomdeverdeling<strong>van</strong> 2.1.1Gecentraliseerd<br />

10


Ontstaansgeschiedenis durecomputermoetliefsthonderdprocent<strong>van</strong>detijdgebruiktwordenen 2.1.1<br />

derekencapaciteitmoetvoorgebruikerseenvoudigtoegankelijkzijn,zonder toegangsbeperkingenofwachttijden. singleuser<br />

geschreven.Decomputersbestondenuiteenenkelefysiekeprocessormet Rond1955kwamendeeerstecomputersdiemettransistorswerkten.De programma'svoordezecomputerswerdeninassembleertaaloffortran<br />

voordeduur<strong>van</strong>derunhelemaalvoorzichzelfalleen. ponskaartenoftapesalsin-enuitvoermedium.Programma'swerdenin batchesaandecomputeraangeboden.Eenprogrammahaddemachine<br />

nadeelisdatdeprocessorrelatiefinecientgebruiktwerd.BijeenI/O <strong>van</strong>dejobenont<strong>van</strong>gst<strong>van</strong>deuitvoer.Ditkonurenduren.Eenander operatie,bijvoorbeeldeengegevensbestandopeentapeopzoeken,konde Eennadeel<strong>van</strong>batchverwerkingisdelangeperiodetussenaanbieding<br />

processornietsandersdoendanwachten.Hierbijgingzeerkostbaretijd verloren. multiuser Ditlaatsteprobleemwerdrond1965opgelostdoorhetzogenaamdemul-<br />

hetoperatingsystemnamtoe. operatie,koneenanderejobdeprocessorbenutten.Decomplexiteit<strong>van</strong> tiprogramming.Hierbijwerdhetgeheugen<strong>van</strong>decomputerineenaantal partitiesverdeeld.Eenvoorelkejob.WanneereenjobwachtteopeenI/O<br />

multiprogrammingoperatingsystemisos/360. teerd.Menmoestvaakopdeoutputwachten.Eenvoorbeeld<strong>van</strong>eenZo'nmultiprogrammingoperatingsystemwasnogsteedsbatchgeorien- gebruikereenon-lineterminalheeft.Bijtime-sharinghoevenprogramma's opzetten.Time-sharingiseenvariant<strong>van</strong>multiprogrammingwaarbijelke nietineenbatchwachtrijtestaan.Korteopdrachtenkrijgeneensnelleres- Doorderoepomeensnellereresponskwamentime-sharingsystemen<br />

pons.Voorbeelden<strong>van</strong>zulkeoperatingsystemszijnvax/vmsenunix.<br />

anderegebruikersmagmerken.Hetoperatingsystemmoetdegebruikereen stractiedatmendecomputervoorzichalleenheeft.Eenontwerpdoelbij dezesystemenisdatdegebruikerszominmogelijk<strong>van</strong>deaanwezigheid<strong>van</strong> Time-sharingenmultiprogrammingsystemenbiedendegebruikerdeab-<br />

alsergebruikerszijn[DeBruin]. isomdeonderliggendecomputertereplicereninevenzovelevirtuele360's `VirtueleMachine':ibm'svm/360.Deenigetaak<strong>van</strong>ditoperatingsystem virtuelemachineaanbieden.Eenzo'ntime-sharingoperatingsystemheet<br />

kernel|zijnontworpenalseenproces(eenzogenaamdemonolitischemonitor),zoalsbijunix,neemthetrelatiefveelgeheugeninbeslag.Indejarenmingsystemen.Wanneerdeinternetaken<strong>van</strong>hetoperatingsystem|deTime-sharingoperatingsystemszijningewikkelderdanmultiprogram- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling zeventigwaszo'nontwerpgebruikelijk.Doorhettoevoegen<strong>van</strong>functionali- 11


2.1.2 teitishetoperatingsystemindeloopdertijdsteedsom<strong>van</strong>grijkerworden. Gedistribueerdheid<br />

Doordeom<strong>van</strong>gwerdhetmoeilijkomonderalleomstandighedeneensnelle responstegaranderen.Zo'nmonolitischemonitorisdaarominhetalgemeen nietgeschiktvoorreal-timegebruik(procesbesturing).<br />

ken,geheugentoewijzing,I/Oenbestandsbeheerwordenalsapartgebruischeduling(eneventueelvirtueelgeheugenbeheer)verricht.Deandereta- operatingsystems.Dezezijnopgebouwduiteenkleinekerndiealleende Eenreactieopdemonolitischemonitorzijndezogenaamdemicro-kernel<br />

kersprocesbehandeld.Metzo'nontwerpwordencomplexiteitengeheugen gewoneprocedureaanroepenalsbijmonolitischemonitorsnietmogelijk. Eenmogelijkeoplossingismessage-passing.Micro-kerneloperatingsystems schillendedelen<strong>van</strong>hetoperatingsysteminaparteprocessendraaienzijnbeslag<strong>van</strong>kernelenoperatingsystemteruggedrongen.DoordatdevertemszijnMach[Coulouris]enminix[Tanenbaum2].[DeBruin].Voorbeelden<strong>van</strong>micro-kernelmessage-passingoperatingsys- tussenvragersenaanbieders<strong>van</strong>anderetaken<strong>van</strong>hetoperatingsystem werkenvaakviahetclient/servermodel:dekleinekernelregeltverzoeken<br />

Batch,multiprogrammingentime-sharingsystemengaanuit<strong>van</strong>eenpro- 2.1.2Gedecentraliseerd<br />

centraalopgesteld.Inhetbegin<strong>van</strong>dejarenzestigwerden,naastmultiprocessordiezijnrekenkrachtaangebruikersaanbiedt.Derekenkrachtstaatgramming,minicomputersontwikkeld.Deafdelingenwerdenzovoorhun rekenkrachtminderafhankelijk<strong>van</strong>eencentraalrekencentrum. singleuser Doordesteedsverdergaandeminiaturisering<strong>van</strong>elektronischecomponenterwaszogoedkoopdatmeneencomputervooreenenkelpersoonkondendeeerstemicrocomputersontwikkeld.Demicro-ofpersonalcompu aanschaen.Metnamedezogenaamdewerkstations|krachtigepersonal tenwerdencomputerssteedskleinerquaom<strong>van</strong>genprijs.Rond1980wer<br />

aaneencomputerdieeenvoudigbediendkonworden.Doordeinvoering prijskwamenersteedsmeergebruikers.Dezegebruikershaddenbehoefte computers|biedenveelverwerkingskrachtvooreengebruiker.Doordelage<br />

maaktmetbehulp<strong>van</strong>pictogrammenenmuisbewegingenmetdecompu- (GraphicalUserInterface)iseenprogrammadathetdegebruikermogelijk degebruiksvriendelijkheid<strong>van</strong>computersystementevergroten.Eengui <strong>van</strong>graschegebruikersinterfacesmetwindowsenmuizenprobeertmen<br />

tertecommuniceren.Ditprogrammaschermtdegebruikeraf<strong>van</strong>detot dantoegebruikelijkeoperatingsystemgebruikersinterfaceindevorm<strong>van</strong><br />

bedoeldvooreengebruiker.Hetoperatingsystemkanintegenstellingtot vergensnellebeeldschermenenveelverwerkingskracht<strong>van</strong>deprocessor. tekstcommando's.Eenguiiseenschilomhetoperatingsystemheen.gui's<br />

multiprogrammingoftime-sharingsystemeneenvoudiggehoudenworden. Personalcomputers(pc's)biedendecentraleverwerkingskracht.Zezijn<br />

12 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Ontstaansgeschiedenis Eenvoorbeeld<strong>van</strong>eensimpelsingleuseroperatingsystemisms-dos. 2.1.4<br />

multiuser<br />

opgebouwdrondeenofmeerleservers.Dezeleserverregelthetnetwerkdenzevaakineenlan(LocalAreaNetwork)gekoppeld.Zo'nlanisvaak<strong>van</strong>bestandenenrandapparatuuralslaserprintersmogelijktemakenwor- Inveelorganisatieszijnpc'stotdewerkplekdoorgedrongen.Omhetdelen<br />

verkeerenbevatgemeenschappelijkebestanden.Hetoperatingsystem<strong>van</strong>zo'nleservermoetzakenalstoegangscontrole,bestandsbeheerenprinterbeheerregelen.Doordathetmetmeerderegebruikerstemakenheeftmoetditnetworkoperatingsystem(nos)metmulti-userzakenalsrecord-enlelockingrekeninghouden.Eenvoorbeeld<strong>van</strong>eennetworkoperatingsystemputersystementecombineren.Degebruikerblijftdebaasoverdeeigenpc1 isNovellNetware. enkantoch<strong>van</strong>defaciliteiten<strong>van</strong>eengrotergeheelproteren. Meteenlanprobeertmendevoordelen<strong>van</strong>centraleendecentralecomgleuseroperatingsystemsmogelijk.Bijeennosblijvendedelen<strong>van</strong>het<br />

systeemalslossecomponentenzichtbaar.Eengroteremate<strong>van</strong>integratie 2.1.3Gedistribueerd Netwerkoperatingsystemsmakensamenwerkingtussenafzonderlijkesin-<br />

operatingsystemdaarentegenlijktvoorzijngebruikersopeentraditioneel wordtmet<strong>gedistribueerde</strong>operatingsystemsnagestreefd[Fortier].Bijbeide bestaatdehardwareuitcomputersdieineenlanverbondenzijn.Bijnos gecentraliseerd-een-processor-time-sharingsysteem.Eengedistribueerdoperatingsystembiedtdegebruikerdeabstractie<strong>van</strong>eenenkelvoudigemachine. weetdegebruikerdaterverschillendecomputerszijn.Eengedistribueerd<br />

bevindenbehorentransparanttezijnvoordegebruiker. Detailsalswelkeprocessoreenprogrammauitvoertenwaarbestandenzich<br />

ontwerpersisdegrotecomplexiteit<strong>van</strong>er<strong>van</strong>.Gedistribueerdeoperating <strong>van</strong>parallellismeenfouttolerantie(x2.1.4enx2.3.3).Eennadeelvoor systemszijningewikkelderdanandereoperatingsystems.Voorbeelden<strong>van</strong> Hetvoordeel<strong>van</strong><strong>gedistribueerde</strong>operatingsystemsisdemogelijkheid<br />

operatingsystemsdieinmeerofminderematehetpredikaat`gedistribueerd'<br />

unixkernel[Coulouris]. zijnbeidemicro-kerneloperatingsystems.DeMachkernelemuleerteen beheeruitbreidingen<strong>van</strong>eenmonolitischeunixkernel.MachenAmoebaverdienenzijnSun'snfs,MachenAmoeba.Sunnfsbestaatuitbestands- 2.1.4Redenen<strong>gedistribueerde</strong>applicaties computersystemen,ennietopuniprocessors,zouwillenimplementeren.In Erzijnverschillenderedenenwaarommenapplicatiesop<strong>gedistribueerde</strong> volgtonderwoordengebracht:"Thenicestthingaboutworkstationsisthattheydon't runfasteratnight." 1Hetfeitdatmendeprocessornietmetanderenhoefttedelenisin[Coulouris]als<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 13


2.1.4 [Bal]wordendevolgendeviergenoemd. Gedistribueerdheid<br />

3.Demogelijkheidbepaaldedelen<strong>van</strong>hetsysteemtegebruikenomspe- 2.Toegenomenbetrouwbaarheidenbeschikbaarheid. 1.Eenkorteredoorlooptijdvooreenenkeleberekening.<br />

4.Demogelijkheidinherentegedistribueerdheid<strong>van</strong>eenapplicatietebeciekefunctionaliteitecientaantekunnenbieden. Deredenenwordenhierondereenvooreentoegelicht. nutten.<br />

snelheidswinstdoorparallelleuitvoering(1) Snelheidswinstdoorparallellismeiseenveelvoorkomenderedenomappli<strong>van</strong>eenprogrammategelijkuittevoerenopverschillendeprocessorenzulcatiesopeengedistribueerdsysteemuittevoeren.Doorverschillendedelenzijnnaargroteaantallen(duizenden)processoren.Gedistribueerdesyste- principenetzogoedopshared-memorymultiprocessorswordenuitgevoerd. Eenprobleem<strong>van</strong>shared-memorysystemenisdatzemoeilijkteschalen lensommigeprogramma'ssnellerklaarzijn.Ditsoortapplicatieskunneninmenzijnbeterschaalbaar,alisdecommunicatieviashared-memorysneller(grain)<strong>van</strong>hunparallellisme.Dezekorrelgrootteisdelengte<strong>van</strong>dereken-<br />

danviaeennetwerk.<br />

programma'sbrengenhetgrootstegedeelte<strong>van</strong>huntijddoormetrekenen tijdvoordaterweergecommuniceerdmoetworden.Large-grainparallelle Parallelleapplicatieskunnengeclassiceerdwordennaardekorrelgrootte<br />

encommunicerenweinig;ne-grainparallelleprogramma'scommuniceren fouttoleranteapplicaties(2) vaker;medium-grainzitertussenin(zieookx2.3.1).<br />

uniprocessorwellichtnietbetrouwbaargenoeg.Vanwegedepartialfailure eenolieranaderij,eenvliegtuig,ofdeadministratie<strong>van</strong>eenbank|iseen nisatie|zogenaamde`missioncriticalapplications'zoalsdebesturing<strong>van</strong>Voorapplicatiesdieessentieelzijnvoordebedrijfsvoering<strong>van</strong>eenorga- <strong>van</strong>deapplicatieopmeerdereprocessorenteduplicerenkunnen,wanneer processordeandereprocessorenwerken.Doornuproceduresengegevens der.Omdatdefysiekeprocessorenautonoomzijnblijvenbijeenfoutineeneigenschapzijn<strong>gedistribueerde</strong>computersystemenpotentieelbetrouwbaarintegriteitwaarborgen.eenprocessorstopt,anderedoorgaanmethetprogramma,ofdegegevenseenapplicatieuitvallen<strong>van</strong>delen<strong>van</strong>hetsysteemoverleven.Echter,doordatzenietgeograschverspreidkunnenwordenopgesteldzoalsgedistribumorymultiprocessorskunnenimplementeren.OokopdezesystemenkanMenzousommigefouttoleranteapplicatieswellichtookopshared-meeerdesystemen,zijnzenietinstaatrampenalsbrandenaardbevingente 14 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Ontstaansgeschiedenis doorstaan.Vooreenbedrijfszekerebankapplicatiezoueenloosely-coupled 2.2.1<br />

kenombetrouwbaarheidenbeschikbaarheidtevergroten.Inx3.3.3wordt hierdieperopingegaan. distributedsystemeenverstandigekeuzezijn. Hetonderzoekopditgebiedrichtzichvoornamelijkopsoftwaretechnie-<br />

speciekefunctionaliteit(3)<br />

inzettendiespeciaalopdezeeisenistoegesneden.Inx2.1.3werdreedsover Defunctionaliteitdiecomputersystemenmoetenbiedenkanzeerdiverszijn. Inplaats<strong>van</strong>alleverschillendeeisendooreenalgemeensoortcomputercongui's.Voorhetuitvoeren<strong>van</strong>veelnumeriekeberekeningenkanmeneensu-<br />

leserversgesproken.Personalcomputersofwerkstationszijngeschiktvoor guratietelatenuitvoerenkanmenookvoorverschillendeeisenhardwareeerdeoperatingsystemAmoebadekeuzevoorgespecialiseerdele-,print-,percomputer(numbercruncher)inzetten.Databasemachineszijngeschikt<br />

voorhetecientuitvoeren<strong>van</strong>transacties.<br />

wareals<strong>van</strong>natureuitdeaardderproblematiekvoortsproot.Elkeserviceproces-,terminal-,tijd-,boot-engatewayserversop<strong>gedistribueerde</strong>hardIn[Bal]wordtbeschrevenhoebijdeimplementatie<strong>van</strong>hetgedistribu- elkaarboodschappenviahetnetwerk.Wanneerhetsysteemmetnieuwe functionaliteitwordtuitgebreidkunneneenvoudigwegnieuweprocessoren kaneenofmeergespecialiseerdeprocessorengebruiken.Deserverszenden wordentoegevoegd.<br />

Sommigeapplicatieszijngedistribueerd<strong>van</strong>aard.Hetversturen<strong>van</strong>e-mail inherent<strong>gedistribueerde</strong>applicaties(4) tussendewerkstations<strong>van</strong>gebruikersishiereenvoorbeeld<strong>van</strong>.Deverzabueerdsysteemkunnenopzettenommensenenmachinesopverschillendemelingwerkstationskanalseengedistribueerdsysteembeschouwdworden. plaatsenmetelkaartekunnenlatencommuniceren. Eenorganisatiemetverscheidenelialenenfabriekenzoueengedistri-<br />

lokatiesafspelen. <strong>van</strong>applicatieswaar<strong>van</strong>verschillendedelenzichopgeograschverschillende Toepassingen<strong>van</strong>ElectronicDataInterchange(edi)zijnookvoorbeelden<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 15


2.2.1 2.2 Begrippenkader Gedistribueerdheid<br />

Computersystemenzijncomplexesystemen.Omhetontwerpen<strong>van</strong>com- 2.2.1Virtuelemachines puterenprogrammahanteerbaartehoudenwordtgebruikgemaakt<strong>van</strong>het concept<strong>van</strong>degelaagdemachine.Figuur2.1geefteenmogelijkeindeling <strong>van</strong>eencomputerineenaantallagen. oplossen<strong>van</strong>eendierentiaalvergelijkinginteprogrammeren.Hetlagenmodelbeschrijfteenstapsgewijzevertaling<strong>van</strong>gebruikerstoepassingnaar hardware-niveau.Elkelaagbeschrijfteeninterface<strong>van</strong>eenvirtuelemachine Computerhardwareisongeschiktomhoogniveauproblemenalshet<br />

wordendeproblemendiehetsysteemmoetoplossengespeciceerd. dieeen`taal'accepteert.Hetlaagsteniveaubetreftdehardware,deelektronischeschakelingen<strong>van</strong>decomputer.Indetaal<strong>van</strong>hethoogsteniveau Figuur2.1:Lagenmodel[Tanenbaum1] problem-orientedlang. assemblylanguage operatingsystem<br />

microprogramma machinetaal<br />

level0 level1 level2 level3 level4 level5<br />

Devertalertussendezelagenkanmenbeschouwenalseenvirtuelema- digitalelogica<br />

chinediedetaalimplementeert.Eenvirtuelemachineiseenschijnbare <strong>van</strong>desimpelere,meermachinegeorienteerdetaal<strong>van</strong>zijnvoorgangereen machine.Elkevirtuelemachineheeftzijneigentaal.Hijbiedtopbasis taalaanzijnopvolgeraandiemeermogelijkhedenbiedt,meerprobleem machine.Deechtemachinedoetzichvooralseenandere,aangenamere,<br />

16 georienteerdis[Tanenbaum1,p.5]. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Begrippenkader Eencentraalbegripbijhetontwerp<strong>van</strong><strong>gedistribueerde</strong>systemeniscom- 2.2.1<br />

teitisstructureren.Doorstructurenineenafbeelding<strong>van</strong>dewerkelijkheidsnelheidenbedrijfszekerheid|behoudenblijven.Hetordenen<strong>van</strong>complexiruggebrachtonderdevoorwaardedatdevoordelen<strong>van</strong>gedistribueerdheid|plexiteit|indezin<strong>van</strong>ingewikkeldheid.Decomplexiteitmoetwordentebegrijpen.Decomplexiteitzoalsdebeschouwerdezeervaartwordtverminderd. aantebrengen|dooreenmodeltebouwen|wordthetsysteembeterte<br />

Elkelaagreduceertdecomplexiteit<strong>van</strong>zijnvoorganger. abstractie Hetlagenmodelbeschrijfteenstapsgewijzereductie<strong>van</strong>decomplexiteit.<br />

nandenorpoortentebespreken.Bijhetdenkenovereenprobleemmoet eenvergelijkbaarprobleemop.Hetheeftgeenzinomdeproblematiek<strong>van</strong> hetvinden<strong>van</strong>dekortsteroutelangsdeprovinciehoofdstedenintermen<strong>van</strong> Bijhetredenerenovergedrag<strong>van</strong>computersystemenlevertdecomplexiteit<br />

menzoveelmogelijk<strong>van</strong>bijzakenabstraheren.Menmoetzichopdekern <strong>van</strong>deproblematiekconcentreren.[Watt1]zegthetzo:<br />

ideas. ongeneralideasratherthanonspecicmanifestationsofthese Abstractionisamodeofthoughtbywhichweconcentrate<br />

eenhogerelaagteformulerenabstraheertmen<strong>van</strong>dedetails<strong>van</strong>delagere concept`abstractie'heelgoedbruikbaar. Doorabstractieismeninstaattegeneraliseren.Indeinformaticaishet<br />

machine.Hetiseenvoudigeromhetopvragen<strong>van</strong>eenbanksaldoineensql queryteformulerendanincobol[Date]. Eenvirtuelemachineiseenabstractie.Dooreenprobleemindetaal<strong>van</strong><br />

verwervenomeenvolledigeenondubbelzinnigesysteemspecicatietekun- richtlijnenenproceduresmoetmenvoldoendeinzichtindeproblematiek deessentieleaspecten<strong>van</strong>depraktijksituatie.Doorhetbestuderen<strong>van</strong> Bijsysteemanalyseisabstractiedekunst<strong>van</strong>hetzichconcentrerenop<br />

bruikeruiteindelijkkanabstraheren<strong>van</strong>hoehetprogrammawerktenzich kanconcentrerenopwathetdoet.Abstractieishierhetverschiltussende nenopstellen[DeMarco].interfacebeschrijvingendeimplementatie<strong>van</strong>eenprobleem.EenprogramHetdoel<strong>van</strong>hetschrijven<strong>van</strong>eencomputerprogrammaisdatdegemeertaalbestaatuitconstructiesdieeenabstractiezijn<strong>van</strong>machinetaal.<br />

imperfectie Elkeprocedureoffunctieiseenabstractie.Elkemoduleiseenabstractie. Eenprogrammaiseenhierarchie<strong>van</strong>abstracties[Watt1].<br />

guur2.1moetbijhetredenerenovercomputersystemenconsequentwordenopeenabstractniveauteblijvenredeneren.Gegevenhetmodel<strong>van</strong>- Inverhandelingenovercomputersystemenwordtvaakgetrachtconsequent<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 17


2.2.2 aangegeven<strong>van</strong>welkmodelmenuitgaat.Somsblijktuitdecontextover Gedistribueerdheid<br />

tenoemenvoorkomtmendathetzorgvuldigopgebouwdebegrippenkader vertroebeldraaktdoorverwarringmettermen<strong>van</strong>eenanderelaag. welkelaaghetgaat,vaakookniet.Doorwaarnodighetniveauexpliciet<br />

kunneninhetalgemeendeonderliggendelagennietperfectafschermen. Hierdoorlooptmenhetrisicodatdeverhandelingwordtvertroebelddoor Hierbijkunnenzicheenaantalcomplicatiesvoordoen.Virtuelemachines Vaakredeneertmenophetniveau<strong>van</strong>eenprobleemgeorienteerdetaal.<br />

dehelderheid<strong>van</strong>eenalgoritmebehoorlijkfrustreren. machinenietgoedaf.Overowproblemendiehierhetgevolg<strong>van</strong>zijnkunnen details<strong>van</strong>lagereniveaus.Veelimplementaties<strong>van</strong>probleemgeorienteerde talenbijvoorbeeldschermendewoordbreedte<strong>van</strong>demachinetaal-virtuelegehaald,ofmetaforenuithetdagelijkslevengebruikt.Bepaaldeaspectenbeeldenenmetaforenkunneninhetalgemeenmaareendeel<strong>van</strong>devirtuele<strong>van</strong>eenvirtuelemachinekunnenzoaanschouwelijkgemaaktworden.VoorTerverduidelijking<strong>van</strong>eenverhandelingwordenvaakvoorbeeldenaan-<br />

machinebeschrijven.Hetkangebeurendaterhierdooronbedoeldverkeerde tersystemenredeneren.Computerszijnopgebouwduitvirtuelemachines. Eenvirtuelemachineiseenabstractie.Bijhetredenerenoplogischniveau implicatiesindeverhandelingsluipen[Leipoldt].<br />

moetmenzichsteedsrealiserendatmengebruikmaakt<strong>van</strong>eenabstractie Doorgebruiktemaken<strong>van</strong>abstractieskanmenovercomplexecompu-<br />

gebruikenomgedragtebeschrijven.Hiervoormoetmenhetgedrag<strong>van</strong>een <strong>van</strong>dewerkelijkheid.Eenvirtuelemachineisinwerkelijkheidvaakimperfect.Omfoutenofafwijkingentevoorkomenkanmenformelemethoden systeemexactkunnenbeschrijven.Somsisdekennisoverhetexactegedrag nietaanwezigofzijndegebruiktemethodenniettoereikend.<br />

vastgesteld[VanKatwijk,Mullender1]. algoritmeskanimperfectzijn.Naasteenformeelbewijs<strong>van</strong>dejuistheid<strong>van</strong> eenalgoritmemoetdejuistheid<strong>van</strong>deimplementatiemettestenworden Formelebewijzenzijngeldigvooralgoritmes.Deimplementatie<strong>van</strong>deze<br />

zijninguur2.2weergegeven.Hetmeestalgemeneonderscheidistussen Voordelagenuitguur2.1wordennogaleensanderetermengebruikt.Deze 2.2.2Gerelateerdetermen<br />

hardwareensoftware.Binnendesoftwareonderscheidtmensysteemsoftteemontwikkelsoftwareontwikkeld.eenboekhoudpakketofeentekstverwerker.Zewordenmetbehulp<strong>van</strong>sys-<br />

compilerstotdesysteemontwikkelsoftware.Voorbeelden<strong>van</strong>applicatieszijn wareenapplicaties.Operatingsystemsbehorentotdesysteemsoftware,<br />

eengroterevarieteit.Omdezeredenisnietgetrachteengeforceerdsimpele toepasbaaralsmodelvoorveelbestaandemachines.Bovenlevel5bestaat of`high-levellanguages'genoemd.Totenmetlevel5isguur2.1goed Problemorientedlanguages(level5),wordenook`derdegeneratietalen'<br />

weergave<strong>van</strong>dewerkelijkheidtegeven[Tanenbaum1].Volgensdeindeling <strong>van</strong>guur2.1zoudenapplicaties`level6virtuelemachines'genoemdmoeten 18 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Begrippenkader 2.2.2<br />

Figuur2.2:<strong>Applicatie</strong>-versussysteemsoftware[VanRenesse]<br />

applicaties gebruiker<br />

systeemontwikkeltools dbms HYHHapplicatiesoftware operatingsystem hardware systeemsoftware dezescriptie<br />

greswordensomstotapplicatiesensomstotsysteemsoftwaregerekend. dietussendeproblem-oriented-languageendegebruikerinligt. worden.Ingrotelijnenzoumenapplicatieskunnenbeschouwenalseenlaag<br />

caties.Gegevensbeheerpakkettenliggengezien<strong>van</strong>uitsysteemontwikkelingDezescriptierichtzichopdesysteemontwikkeling<strong>van</strong><strong>gedistribueerde</strong>appliGegevensbeheerpakkettenofvierdegeneratie-softwarealsOracleenIn- implementatie alsinguur2.2gepositioneerdaandeapplicatiekant.<br />

onderliggendevirtuelemachine.Detaal<strong>van</strong>eenhogerelaagwordtuitgedruktineenlagerelaag.Zokanmeneencompilervoorhetvertalen<strong>van</strong> Methet`implementeren'<strong>van</strong>eenapplicatiebedoeltmenhetrealiseren<strong>van</strong><br />

eenproblem-oriented-language(bijvoorbeeldfortran)naarassembleertaal eeninterfacemetdegewenstehighlevelfunctionaliteitmetbehulp<strong>van</strong>de<br />

schrijven.Ofmenkaneenboekhoudpakketbouwenineenproblem-orientedlanguage.Menspreektsoms<strong>van</strong>defortran-implementatiealsmeneen eenlageretaal.Eenimplementatieiseenvirtuelemachine.Implementeren menhetprogrammazelfbedoelt. speciekevertalerbedoeld,of<strong>van</strong>deimplementatie<strong>van</strong>deboekhoudingals<br />

tweelagen. ishetrealiseren<strong>van</strong>degewenstefunctionaliteit|<strong>van</strong>devertaalslagtussen Eenimplementatiebiedteenhogeretaalaandoordezetevertalenin<br />

bepaaldetaalimplementeertaanteduiden.Eenprocessorishetactieve gedeelte<strong>van</strong>eenvirtuelemachine.Deautomaatvoerthetprogrammadat inzijntaalisgeschrevendaadwerkelijkuit. Determ`processor'wordtgebruiktomdeabstracteautomaatdieeen<br />

abstractidee|wordtook`implementeren'genoemd.Zokaneenoperating <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling Hetaanbieden<strong>van</strong>degewenstefunctionaliteit|<strong>van</strong>eenconcept,een 19


2.2.2 system(level3)bijvoorbeelddeprocedureabstractiegegeneraliseerdnaar Gedistribueerdheid<br />

modules een`rpcimplementatie'aanaandehogerelagen. <strong>gedistribueerde</strong>omgevingenimplementeren.Zo'noperatingsystembiedt<br />

modulesopgebouwd.Erbestaanequivalentenamenvoordeverschillende modulariseringsniveausopdeverschillendevirtuelemachines.Hetconcept Vanwegedecomplexiteit<strong>van</strong>toepassingenwordenapplicatieprogramma'sin<br />

Figuur2.3:Programma's,modulesenprocedures<br />

applicatie concept<br />

module ? JJJJJ^<br />

programma level5<br />

procedure ? JJJJJ^<br />

sourcele ? JJJJJ^<br />

executable<br />

function() ? JJJJJ^<br />

objectle ? JJJJJ^<br />

level2<br />

gemaaktheeftvooruitvoeringdoordelevel2processorwordtheteenexe`applicatie'wordtoplevel5uitguur2.1een`programma'genoemd.Wanneerdeprogrammeurdesourcecode(Cofcobolbijvoorbeeld)geschiktcutableleofeenexecutableimagegenoemd. dezescriptiegeldteeneenopeenrelatietussenmoduleensource/object equivalent<strong>van</strong>eensourceleopmachinetaalniveauheetobjectle.In dule'wordtindezescriptiegeachtequivalenttezijnmeteensourcele.Het<strong>Applicatie</strong>szijnopgebouwduiteenofmeermodules.Hetconcept`mo- ookwelfunctiesofroutinesofsubroutinesgenoemd.Inguur2.3wordt ceduresverschilttussendeverschillendehighlevellanguages.Zewordenle.2Moduleszijnopgebouwduiteenofmeerprocedures.Determvoorpro- opverschillendemanieren<strong>van</strong>grootnaarkleingegaan.Deguurkentdrie<br />

202Ditwijktaf<strong>van</strong>[Page-Jones],waareenequivalentietussenmoduleenproceduregeldt. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen dimensies.Teneerste:<strong>van</strong>linksnaarrechtswordt<strong>van</strong>hogenaarlageab- 2.3.1<br />

eenaantalprocedureabstracties. concept`applicatie'insteedskleinereentiteitenopgesplitst.Tenderde:elke applicatiebestaatuiteenaantalmodules,enelkemodulebestaatweeruit stractieniveausafgedaald.Tentweede:<strong>van</strong>bovennaarbenedenwordthet<br />

2.3 Indezeparagraafwordtbeschrevenwelkesystemengedistribueerdzijnen welkeniet.Erwordteenonderscheidgemaaktnaarhardware,softwareen Gedistribueerdecomputersystemen<br />

2.3.1Typologiehardware operatingsystemaspecten<strong>van</strong>gedistribueerdheid.<br />

dieontwikkeldzijn. Hierwordteenoverzichtgegeven<strong>van</strong>deverschillendevormen<strong>van</strong>distributie<br />

denomprogramma'sparalleluittevoeren.Ineentightly-coupledsysteemDesystemenbestaanuitmeerdereprocessoren.Zekunnenallegebruiktwor- opbasis<strong>van</strong>demate<strong>van</strong>fysiekesamenhangtussenprocessorengeheugen. [Coulouris]geefteentypologie<strong>van</strong>systemenmetmeerdaneenprocessor<br />

coupledsysteemhebbenzeelkhuneigengeheugen.Zieguur2.4.hebbendeprocessorenfysiekgemeenschappelijkgeheugen.Ineenlooselycessorenelkhuneigengeheugen.Zezijnviaeencommunicatienetwerkscheiden[Bal]:metelkaarverbonden.HierbinnenwordentweesubcategorieenonderIneenloosely-coupleddistributedsystemhebbendeverschillendepro- {Computersdieviaeenlanmetelkaarverbondenzijn.Elke<br />

mercieelverkrijgbaresystemen,zoalsdeSunsystemen,hebbenmodelwordthet`werkstation/servermodel'genoemd.Veelcomcomputervormteenwerkplekvoordegebruiker.Deprocessoren/computerskunnengeograschverspreidstaanopgesteld.Dit{Naasthetwerkstation/servermodeliserhetmulticomputermodel.Ditzijnsystemendiezijnopgebouwduitprocessorenmeteigengeheugendieviamessage-passingcommuniceren.Dedeel- dezestructuur.<br />

hoofdcomputerverzorgt.Transputerszijneenvoorbeeld<strong>van</strong>deze eigenI/Osysteem.DeI/O<strong>van</strong>hetgeheelwordtdooreenaparte categorie. computersmissen|afgezien<strong>van</strong>deinternecommunicatie|een<br />

Bijtightly-coupledmultiprocessorsystemsdelendeprocessorenfysiek systemenzijngeschiktvoorhetgelijktijdiguitvoeren<strong>van</strong>verschillende deeltaken<strong>van</strong>eenprogramma.Eennadeelisdatgeograschespreiding eengezamenlijkgeheugen.Ditheeftalsvoordeeldatcommunicatie<br />

<strong>van</strong>deverschillendeprocessennietmogelijkis. tussendedelen<strong>van</strong>het<strong>gedistribueerde</strong>systeemsnelplaatsvindt.Deze<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 21


2.3.1 Gedistribueerdheid<br />

Figuur2.4:Welofnietgedistribueerd[Coulouris]<br />

processor1 procesAgemeenschappelijkegeheugenruimte ? processor2 procesB<br />

? processor3 procesC<br />

tightly-coupledmultiprocessorsystem ? I/O-<br />

geheugen<br />

processor1 procesA geheugen<br />

I/O ? processor2 procesB geheugen netwerk<br />

I/O ? processor3 procesC<br />

loosely-coupleddistributedsystem I/O ?<br />

volgenshetwerkstation/servermodelenmulticomputersvallenhieronder. Gedistribueerdecomputersystemenzijnloosely-coupledsystemen.Hetcriteriumisofdeprocessoreneengemeenschappelijkgeheugendelen.Computers Denitie[Bal,p.3]:<br />

netwerktezenden.Eengedistribueerdcomputersysteembestaatuitmeerdereautomaarsamenwerkendoorboodschappenovereencommunicatienome[hardware]processorendiegeenprimairgeheugendelen,mengemplementeerdworden.modulesdiefrequentcommunicerenkunnenbeteroptightly-coupledsystemunicatieviagemeenschappelijkgeheugen(ziepagina46).<strong>Applicatie</strong>smetCommunicatieviaeennetwerkisongeveereenfactor104tragerdancom- 22 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen Hetbegrip`grain'(x2.1.4)beschrijfthetsoortapplicatie,hetbegrip`cou- 2.3.2<br />

mentatieoptightly-coupledsystemenomdatdecommunicatie-overheadoppling'slaatopdearchitectuurwaaropdezeapplicatieswordenuitgevoerd.Fine-grainenmedium-grainparallellismezijneerdergeschiktvoorimple- loosely-coupledsystemendeuitvoeringteveelzouophouden.Large-grain parallellismekanzoweloptightlyalsoploosely-coupledsystemengemplementeerdworden[Bal]. 2.3.2Fysiek/logisch<br />

niveau<strong>van</strong>virtuelemachinesisdaaromzekerzinvol. menmeteenvirtuelemachinetemakenhebben.Eenonderscheidophet Voorgaandedenitieenclassicatiezijngebaseerdopdefysiekemachine|de hardware.Demeestegebruikerszullenbijhetwerkenmetcomputersyste-<br />

sommigetoepassingeneenecienteimplementatiemogelijkmaken,voor sage-passing.Omdatzezijnopgebouwduitmeerdereprocessoren,kunnen programma'sparalleluitgevoerdworden.Hetcommunicatiemodelzalvoor Volgensdedenitiecommuniceren<strong>gedistribueerde</strong>systemenviames-<br />

andereproblemenishetteingewikkeld.Anderecommunicatieparadigma's kunnendoorsoftwarelagen(virtuelemachines)gemplementeerdworden. temaken.Denitie[Bal,p.10]: Hetiszinvolomeenonderscheidttussenfysiekeenlogischedistributie<br />

municeren.deresoftwareprocessendieviaexplicitiemessage-passingcomEenlogischgedistribueerdsoftwaresysteembestaatuitmeer- dandehardwarebieden. tribueerdbeeld<strong>van</strong>demachine.HetsoftwaresysteemkaneenandermodelEenlogischgedistribueerdsoftwaresysteembiedtzijngebruikereengedis- logischeenfysiekedistributiemogelijk: 1.logisch<strong>gedistribueerde</strong>softwarediewordtuitgevoerdopfysiekgedis- Dezedenitieendevoorgaandemakendevolgendeviercombinaties<strong>van</strong><br />

2.logisch<strong>gedistribueerde</strong>softwarediewordtuitgevoerdopfysiekniettribueerdehardware 3.logischniet-<strong>gedistribueerde</strong>softwarediewordtuitgevoerdopfysiek <strong>gedistribueerde</strong>hardware<br />

4.logischniet-<strong>gedistribueerde</strong>softwarediewordtuitgevoerdopfysiek<br />

opeenapartefysiekeprocessoruitgevoerdwordenenviasendenreceive Inheteerstegevalbestaathetsysteemuiteenverzamelingprocessendie niet-<strong>gedistribueerde</strong>hardware<br />

gemplementeerdzijn. primitievencommunicerenovereennetwerk.Eene-mailsysteemkanzo <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 23


2.3.3Inhettweedegevalheefthetsysteemdezelfdelogischemulti-proces Gedistribueerdheid<br />

parallelsysteemvooreenfysiekeprocessoris.meenschappelijkeadresruimte)gesimuleerd.Deinterproces-communicatieineenminixsysteemishiereenvoorbeeld<strong>van</strong>,zijhetdatditeenpseudostructuur.Nuwordtdefysiekemessage-passingmetshared-memory(gemaakt.Gemeenschappelijkvirtueelgeheugen(x3.3.2)ishiereenvoorbeeldgrammeur.Defysiekeverdeling<strong>van</strong>hetgeheugenwordtonzichtbaargegemeenschappelijk-geheugen-multiprocessortebiedenaandeapplicatiepro- Indederdeklasseprobeertdevirtuelemachinedeabstractie<strong>van</strong>een<br />

<strong>van</strong>.Inhetvierdegevalwordtookdefunctionaliteit<strong>van</strong>gemeenschappelijk geheugengeboden.Nuisdeimplementatie<strong>van</strong>dezevirtuelemachinetriviaalgewordendoordeaanwezigheid<strong>van</strong>fysiekshared-memory.is,isfysiek<strong>gedistribueerde</strong>nlogischnietgedistribueerd.Eengedistribueerdsysteemprobeertdefysiekegedistribueerdheidzoveelmogelijktecamouerenmetvertaallagendiehetgebruik<strong>van</strong>niet-<strong>gedistribueerde</strong>software Eengedistribueerdoperatingsystemdattransparantvoorzijngebruiker<br />

mogelijkmaken. logischnietgedistribueerdsysteemgebouwdopeenfysiekwelgedistribueerdsysteem.Een<strong>gedistribueerde</strong>compileriseencompilervooreenfysiek <strong>gedistribueerde</strong>architectuur.Hetisnietnodigdatdetaaldiedezecompiler Vanwegedezetransparantieiseengedistribueerdoperatingsystemeen<br />

aanbiedtlogischgescheidengeheugenimplementeert.Voordeterm`gedistribueerdsysteem',of`<strong>gedistribueerde</strong>compiler',isfysiekegedistribueerdheid hetcriterium.<br />

verschillendevirtuelemachines.Inx2.3.1isalscriteriumbeschrevendatge- 2.3.3Operatingsystem<br />

geheugen.Naastdithardwarecriteriumzijnbeschrijvingen<strong>van</strong>eenhoger distribueerdesystemenbestaanuitmeerdereprocessorenmetelkeenapart Dedenities<strong>van</strong><strong>gedistribueerde</strong>systemenindeliteratuurrichtenzichop<br />

lendelagen<strong>van</strong>virtuelemachines<strong>van</strong>dehardwarenaardegebruikermoeten niveaunoodzakelijkomeisenvoordehogerevirtuelemachinestekunnen vaststellen.Dezebeschrijvingenstelleneisenaandevertaalslagdieverschil-<br />

gedistribueerdsysteem implementeren.<br />

In[Mullender1,p.5]wordtdevolgendeomschrijving<strong>van</strong><strong>gedistribueerde</strong> systemengegeven:<br />

[...] Adistributedoperatingsystemisonethatlookstoitsuserslike toleranceandthepossibilitytouseparallelism. Thefundamentalpropertiesofadistributedsystemarefault<br />

24independentCPU's.Thekeyconcepthereistransparency,in anordinarycentralizedoperatingsystem,butrunsonmultiple, <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen otherwords,theuseofmultipleprocessorsshouldbeinvisible2.3.3<br />

(transparent)totheuser.Anotherwayofexpressingthesame<br />

Doordateengedistribueerdsysteemisopgebouwduitmeerderecomputers processor',notasacollectionofdistinctmachines.ideaistosaythattheuserviewsthesystemasa`virtualuni- kunnenbeschikbaarheidenbetrouwbaarheid<strong>van</strong>gegevensvergrootworden. Dezemogelijkhedenpassenachtereenvolgensbijapplicatiesoort1en2uit mogelijkgegevensgelijktijdigopmeerdereplaatsenopteslaan.Hierdoor ishetmogelijkprocessengelijktijdiguittevoeren|parallellisme.Hetisook<br />

x2.1.4. doordegebruikergezienwordt.Delagerevirtuelemachines(meerdere onafhankelijkeprocessoren)wordenaandehoogstevirtuelemachine(virtueleuniprocessor)gerelateerd. Indelaatstealineawordtbeschrevenhoede`hoogste'virtuelemachine<br />

gedistribueerdoperatingsystem(level3) Ookvoordekarakterisering<strong>van</strong><strong>gedistribueerde</strong>operatingsystems(level3 virtuelemachines)istransparantieeensleutelbegrip.In[Coulouris,p.9] wordeneenaantalkenmerkenopgesomd: Uitbreidbaarheid(schaalbaarheid)<br />

Meerderegelijkvormigecomponenten Betergebruik<strong>van</strong>hulpmiddelen Verbeterdebeschikbaarheid<br />

Transparantie Afwezigheid<strong>van</strong>hierarchischebeheersstructuren Onderlingverbondenverwerkingseenheden<br />

Processenmetgescheidenadresruimtendieviaexplicietemessage-<br />

transparantieals: Transparantiewordtindezecontextverderuitgewerkt.Mendenieert passingcommunicerenhetverhullen<strong>van</strong>dedelenvoordegebruikerenapplicatiepro-<br />

Devolgendeachtvormen<strong>van</strong>transparantiewordengenoemd: grammeur,zodathetsysteemgezienwordtalseengeheelinAccesstransparencyzorgtervoordatlokalebestandenenandereob-<br />

plaats<strong>van</strong>eenverzamelingonafhankelijkecomponenten.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling jectenmetdezelfdeoperatiesbenaderdkunnenwordenalsbestanden opeenanderemachine. 25


2.3.3Locationtransparencyzorgtervoordatobjectenbenaderdkunnenwor Gedistribueerdheid<br />

staatgelijktijdigoperatiesopgemeenschappelijkegegevenstekunnen Concurrencytransparencystelteenaantalgebruikersofapplicatiesin denzonderdatmenhunplaatshoefttekennen.<br />

toeenmaakthetmogelijkanderebestandentegebruikenteneindede Replicationtransparencystaatmeervoudigeinstanties<strong>van</strong>bestanden uitvoerenzonderdaterconictenoptreden.<br />

Failuretransparencyverhultfalen<strong>van</strong>hardwareofsoftwarecompo- kennis<strong>van</strong>hoeventedragen. betrouwbaarheidteverhogenzonderdatgebruikersofapplicatieshier<br />

nentenzodatgebruikersenapplicatieshuntakenongestoordkunnen volbrengen. Migrationtransparencystaathetverplaatsen<strong>van</strong>objectenbinneneen systeemtoezonderdatdeoperaties<strong>van</strong>gebruikersofapplicatieshier Performancetransparencymaakthetmogelijkhetsysteemtehercon- hinder<strong>van</strong>ondervinden.<br />

teemenapplicatiesdoortevoerenzonderdesysteemstructuurofapScalingtransparencymaakthetmogelijkschaalvergrotingen<strong>van</strong>sysgurerenomdeprestatieteverbeterenbijwisselendebelasting.Deverscheidenheidaanvormen<strong>van</strong>transparantieillustreertdegrotegevolgendiehetgebruik<strong>van</strong>meerderecomputersophetontwerp<strong>van</strong>eenoperatingsystemheeft.Degevolgen<strong>van</strong>descheiding<strong>van</strong>processorenkoplicatiealgoritmentewijzigen. <strong>van</strong>hetsysteem. rallelleuitvoering<strong>van</strong>programma'senongevoeligheidvoorfoutenindelenmentotuitingindenoodzaaktotcommunicatieenexplicietebeheers-enintegratietechnieken.Voordelen<strong>van</strong>scheidingzijndemogelijkheid<strong>van</strong>parantzijn.Level4,level5endeapplicatieofeindgebruikerzieneenoperatingsystemdateenvirtueleuniprocessorinterfaceaanbiedt.Dezetransparantie<strong>gedistribueerde</strong>elementenophetniveau<strong>van</strong>hetoperatingsystemtranspa- Bijdetransparantie-eisenwordter<strong>van</strong>uitgegaandatdeverschillende<br />

tegenstellingNOSenGOS eisenzijnalsdoel<strong>van</strong>eenideaalsysteemgeformuleerd.Derealiteitisdat operatingsystemsnietvolledigtransparantzijn(x2.3.5).<br />

In[Fortier]wordthetbegrip`transparantie'gebruiktomeenonderverdeling tussenwelofniet<strong>gedistribueerde</strong>operatingsystemstekunnenmaken.Hier p.32]:Theusershaveauniformandtransparentviewofresources,and<br />

wordtweeralleendelevel3virtuelemachineomschreven.Eengedistribueerdoperatingsystemwordtdoorzijngebruikersalsvolgtgezien[Fortier, 26globalresourcesarefairlyallocatedtoindependentprocesses. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen Naast<strong>gedistribueerde</strong>operatingsystemszijnerooknetwerkoperatingsys- 2.3.4<br />

maarnietaandeeis`transparantvoorlevel4'voldoen. tems.Datzijnoperatingsystemsdieweldearchitectuur<strong>van</strong>x2.3.1kennen,<br />

bestaan<strong>van</strong>eennetwerkafwetenenexplicieteenverzoekaaneenander Wanneereengebruikereenproceswillatenuitvoerenmoetdeze<strong>van</strong>het aan.Deprocessenenhulpmiddelen(resources)zijnalleenlokaalbekend. Eennetwerkoperatingsystembiedteenverzamelingautonomediensten<br />

rantiemechanismedathetnetwerkenzijndetailsvoordegebruikersver stationrichten.Degebruikermoetzelfdenamen<strong>van</strong>bepaaldestations<br />

bergt.Hetvormteenlogischgeheelwaarinprocessenenhulpmiddelenglo kennen.<br />

baalbekendzijn.Degebruikerkentgeenstationnamen,wantstationszijnVolgens[Fortier]kenteengedistribueerdoperatingsystemeentranspa- voordegebruikergeenherkenbareentiteiten. plicatieeneengrotereverwerkingssnelheiddoorparallellisme[Mullender1].delen:hetistransparant.Hetbiedteengroterebedrijfszekerheiddoorre- Dewaarde<strong>van</strong>eennetwerkoperatingsystemisnietgroterdandesom<strong>van</strong> Eengedistribueerdoperatingsystemismeerdansom<strong>van</strong>de(hardware)<br />

primitieven(gos-primitieven)genoemd.PrimitievenwaarbijnietallededendievolledigtransparantzijnwordenGedistribueerdOperatingSystem desamenstellendedelen.3<br />

tailsvoordegebruikerwordenafgeschermdwordenNetwerkOperatingSysPrimitieven(system-calls)diedooroperatingsystemswordenaangebotemprimitieven(nos-primitieven)genoemd.teerdop<strong>gedistribueerde</strong>hardware.Eengedistribueerdoperatingsystem biedtdaarbijtransparantievoordehogerelagen.Watbetreftdeinterne opbouw<strong>van</strong>devirtuelemachinegeldtdaterinprincipegeenhierachische Zowel<strong>gedistribueerde</strong>-alsnetwerkoperatingsystemszijngemplemen-<br />

gecentraliseerdebeheerscomponent. structuurinisaangebracht.[Fortier,p.100]zegtdatdetechnologienogniet<br />

eenmix<strong>van</strong>netwerkengedistribueerdoperatingsystem. instaatiseenvolledig<strong>gedistribueerde</strong>omgevingteverwerkelijkenzondereen Bestaandeoperatingsystemsdie`gedistribueerd'genoemdwordenzijn<br />

machinezelf. dulen.Ineengedistribueerdoperatingsystemgebeurtditimpliciet|doordevirtuele3Eengebruikerkanineennetwerkoperatingsystemprocessenexplicietparallelsche- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 27


2.3.4 Gedistribueerdheid<br />

2.3.4Beheersen<strong>van</strong>complexiteit<br />

Deredenwaaromtransparantiezobelangrijkgevondenwordtdoorveel<br />

auteurs,4isdatdecomplexiteit(ingewikkeldheid)<strong>van</strong>computersystemen<br />

bestudering<strong>van</strong>hunkenmerkenendetailondoenlijkmaakt.Zondereen<br />

model<strong>van</strong>dewerkelijkheidisonderzoeknietmogelijk(zieookx2.2.1).Fi-<br />

guur2.1schetsteenmodeldatisopgebouwduitlagen.Elkelaagbeschrijft<br />

eenmodel<strong>van</strong>dewerkelijkheid.Elkelaagiseenabstractie,eenschijnbare<br />

werkelijkheid,eenvirtuelemachine.<br />

Gedistribueerdesystemenzijnopgebouwduitmeerdereconventionele<br />

computersystemen.Hierdoorishuncomplexiteitgroterdan<strong>van</strong>conven-<br />

tionelecomputersystemen.Hetontwerp<strong>van</strong><strong>gedistribueerde</strong>systemeniszo<br />

moeilijkomdatdecomplexiteithetbevattingsvermogentebovengaat.De<br />

bron<strong>van</strong>dezebuitengewonecomplexiteitisdatdekoppeling<strong>van</strong>componen-<br />

tendiemenopzichgoedbegrijptonvermoedeproblemenkanveroorzaken.<br />

[Mullender1,p.9]geefthier<strong>van</strong>hetvolgendevoorbeeld.Bijeentoken-<br />

ringnetwerkkaneenstationeenpakketversturenzodrahijhettokenheeft.<br />

Daarnakrijgthetvolgendestationhettokenomeventueeleenpakkette<br />

versturen.Dekern<strong>van</strong>hettoken-ringprotocolisdateenstationbijhet<br />

versturen<strong>van</strong>eengrotemulti-pakketboodschapeenanderstationzonooit<br />

kanbuitensluiten.<br />

Ditgebeurdetoch.Deont<strong>van</strong>gstcircuits<strong>van</strong>detoken-ringinterfacekaar-<br />

tenblekeneenpakketdatdirecteenanderpakketvolgtnietoptemerken.<br />

Hetvolgendegebeurde:(1)Azendtheteerstepakket<strong>van</strong>eenboodschap<br />

naarO.(2)BzendtdirectnaAeenpakketnaarO,maarwordtgenegeerd<br />

omdathettedichtophetvorigepakketvolgt.(3)Azendthettweedepak-<br />

ket<strong>van</strong>deboodschapdirectnaB'spakket.Oisweerhersteld,enont<strong>van</strong>gt<br />

hetpakket.(4)Bverzendtheteerstepakketnogmaals,enwordtweergene-<br />

geerd.Ditgaatzodoor,metalsresultaatdatBgeblokkeerdisjuistomdat<br />

hettoken-ringprotocolgarandeertdatAenBombeurtenmogenzenden.<br />

Hettoken-ringprotocolwerkteopzichgoed,deont<strong>van</strong>gstcircuitsook.<br />

Maardecombinatie<strong>van</strong>beidezorgdevooreenresultaatdatnietwasvoor-<br />

ziendoordeontwerpers.<br />

Gedistribueerdesystemenzijnzoingewikkeldomdatdefunctioneleei-<br />

senzocomplexzijn.5Gebruikelijketakendieelkcomputersysteemmoet<br />

verrichtenwordendoordegedistribueerdheidingewikkelder.[Mullender1]<br />

geeftalsvoorbeeldeenlesysteem.Eensingleuserlesysteemmoeteenze-<br />

kerefunctionaliteitbieden.Menmoetleskunnenmaken,eennaamgeven,<br />

lezen,wijzigenenverwijderen.Eentime-sharingsysteemheeftmeerdere<br />

gebruikers.Hetsysteemmoetnurekeninghoudenmetzakenalsgebruikers-<br />

identicatie,toegangscontrole,lees/schrijfconcurrencyetc.Eengedistribu-<br />

4Zie[Watt1,Tanenbaum1,Tanenbaum5,Coulouris,Fortier,Mullender1,Page-Jones,<br />

Date,DeBruin,Birrell,Bal,Weihl1].<br />

5Naastfunctioneleredenenzijnereconomischeredenen.Zelfswanneerditfysiekmo-<br />

gelijkzouzijnishetteduuromelkecomputerwaarookterwerelddirectmetelkeandere<br />

computerteverbinden.Wideareanetwerkenhebbenhieromeenvermaasdestructuur<br />

[Matthijsen].Netwerksoftwarewordthierdoorcomplexer.Hetmoetzakenalsroutering,<br />

tussentijdseopslagenow-controlimplementeren.<br />

28 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen eerdlesysteemmoetzichdaarbijookbezighoudenmetplaatsbepaling<strong>van</strong> 2.3.4<br />

<strong>van</strong>hetsysteem. les,coordinatie<strong>van</strong>replicatie,enherstelmechanismenbijuitval<strong>van</strong>delen<br />

semantiek<strong>van</strong>eenconcept tebrengentotdemate<strong>van</strong>complexiteit<strong>van</strong>eengecentraliseerdsysteem. Eenontwerpdoel<strong>van</strong><strong>gedistribueerde</strong>systemenisdecomplexiteitterug<br />

Deprimitieven<strong>van</strong>eeninterfacehebbeneenbepaaldebetekenis:desemantiek.Dezebetekenisvertegenwoordigteendeel<strong>van</strong>hetprobleemgebied|een Detaal<strong>van</strong>eenlaag|deinterface|bestaatuitconceptenenprimitieven. deel<strong>van</strong>detestructurerencomplexiteit.Primitievenzijnbouwstenenwaarteit.Primitievendieveelcomplexiteitvertegenwoordigenheteneen`krachtigeprimitievestaatvooreenbepaaldehoeveelheidgestructureerdecompleximeemenzinvollestructureninhetprobleemgebiedkanaanbrengen.Eenchinegenoegkrachtigeprimitievenaanbiedtishetrelatiefeenvoudigomeen eenvoudige|snelleenfoutvrije|oplossingvooreenprobleemtebouwen. eenprobleemimplementerenofrepresenteren.Wanneerdevirtuelema- semantiek'tehebben.Eengebruikerkanmetweinigkrachtigeprimitieven<br />

Doorenkelekrachtigebouwstenentecombinerenkandegebruikereengrote<br />

meerinventiviteiteninzicht<strong>van</strong>deontwerper<strong>van</strong>eenhogerelaagdanbij kenomhetgewenstehoeveelheidcomplexiteittestructureren.Ditvergt hoeveelheidcomplexiteitstructureren.Hetgebruik<strong>van</strong>primitievenmeteen<br />

krachtigeprimitieven.Dekansisgrootdatdehogerelaagsnelnochfoutvrij beperktesemantiekiscomplex.Degebruikermoetveelprimitievengebrui-<br />

wordtuitgevoerd.<br />

inprimitieven<strong>van</strong>eenlagerelaag.Primitievenmeteenkrachtigesemantiek tievendieeenvirtuelemachineaanbiedtwordendooreenvertalervertaaldkant<strong>van</strong>deprimitievenwordtgevormddoordeimplementatie.Deprimi- Totnutoezijnprimitieven<strong>van</strong>uitdegebruikerbeschreven.Deandere<br />

vertalervoorzulkeprimitieventeschrijven.Hetiseenvoudigeromeengrote Voorprimitievenmeteenbeperktesemantiekishetschrijven<strong>van</strong>eenver- hoeveelheidcomplexiteitineenaantalstappentereduceren(structureren).6 vertegenwoordigenveelcomplexiteit.Hetismoeilijkomeensnelle,foutvrije<br />

talervooreensnelle,foutvrijevertalingeenvoudiger.Deprimitievenver high-levelenlow-levelconcepteniseenvoudiger. tegenwoordigenmindercomplexiteit.Hetvinden<strong>van</strong>eenverbandtussenveAbiedteenbeperktesemantiekaandegebruikeraan.Degebruikermoetmaticgapisgroot.Deontwerper<strong>van</strong>devertaalslag|devirtuelemachine|veelcomplexiteitzelfstructurerenomineenkeerhetdoeltebereiken|deseInguur2.5wordtkrachtigeenbeperktesemantiekuitgebeeld.Primitie- trageimplementatieisbijdegebruikergroterdanbijdeontwerper<strong>van</strong>de vertaling. implementeerteenrelatiefeenvoudigprobleem.Dekansopfoutenofeen<br />

niveaureduceren. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 6Ditiswathetlagenmodeldoet:complexiteitineenaantalstappentoteenbegrijpelijk 29


2.3.4 Gedistribueerdheid<br />

Figuur2.5:Complexiteitensemantiek<strong>van</strong>primitieven<br />

6<br />

gebruiker gebruiker liteit,ofterealiserenconcepthighlevelfunctiona- teoverbruggen complexiteit hoeveelheid krachtigeprimitieven<br />

<strong>van</strong>2lagen<br />

? vertaler vertaler zwakkeprimitieven<br />

A B lowlevelconcept<br />

primitievendiezichvooreensnelleeneenvoudigeimplementatielenen.De ontwerper<strong>van</strong>devertalingheefteenzeercomplexemateriegestructureerd metprimitieveB.Dekansdatdezevertalingsnelencorrectis,iskleiner DesituatieisbijprimitieveBjuistandersom.Degebruikerzietkrachtige<br />

danbijprimitieveA.<br />

cedureletalenalsCenrisc-processorarchitecturen.8Voorbeelden<strong>van</strong>zwakkesemantiekmeteensnelleimplementatiezijnpro- oplevel5logischetalenalsPrologenoplevel2cisc-processorarchitecturen.7 Voorbeelden<strong>van</strong>krachtigeconceptenmeteentrageimplementatiezijn<br />

zwakkesemantiekmeteensnelleimplementatiezijnpoint-to-pointmessaconceptenmeteentrageimplementatiezijnlogischgemeenschappelijkgeheugen(pagina46)enzero-or-onesemantiek(x3.3.3).Voorbeelden<strong>van</strong> Voorbeeldeninhetkader<strong>van</strong><strong>gedistribueerde</strong>systemen<strong>van</strong>krachtige<br />

ges(pagina43)enat-most-oncesemantiek(pagina62).Eenvertaalslag<strong>van</strong>high-levelnaarlow-levelprimitievenkanopheteerlingproberendecomplexiteitdiemenmoetoverbruggenterugtebrengen.stegezichtingewikkeldzijn|eengrotehoeveelheidcomplexiteitomspannen.Doornaar`elegante'conceptentezoekenkandeontwerper<strong>van</strong>eenverta- Doorgerichtdezecomplexiteitteproberentedoorgrondenentoteenvoudige conceptentereducerenkanhetmogelijkblijkentocheeneenvoudige|snelle eenvoudenelegantiebijhetontwerp<strong>van</strong>eentaalbeschreven. enfoutvrije|vertalingtemaken.In[Hoare]ishetbelang<strong>van</strong>strevennaar<br />

8ReducedInstructionSetComputer. 7ComplexInstructionSetComputer. Conceptendiedoordegebruikerals`krachtig'wordengezienomvatten<br />

30 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen somsmindercomplexiteitdandezeveronderstelt. 2.3.5<br />

2.3.5Transparantie <strong>van</strong>meerderelevel2virtuelemachinesgeeftdemogelijkheid<strong>van</strong>parallelle Gedistribueerdehardware|meerdereprocessoren|isinhetmodel<strong>van</strong>guur2.1tevertalenalsmeerderelevel2virtuelemachines.Hetgebruik uitvoering<strong>van</strong>processenenverhoogdebedrijfszekerheiddoorreplicatie.<br />

faceongewijzigddooraanlevel4.Zevoegenslechtsconceptentoe(geprivili danhunvoorganger.Somsechterlaateenvirtuelemachinedelen<strong>van</strong>de oorspronkelijkeinterfaceintact.Zogevenlevel3machinesdelevel2inter- Virtuelemachinesbiedendegebruikerinprincipeeenandereinterface<br />

geerdeinstructieswordenwelafgeschermd).Hetoperatingsystembiedtaan deassemblernaastsystem-callsookongewijzigdemachine-codeinstructies parallellismebijapplicaties aan,enmeerdereprocessoren.9<br />

tiesombeheersmatige(softwareengineering)redenenalspseudo-parallelleOpgecentraliseerdeuniprocessorenwordensommigeom<strong>van</strong>grijkeapplicamultiprocesprogramma'sgemodelleerd[Rochkind].In<strong>gedistribueerde</strong>omgevingenkunnenditsoortapplicatiesechtparalleluitgevoerdworden.Voor applicatiesoort3en4<strong>van</strong>x2.1.4kanditvoordeligzijn.Dezetoepassingen<br />

inprocessenenkanhetprobleemalseenenkelvoudigprogrammaspecicelisme.Deapplicatieprogrammeurheefthierbijgeeninvloedopdeverdeling makengebruik<strong>van</strong>explicietparallellisme.<br />

ren.<strong>Applicatie</strong>s<strong>van</strong>soort1kunnen<strong>van</strong>deverhoogdesnelheid<strong>van</strong>parallelleDaarnaastzijnertoepassingendiegeschiktzijnvoorimplicietparallel- doordecompilerverrichtwordt(x2.1.4). uitvoeringproteren. specicerennoodzakelijk,voorandereishetmogelijkdathetparallelliseren Voorsommigetoepassingenisdemogelijkheidparallellismeexpliciette<br />

hierinvoorzien.Sommigeproblemenlatenzichgoedspecicerenintalen meerdereprocessorenaandehogerevirtuelemachinesaan.Waarvoorsommigetoepassingenimplicietparallellismegewenstismoetenlevel5vertalers Ineen<strong>gedistribueerde</strong>omgevingbiedtdeoperatingsystem-interface<br />

waarparallelliserendecompilersvoorbestaan.10Bijandereproblemenmoet deapplicatieprogrammeurzelfeenparallelontwerpmaken[Watt1,Bal].<br />

demogelijkheden<strong>van</strong><strong>gedistribueerde</strong>hardware,endecomplexiteit<strong>van</strong>de lagerevirtuelemachinesvoorzijngebruikerafschermt.Hetideaaluitx2.3.3 Eenvirtuelemachineis`gedistribueerd'alsdezeimplicietgebruikmaakt<strong>van</strong> NOS-primitievenenGOS-primitieven<br />

tingsystem-laagalsvirtueleuniprocessorwordenaangeboden. hetontwerpen<strong>van</strong>parallelliserendecompilersmoeilijk[Bal]. 10Voorbepaaldeproblemorientedprogrammeerparadigma's(zoalshetprocedurele)is 9Oppagina33wordtbeschrevenwaarommeerdereprocessorennietaldoordeopera-<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 31


2.3.5 isdatdeeerstevirtuelemachinebovenlevel2hetabstraheren(wegstruc- Gedistribueerdheid<br />

operatingsystemsnietvolledigtransparant,dehogerelagenzienmeerdere processoren.11Zevormeneencompromistussennetwerk-en`echt'gedistri- vertaalslagineenkeermoetenmaken.Indepraktijkzijn`<strong>gedistribueerde</strong>' tureren)<strong>van</strong>decomplexiteitimplementeert|hetoperatingsystemzoudebueerdeoperatingsystems.mitieven,hebbenbijvoorbeeldbetrekkingophetlesysteem.Denaamnos-primitievenaan.Primitievendieweltransparantiebieden,degos-pri`nos-primitieven'is<strong>van</strong>toepassingopniet-transparanteprimitieven,bij-<br />

`Gedistribueerde'operatingsystemsbiedenzowelgos-primitievenals<br />

entransparantegos-primitieven. de'operatingsystemsvormeneencompromistussensnellenos-primitievenvoorbeeldvoorprocesbeheereninterproces-communicatie.`Gedistribueerkenmetdeoverhead<strong>van</strong>hetresultaat<strong>van</strong>devertaalslagtussenhighlevel enlowlevelconcepten.Deoverheadistegrootvooroperatiesalsprimair geheugen-toegangen,diedesnelheid<strong>van</strong>eensysteemsterkbenvloeden.De Datmetnamele-systeem-primitieventransparantiebiedenheefttema-<br />

en`schrijfnaarle'|isdeoverheadacceptabel,getuigedewijdverbreide primitievenvoortoegangtothetsecundairegeheugen|als`openbestand' acceptatie<strong>van</strong>operatingsystemsmet<strong>gedistribueerde</strong>lesystemenenle- toegangstijd<strong>van</strong>secundairgeheugenisongeveereenfactor105groter.Voor<br />

bereneenlevel5virtuelemachineteontwerpendiedeovergeblevenproblemenoplost.Menkanhiertoeeennieuwehighlevellanguageofeennieuweserversdoorgebruikers[Coulouris]. vertalervooreenbestaandetaalontwerpen.Deontwerper<strong>van</strong>delevel6 Bijeenoperatingsystemdatnietvolledigtransparantiskanmenprointerface|deapplicatieprogrammeur|wordtinbeidegevalleneentransparantevirtuelemachinegeboden.Bestaandeapplicatieprogramma'skunnen<br />

daneenvoudigopde<strong>gedistribueerde</strong>systemengebruiktworden.Omeen transparanteconcepten. transparanteinterfaceaantekunnenbiedenmoetdelevel5vertaler|de<br />

tecomplexiskanmenernaarstrevenomdeinterfacevolgensgelijksoortige compiler|degos-primitievendoorgevenendenos-primitievenvertalenin<br />

conceptenenparadigma'soptezetten.Menhoeftdesoftwaredanniet volgensfundamenteelandereconceptenteherschrijven.Hetrpc-paradigma Wanneeremulatie<strong>van</strong>deprimitieven<strong>van</strong>eenbestaandoperatingsystem<br />

conceptaan.ismetditdoelgentroduceerd.Derpcbiedthetveelgebruikteprocedureenpoint-to-pointmessagepassing.Voorbeelden<strong>van</strong>transparantegos-primitievenzijnprimitievenvoorlogischvirtueelgeheugenenvooreengedistribueerdlesysteem. Voorbeelden<strong>van</strong>niet-transparantenos-primitievenzijnderemotefork<br />

32 ofeenvirtueleuniprocessoroplevel3onderalleomstandighedenwenselijkis. 11Daarsommigeapplicaties<strong>van</strong>explicietparallellismegebruikmaken,ishetdevraag <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Gedistribueerdecomputersystemen transparantie-eisen 2.3.5<br />

concepteninnos-primitieven,en,indiengeenexplicietparallellismegewenst Detaak<strong>van</strong>delevel5vertalerisheteventueelvertalen<strong>van</strong>highlevel<br />

uniprocessorinterfaceaanbieden.Sommigeconventionelelevel5interfaces is,eenprocessorinmeerderelevel2processoren.<br />

zijngeschiktvoorverdelingovermeerderelevel2processoren.Oppaliserendecompileropbasis<strong>van</strong>meerderelevel2processoreneenvirtueleNaasthettransparantmaken<strong>van</strong>nos-primitievenmoeteenparallel- highlevelnaargeparallelliseerdelowlevelconcepten.12 mogelijkhedengenoemddiegeschiktzijnvooreenvertaling<strong>van</strong>sequentiele gina39wordenhetfunctioneleenhetlogischeprogrammeerparadigmaalstenwordenineengrootaantalkleinelagereconceptenvertaald.Opeenlaagabstractieniveauminderprimitievendanopeenlaagniveau.Hogereconcep-<br />

niveau(level2)omvattendeprimitievenweinigcomplexiteit.Desemantiek Inhetalgemeenvereistderepresentatie<strong>van</strong>eenprobleemopeenhoog<br />

kunnenmetminderprimitievenwordengerepresenteerd. niveau(level5)bezittenprimitieveneenkrachtigersemantiek.Problemen isbeperkt,ermoetenveelinstructiessnelwordenuitgevoerd.Opeenhoog<br />

abstractere,mindergedetailleerdeconceptenuittegaanishetmogelijkbij- en4<strong>van</strong>x2.1.4inparallelleeenhedenwilpartitioneren.Door<strong>van</strong>hogere, analysemethighlevelprimitieven,zekerindienmenapplicatiesomreden3Hetdetecteren<strong>van</strong>largegrainparallellismevereisteenhoog-niveauschappelijkevariabelenteimplementeren.voorbeelddeverdelinginparallelleprocessenofhetgebruik<strong>van</strong>gemeen opeentelaagniveauomdezehighlevelconceptensneltekunnenvertalen. Hettranformeren<strong>van</strong>meerdereprocessorenineenvirtueleuniprocessor| detectie<strong>van</strong>largegrainparallellisme|vindtoplevel5(eneventueelhoger) Hetoperatingsystemspeeltgeenrolindezevertaling.Hetbevindtzich<br />

beoordelingscriteriadevolgendepunteneenrol: plaats.Bijdebeoordeling<strong>van</strong>level5omgevingenspelennaastconventionele Ondersteuntdeomgevingexplicietofimplicietparallellisme?Indien explicietparallellismemogelijkis,zijndeprimitievendantransparant?<br />

Indiendezepuntentransparantzijnvoordeapplicatieprogrammeurisde vraaginhoeverredeomgevingnogexibelis,ofdathetimplementeren<strong>van</strong> conceptenvertaald? Welkelevel3nos-primitievenwordennietdoorlevel5intransparante<br />

mogelijkheden. sommigeproblemencomplexisgewordendoordeafscherming<strong>van</strong>bepaalde<br />

systeemprogrammeursgeschiktis. deomgevingniettecomplexisvoorapplicatieprogrammeurs,enmeervoor Hetvolgendehoofdstukbehandeltbeoordelingscriteriavoordezevragen. Wanneerlowlevelconceptennietzijnafgeschermdishetdevraagof<br />

opsystemenzondergemeenschappelijkgeheugensnelteimplementeren. deprocessorenmetzichmeebrengt.Hetisne-grainparallellisme.Dezevormismoeilijk 12Eencomplicatiehierbijisdatdezevorm<strong>van</strong>parallellismeveelcommunicatietussen<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 33


Hoofdstuk3<br />

<strong>Applicatie</strong>ontwikkeling<br />

applicatieontwikkelomgevingaanmoetvoldoen. Hetdoel<strong>van</strong>dithoofdstukisvasttestellenwaareengoede<strong>gedistribueerde</strong><br />

terfaceuitguur2.1|deproblem-oriented-language.Delevel5virtuele 3.1 Detaalwaarintoepassingsprogramma'swordengeschrevenisdelevel5in- Soortentoepassingen<br />

machinemoetdefuctionaliteitdiehet<strong>gedistribueerde</strong>operatingsystem aanbiedtgeschiktmakenvoorhetimplementeren<strong>van</strong>toepassingen.De problem-oriented-languageisdeinterfacetussenhetoperatingsystemen degebruikersapplicaties.Kenmerkendvooreengedistribueerdsysteemzijn devolgendepunten(x2.3.1en2.3.3). 1.StructuurEengedistribueerdsysteembestaatbijhetwerkstation/ser- gelijksoortigesystemenzijn,zoalseenverzamelingwerkstations.Het isookmogelijkdatbepaaldecomputerseenspeciekefunctionaliteit hebben.Zokaneenmachinevoordatabasetoepassingengeoptimaver-modeluitgeograschverspreidopgesteldecomputers.Ditkunnen 2.ParallellismeenfouttolerantieAlsgevolg<strong>van</strong>destructuurkunnen liseerdzijn,terwijlanderespeciaalmachinesvoorgui-toepassingen geschiktzijn.<br />

Gebruikerswendendezemogelijkhedenvoorhetimplementeren<strong>van</strong>toepas- engegevensopmeerdereplaatsenopgeslagenworden. processengelijktijdigdoormeerdereprocessorenwordenuitgevoerd,<br />

systemenwilimplementeren.Inx2.1.4wordendevolgendegenoemd. singenaan.Deaplicatieontwikkelomgevingmoetdemogelijkhedenvertalen ineenvormdieaansluitopdeproblematiek<strong>van</strong>degebruikers.<br />

1.SnelheidEenkorteredoorlooptijdvooreenenkeleberekening. Erzijnverschillenderedenenwaarommenapplicatiesop<strong>gedistribueerde</strong><br />

2.BetrouwbaarheidToegenomenbetrouwbaarheidenbeschikbaarheid. 34


Soortentoepassingen 3.SpecialisatieDemogelijkheidbepaaldedelen<strong>van</strong>hetsysteemtege- 3.1.1<br />

4.InherentegedistribueerdheidDemogelijkheidinherentegedistribueerdheid<strong>van</strong>eenapplicatietebenutten.bruikenomspeciekefunctionaliteitecientaantekunnenbieden. 3.1.1Parallellisme Eenofmeer<strong>van</strong>dezeredenenkunnenaanleidinggeventotimplementatie <strong>van</strong>eenapplicatieopeengedistribueerdsysteem.<br />

zijnapplicatiesdieomreden3en4wordengemplementeerd(bijvoorbeeld client/server-applicaties|ziex3.4.4).Gedistribueerdeapplicatieszijneen- applicatiesdieeen<strong>gedistribueerde</strong>structuurhebbenteimplementeren.Dit Destructuur<strong>van</strong>eengedistribueerdcomputersysteemmaakthetmogelijk<br />

applicatieuitgevoerdgaatworden.Eenparallelliserendecompilerzouken- toepassingenislarge-grained|erwordtrelatiefinfrequentgecommuniceerd. voudiginverschillendeprocessenteverdelen.Hetparallellisme<strong>van</strong>dezeDeprogrammeurisbeterinstaattothetnemen<strong>van</strong>ditsoortontwerpbenisoverdatabaseservers,werkstations,ennetwerktopologiemoetenhebben.<br />

Departitioneringinprocessenisafhankelijk<strong>van</strong>deomgevingwaarinde<br />

metexplicietparallellismeteimplementeren.Voorreden3en4iseentaal metexplicietparallellismegeschikt. slissingen.Bijeen<strong>gedistribueerde</strong>probleemstructuuriseenapplicatiegoed<br />

Dezezeggennietsoverdestructuur<strong>van</strong>deapplicatie.Hetkanzowelom large-alsomne-grainparallellismegaan,endepartitioneringinprocessen implementerenzijnsnelheidsverhogingenbetrouwbaarheid|reden1en2. Deandereredenenomeenapplicatieopeengedistribueerdsysteemte<br />

een(inbepaaldemate)parallelliserendecompilergeschikt,1anderekunnen bijdehuidigestand<strong>van</strong>decompilertechnologiebeterdoordeprogrammeur kanvoordehandliggen,ofjuistcomplexzijn.Sommigeapplicatieszijnvoor gepartitioneerdworden.Dekeuzevoorimplicietofexplicietparallellisme hangt<strong>van</strong>hetsoortprobleemaf.<br />

belangis. Vanwegedecomplexiteitenom<strong>van</strong>g<strong>van</strong>deproblematiekwordtparallellisme hierslechtszijdelingsbehandeld|voorzoverhetvoorhetonderwerp<strong>van</strong> Naarparallellismeenparallellealgoritmenwordtveelonderzoekverricht.<br />

desemantiek<strong>van</strong>taalconcepten|indezin<strong>van</strong>elegantie,exibiliteit,efnenworden.Inguur2.5enoppagina29isaangegevendatdekeuze<strong>van</strong>cientieentransparantie|bepalendisvoordemogelijkheidverschillendeDekeuze<strong>van</strong>detaalimpliceertwelkeproblemengemplementeerdkun- concepten/problemenecienttekunnenrepresenteren.Deverschillende lementendelevel5interfacemoetbestaan.2toepassingendiemenmoetkunnenimplementerenbepalenuitwelketaale- kunnenworden. applicatieseentaalgeschiktis. 2Of,andersom,detaalelementendiedeontwerpergekozenheeftbepalenvoorwelke 1Zoalsproblemendieineenfunctioneleoflogischetaal(alsmlenProlog)gespeciceerd<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 35


3.2.1Talenmetexplicietparallellismestellendeapplicatieprogrammeurinde <strong>Applicatie</strong>ontwikkeling<br />

gelegenheidzichexplicietmetdeverdelingin(pseudo-)parallelleprocessen<br />

maarlegtdeverantwoordelijkheidbijdeprogrammeur. bezigtehouden.Talenmetimplicietparallellismekomendichterbijhet parallellismebiedtdeprogrammeurmeermogelijkheden|hetisexibeler, `virtueleuniprocessor'ideaal<strong>van</strong>x2.3.3|zezijntransparanter.Expliciet<br />

bueerdesystemen.DoordateengedistribueerdsysteemisopgebouwduitNaastparallellismeisfouttolerantieeenbelangrijkkenmerk<strong>van</strong>gedistri- 3.1.2Fouttolerantie<br />

meerderegelijksoortigecomponentenkanmendoorhetbewustinbouwen <strong>van</strong>redundantiebijuitval<strong>van</strong>enkelecomponentendecontinuteit<strong>van</strong>een<br />

oogpunt<strong>van</strong>ecientieishetbeteralleendiedelen<strong>van</strong>deapplicatiefout- applicatieverhogen. termen<strong>van</strong>verwerkingskrachtencommunicatietijd(pagina51).Uithet bestendiguittevoerenwaarvoorhetechtnodigis,metnamebijapplicaties Hetaanbieden<strong>van</strong>eenfouttransparantelevel5interfacekostveelin<br />

bouwstenen(objecten)aantebiedenwordtdeexibiliteit<strong>van</strong>detaalver- gemplementeerdworden. dieomeenandereredendanbetrouwbaarheidopeengedistribueerdsysteem<br />

groot.Deprogrammeurkanzelfdegewensteafwegingtussenfoutbestendigheidensnelheid(ecientie)voordeapplicatiebepalen.Dekeuzevoor Doornietdegeheletaalfouttransparanttemakenmaarfouttolerante<br />

fouttolerantebouwstenenofeengeheelfouttransparantetaalis|netalsbij parallellisme|eenafwegingtusentransparantieenexibiliteitdiedoorde toepassingbepaaldwordt[Bal]. implementeren. eventueelgeheelafzien<strong>van</strong>hetgebruik<strong>van</strong>talendieditsoortprimitieven Voorapplicaties,waarbijfoutbestendigheidniet<strong>van</strong>belangiskanmen<br />

face:eensequentieletaal,eensequentieleuitgebreidmetparallelletaaleleErzijndriebenaderingenvoordeconcretevormgeving<strong>van</strong>delevel5inter- 3.2 Programmeertaal<br />

3.2.1Standaardsequentieletaal menten,eneenspeciaalvoor<strong>gedistribueerde</strong>omgevingenontworpentaal.(bijvoorbeeldCoffortran)teimplementerenontstaateenapplicatieont-<br />

Dooropeengedistribueerdoperatingsystemeenstandaardsequentieletaal wikkelomgevingwaaropmeninprincipebestaandeapplicatiesdirectkangerantzijn(nos-primitieven)moetenbestaandeprogramma'shieraandoordeaandeprogrammeuraangeboden.Wanneerdezesystem-callsniettranspabruiken.Afgezien<strong>van</strong>eventueelimplicietparallellismewordtdeextrafunctionaliteit<strong>van</strong>een<strong>gedistribueerde</strong>omgevingdoormiddel<strong>van</strong>system-calls<br />

36 programmeuraangepastworden. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Programmeertaal Demeestebestaandetalenzijninzo'nomgevinggebaseerdopexpli- 3.2.3<br />

vendezesystemcallsaanleidingtotcomplexeapplicatieprogramma's.Eenrallelleeenhedenpartitioneren.3Bijveeloperatingsystemszijnermeernos-primitievendangos-primitieven.Vanwegehunzwakkesemantiekgecietparallellisme:deprogrammeurmoethetprobleeminverschillendepa uitgaat.Wanneerhetoperatingsystemeenlogisch<strong>gedistribueerde</strong>virtuele grammeerparadigmavaak<strong>van</strong>sequentieleverwerkingeneenadresruimte machineaanbiedtmoetdeapplicatieprogrammeurzelfrekeninghoudenmet meerfundamenteelnadeel<strong>van</strong>standaardsequentieletalenisdathetpro-<br />

concurrency-problemenengescheidenadresruimten.<br />

komenvoorbeeldenhier<strong>van</strong>aanbod.Bijhetgebruik<strong>van</strong>eenbestaandetaal slechtsamengaan.Bijdebeoordelingscriteriavoorrpcsystemeninx3.4.2 grammeurs.Eennadeelisdatsequentieleen<strong>gedistribueerde</strong>conceptenvaakHetvoordeel<strong>van</strong>eenbestaandetaalisdebekendheidvoorapplicatiepro- 3.2.2Uitgebreidesequentieletaal algauwaanleidingtotgecompliceerdeprogramma's[Bal]. hangtdemate<strong>van</strong>transparantiesterkaf<strong>van</strong>hetoperatingsystem,engeeft<br />

Eenmogelijkheidomdetransparantie<strong>van</strong>hetgebruik<strong>van</strong>lowlevelnos- bestaandesequentieletaal.Deprimitievenvoorparallellisme,communicatie maarzijnindetaalgentegreerd.ConcurrentCenConcurrentPrologzijn primitieventeverhogenishettoevoegen<strong>van</strong>highlevelconceptenaaneen eneventueelfoutbestendigheidwordennunietalssystem-callsaangesproken<br />

deprogrammeurbekendeomgevinggentroduceerdworden.Hetnadeeldat voorbeelden<strong>van</strong>dezebenadering. temprimitievenverhoogdkanwordenwaarbijnieuweconceptenineenvoorsequentieleen<strong>gedistribueerde</strong>conceptenvaakslechtsamengaanblijftbeHetvoordeelisdatdeeventueelzwakkesemantiek<strong>van</strong>operatingsys- tussensequentieleenparallelletaalelementenontstaat[Bal]. 3.2.3Gedistribueerdetaal staan.Daarkomtbijdathierdoorvaakeentaalkundigslechteintegratiestaandetaalsomsmoeilijkteverwezenlijkenis,zijnertalenspeciaalvoorOmdatintegratie<strong>van</strong><strong>gedistribueerde</strong>ensequentieleprimitievenineenbe-<br />

parallelengedistribueerdprogrammerenontworpen.Dezetalenbevatten<br />

denadrukophetverhogen<strong>van</strong>detransparantie<strong>van</strong>nos-primitievenvoor neerdetaalimplicietparallellismeimplementeertzijnditconceptendieefalleenconceptendiegoedaansluitenop<strong>gedistribueerde</strong>omgevingen.Wan- rpctevertalen. interproces-communicatie,bijvoorbeelddoorzeinhighlevelconceptenals cientparallelliseerbaardoordevertalerzijn.Bijexplicietparallellismeligt<br />

zebeterinx3.2.3daninx3.2.1. [Bal].Omdatdezetalenspeciaalvoor<strong>gedistribueerde</strong>omgevingenontwikkeldzijnpassen naartalenmetimplicietparallellisme<strong>van</strong>wegedetransparantievoordeprogrammeur 3Sindsdeontwikkeling<strong>van</strong>parallellearchitecturenwordterveelonderzoekgedaan<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 37


3.3.1Hetvoordeel<strong>van</strong>dezetalenisdatalleprimitieven<strong>van</strong>detaalvoorge <strong>Applicatie</strong>ontwikkeling<br />

hetgroteaanbod|omennabijdehonderd|geeneenvoudigezaak. distribueerdeomgevingengeschiktzijn.Hetnadeelisdateenapplicatieprogrammeureennieuwetaalmetnieuweconceptenmoetleren.Erwordtveel onderzoeknaarditsoorttalenverricht.Dekeuze<strong>van</strong>eentaalis<strong>van</strong>wege<br />

zijnindeliteratuureenaantalcriteriabeschreven[Bal,Hoare,Mullender1]. 3.3 Voordebeoordeling<strong>van</strong>een<strong>gedistribueerde</strong>applicatieontwikkelomgeving Beoordelingscriteria<br />

Bijdebeoordeling<strong>van</strong>een<strong>gedistribueerde</strong>omgevingmoetengedistribueerdtendiemetgedistribueerdheidsamenhangenzijn:heidsaspectenenalgemeneomgevingsaspectenbeoordeeldworden.Aspec 1.ParallellismeExpliciet/impliciet,eenheid<strong>van</strong>parallellisme(grain),<br />

3.FouttolerantieFouttransparantie,fouttoleranteobjectenmetatomaire 2.Interproces-communicatieMessage-passing,data-sharing. scheduling.<br />

4.IntegratieIntegratie<strong>van</strong>desemantiek<strong>van</strong>sequentieleenparallelle/<strong>gedistribueerde</strong>primitieven. transacties,exceptions.<br />

Naastdezeaspectenmoeteenontwikkelomgevingbeoordeeldwordenop gebruikelijkeeigenschappen,diemetdeomgevingalsgeheelsamenhangen: 6.TypesecurityHetmaken<strong>van</strong>foutenmoetzoveelmogelijkdoordeom- 5.ComplexiteitDelevel5interfacemoetzoeenvoudigmogelijkzijn.<br />

7.EcientieTaalprimitievenmoetenecientuitgevoerdkunnenworgevingvoorkomenworden.8.OverdraagbaarheidDoorstandaardisatiekanhetoverzetten<strong>van</strong>applicatiestussenverschillendeplatformsvereenvoudigdworden.den.Hetdoel<strong>van</strong>decriteriaishetmogelijkmakendeSunomgevingtebeoordelen.Hiernawordt<strong>van</strong>devieraspectendiehetmeestmetgedistribueerdheid 3.3.1Parallellisme(1) inverbandstaanbeschrevenwelkemogelijkhedenervoorhetontwerp<strong>van</strong> eenlevel5interfacezijn.<br />

parallellisme.Sommigetalenproberenparallellismevolledigtransparantte Doordeaanwezigheid<strong>van</strong>meerdereprocessorenkunnenprocessentegelijkertijdwordenuitgevoerd.Eriseengrotevarieteitinbenaderingen<strong>van</strong> Parallellismeiseenfundamenteleeigenschap<strong>van</strong><strong>gedistribueerde</strong>systemen.<br />

38 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria maken.Anderetalenkennenexplicietetaalelementenomparallelleeenhe- 3.3.1<br />

denoplogischniveautespeciceren.Dezetalenzijnmindertransparant,<br />

hebben,enprocessendiedeprogrammeuraanverschillendeprocessoren Inzulketalenkunnenprocessenopdezelfdeprocessorvariabelengemeen dezin<strong>van</strong>exibiliteit)gaantalendieexplicietfysiekeprocessorenkennen. maarzebiedendeprogrammeurmeerexibiliteit.Nogeenstapverder(in<br />

heefttoegewezenkunnendatniet.4Decomplexiteit<strong>van</strong>zo'ntaalisgro- programmaafhankelijkwordt<strong>van</strong>deconguratie<strong>van</strong>eencomputersysteem. Hetverschiltussenimplicietenexplicietparallellismeishetalofnietoplevel5zichtbaarzijnvoordeprogrammeur.Implicietparallellismeisminderter,deexibiliteitechterook.Eennadeel<strong>van</strong>dezebenaderingisdateen eenheid<strong>van</strong>parallellisme exibeleninhogerematetransparant.<br />

bueerdetalenkanonderscheiden.IndevolgendelijstwordendemogelijkeDeeenheid<strong>van</strong>parallellismeiseenfundamenteelpuntwaaropmengedistri- ontwerpkeuzesbehandeld.<br />

ciet)alseenheid<strong>van</strong>parallellismeaan.Elkprocesheeftzijneigenhetbegrip`proces'.Veeloperatingsystemsbiedenhetproces(expli- ProcesDemeeste<strong>gedistribueerde</strong>procedureletalenzijngebaseerdop toestand,codeengegevens.Deinstructies<strong>van</strong>eenprocesworden<br />

lers,gegevensovergebruikterekentijd,entoestand<strong>van</strong>dochterprocesgenoemd.Hetgaathierbijvoorbeeldomledescriptors,signalhand- sequentieeluitgevoerd.<br />

sen.Eenproces-ofcontextswitchkostveeltijd.Sommigeoperating Processendieveeltoestandsinformatiebevattenwordenheavyweight<br />

systemsstaaneenonderverdelingtoeinkleinerelightweightprocessen (ofthreadsofcontrol).Lightweightprocessendeleneengemeenschappelijkeadresruimteentoestandencommunicerenviagemeenschappemenkunnenzeechtparallelwordenuitgevoerd.parallel(vaaknon-preemptive)uitgevoerd.Optightly-coupledsysteOpuniprocessorsenloosely-coupledsystemenwordenthreadspseudolijkevariabelen. (ziex2.3.1). large-grainparallellismeisgeschiktvoor<strong>gedistribueerde</strong>omgevingen Heavyweightprocessenzijngeschiktvoorlarge-grainparallellisme,en<br />

Eenobjectiseenonafhankelijkeeenheiddiezowelgegevensalsbewerkingenopdiegegevensbevatenmetdebuitenwereldviamessage ObjectHetbegrip`objectgeorienteerdprogrammeren'zorgtvoornet zoveelverwarringalsdeterm`gedistribueerdsysteem'.<br />

4Voorbeeldenhier<strong>van</strong>zijnsrenArgus. directbereikbaar.Hettype<strong>van</strong>eenobjectwordtzijnclassgenoemd. passingcommuniceert.Degegevenszijnalleenvoorhetobjectzelf<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 39


3.3.1Classeskunnenviainheritancealsuitbreidingen<strong>van</strong>eeneerdergede <strong>Applicatie</strong>ontwikkeling<br />

structuur<strong>van</strong>hetprogrammate<strong>van</strong>gen. tatieishetstructureren<strong>van</strong>groteprogramma's.Getrachtwordtde structuur<strong>van</strong>eenprobleemuitdewerkelijkheidzoveelmogelijkinde nieerdeclassopgebouwdworden.Hetprimairedoel<strong>van</strong>objectorienIneensequentieleobjectgeorienteerdetaalwordteenobjectactiefwanneerheteenboodschap<strong>van</strong>eenanderobjectont<strong>van</strong>gt.Parallellisme<br />

kanopdevolgendemanierengentroduceerdworden:<br />

{Laathetont<strong>van</strong>gendeobjectdoorgaannahetverzenden<strong>van</strong>het {Laatobjectenactiefwordenzondereersteenboodschapafte hoevenwachten.<br />

{Laatdeverzender<strong>van</strong>eenboodschapparallelaandeont<strong>van</strong>ger {Zendtboodschappennaarverschillendeobjectentegelijk. resultaat.<br />

aanelkobject.Deobjectenwordenactief[America].Dederdeme- Deeerstetweemethodeskomenneerophettoekennen<strong>van</strong>eenproces doorgaaninplaats<strong>van</strong>opantwoordtemoetenwachten.<br />

metasynchroneinplaats<strong>van</strong>synchronemessage-passinggemplementhodegebruikteenmulticast(ziepagina44).Delaatstemethodekan StatementOccambiedtdemogelijkheidomstatementsinblokkente telatenbestaan. teerdworden,ofdooreenenkelobjectuitmeerderethreadsofcontrol<br />

groeperendieparallelofsequentieelmoetenwordenuitgevoerd.Deze<br />

Dezemethodebiedtweinigondersteuningvoorhetstructureren<strong>van</strong> <strong>van</strong>hetparallellisme<strong>van</strong>eenprogrammazijnduidelijkaangegeven. rallellismevoorne-graintoepassingentespeciceren.Begineneindevormbiedtdemogelijkheidopeenlaagabstractieniveauexplicietpa- <strong>gedistribueerde</strong>programma's.Hetaantalparallelleeenhedenisat compile-timegexeerd.<br />

reletalenwaarinfunctiesbijvoorbeeldviaglobalevariabelenenpoinlismedeexpressie.IneenfunctioneletaalhebbenfunctiesgeensideExpressieInparallellefunctioneletalenisdeeenheid<strong>van</strong>parallelterselkaarkunnenbenvloeden.Doordeafwezigheid<strong>van</strong>side-eects maakthetnietuitinwelkevolgordefunctiesgeevalueerdworden| eects5|netalswiskundigefuncties.Ditintegenstellingtotprocedu<br />

functieszijnidempotent.Indeexpressieh(f(3,4),g(8))kunnenf ophetresultaat<strong>van</strong>fengmoetwachten. Dezevorm<strong>van</strong>implicietparallellismeisne-grained.Hierdooriszij ralleluitgevoerdworden.Deenigebeperkingisdathmogelijkerwijsengparallelgeevalueerdworden.Allefunctieaanroepenkunnenpa- 5Ziepagina62. bueerdearchitecturenisdecommunicatieoverheadtegroot.geschiktvoorshared-memorymultiprocessors(x2.3.1).Voorgedistri- 40 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria ClauseLogischetalenbestaanuitclausesdiewaarofnietwaarzijn. 3.3.1<br />

gecommuniceerdwordt. cietne-grainparallellisme|hetisparallellismewaarbijrelatiefvaakookweland/orparallellismegenoemd.Hetiseenvorm<strong>van</strong>impli- Hetevalueren<strong>van</strong>dezeclauseskanparallelgeschieden.Ditwordt<br />

Bijdeimplementatie<strong>van</strong>logischetalenwordtgebruikgemaakt<strong>van</strong><br />

conclusie backtracking.Erisgeenbevredigendeoplossingvoordeecientieproblemen<strong>van</strong>parallellevormen<strong>van</strong>backtrackinggevonden. parallellismenietvoorloosely-coupled<strong>gedistribueerde</strong>omgevingengeschikt. Omlarge-grainparallellismeteimplementerenwordtvaakvoorprocessen ofobjectengekozen.Dekeuzetussenobjectenofprocessenalseenheid<strong>van</strong> Functioneleenlogischetalenzijnvolgens[Bal]<strong>van</strong>wegedegrain<strong>van</strong>het<br />

parallellismeiseerder<strong>van</strong>hetsoortapplicatieafhankelijkdan<strong>van</strong>taalont- scheduling werpoverwegingen[Bal].overdebeschikbareprocessorenteverdelen.Ineen<strong>gedistribueerde</strong>omgeprocessortijdaanprocessenis<strong>van</strong>grootbelangbijhetontwerp<strong>van</strong>eengedistribueerdsysteem.Detaak<strong>van</strong>deschedulerisdebelastingoptimaal<br />

Destrategiedietengrondslagligtaandetoekenning<strong>van</strong>processorenen<br />

schedulingstrategieen.Deglobaleschedulingbepaaltwelkeprocessenaan vingvaltdeschedulingproblematiekintweedelenuiteen:globaleenlokale<br />

problemenisveelliteratuurgeschreven[Bal]. <strong>van</strong>deprocessortijd<strong>van</strong>eenenkeleprocessoroverdeprocessen.Overbeide welkeprocessorwordentoegewezen.Lokaleschedulingbepaaltdeverdeling<br />

Eerstwordenparallelleeenhedenaanfysiekeprocessorentoegekend.Daarna wordtmeteenprioriteitenmechanismedelokalescheduling<strong>van</strong>processenop elkeprocessorbepaald. Hettoekennen<strong>van</strong>processenaanprocessorengaatintweestappen.<br />

deschedulingwordtvastlegd.Ditkan(a)atcompile-time,(b)atrun-time, of(c)inhetgeheelnietvastzijn. Zowelbijlokalealsbijglobaleschedulingspeeltdevraagopwelkmoment<br />

kandezegebruikmaken<strong>van</strong>hetfeitdatbepaaldeprocessengeheugendelen. programmeurweetwelkeprocessenopdezelfdeprocessordraaien.Hierdoor Wanneerdetoekenningatrun-timeplaatsvindt,krijgthetprocesbijcre- Heteerstegevalishetminstdynamisch,maarheefthetvoordeeldatde<br />

atieeenprocessortoegewezen.Dezeoplossingmaakteenecientergebruikneninditgeval<strong>van</strong>veranderendesysteembelastingengebruikmakenom<br />

<strong>van</strong>dehardwareresources<strong>van</strong><strong>gedistribueerde</strong>systemenmogelijk.<br />

steedseenzoadequaatmogelijk|snelofbetrouwbaar|gebruik<strong>van</strong>dehardprocessornaardeandere,wordtdoorweinigtalengeboden.Processenkun- Dederdemogelijkheid,migratie|verplaatsing<strong>van</strong>processen<strong>van</strong>deene<br />

waretemaken. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 41


3.3.2 conclusie <strong>Applicatie</strong>ontwikkeling<br />

plicatiezalmenkiezenvoormaximalesnelheiddoorparallellisme,ofvoormaximalebeschikbaarheiddoorreplicatie<strong>van</strong>processen.Aangezienhetrun- Bijdetoewijzing<strong>van</strong>processenaanprocessorenmoeteenafweginggemaakt wordentussensnelheidenbetrouwbaarheid.Afhankelijk<strong>van</strong>hetsoortaptimesysteem<strong>van</strong>detaalgeenkennisoverdeapplicatieheeft,biedteentaal diedekeuzeaandeapplicatieprogrammeurlaatmeermogelijkhedenvoor complexerdaneentaalwaarindetoekenningsstrategietransparantis,maar hetoptimaliseren<strong>van</strong>deperformance.Zo'ntaalmetexplicieteschedulingis ookexibeler. dehiervoorbesprokenmogelijkhedenimplementeren. Indevolgendetabelwordtterillustratieeenaantaltalenopgesomddie<br />

primitieveParallellisme[Bal] eenheid <strong>van</strong> proces object statement Ada,ConcurrentC,Linda,nil Emerald,ConcurrentSmalltalk Occamvoorbeeldtaal<br />

parallellismeexpressie scheduling globale clause compile-timeOccam,StarMod run-time ParAl,fx-87<br />

migratie ConcurrentProlog,parlog ConcurrentProlog,ParAl<br />

3.3.2Interproces-communicatie(2) Emerald<br />

Bijeenprogrammadatinmeerdereprocessenverdeeldismoetendepro-<br />

viaexplicieteprimitievenplaats.Bijgemeenschappelijkevariabelenverzorgt opeenlogisch<strong>gedistribueerde</strong>virtuelemachine,ofoplogischgemeenschappelijkgeheugen.Ineenlogisch<strong>gedistribueerde</strong>taalvindtdecommunicatiegrammadelengegevensuitwisselen.Eenlevel5interfacekangebaseerdzijnvormiseenvoudigvoordeprogrammeur|transparantie|maarmoeilijkef- devertalerdecommunicatietussendeprocessen(impliciet).Dezelaatste cientteimplementeren.<br />

uitkomstmoet<strong>van</strong>BnaarA|communicatie.WanneerAdeuitkomstnodig Aheeftdeuitkomst<strong>van</strong>eenberekeningdieprocesBuitvoertnodig.Deze tenteonderkennen:communicatieensynchronisatie.Bijvoorbeeld:procesAangegevensuitwisselingtussendelen<strong>van</strong>eenprogrammazijntweekanmetexplicieteboodschappen(message-passing)endaar<strong>van</strong>afgeleideconcepten,enmetlogischgemeenschappelijkevariabelen.6 heeftmaarBnognietklaarismoetAeropkunnenwachten|synchronisatie.<br />

6Eenlogischgemeenschappelijkevariabeleofshareddataisietsandersdaneengemeen- Gegevensuitwisselingkanoptweemanierenwordengemplementeerd:<br />

schappelijke,logischevariabele.Ziedaarvooronderhetkopje`shareddata'oppagina45. 42 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria message-passing 3.3.2<br />

primitieveuitvoerenwaarinhijaangeeftwelkeboodschappenhijaccepteertgerplaatsvinden.Bijexplicieteont<strong>van</strong>gstmoetdeont<strong>van</strong>gereenacceptenwelkeactiesermoetenwordenuitgevoerdwanneereenboodschapaanDeont<strong>van</strong>gst<strong>van</strong>eenboodschapkanexplicietofimplicietdoordeont<strong>van</strong>komt.Bijimplicieteont<strong>van</strong>gstwordterautomatischcodebijdeont<strong>van</strong>ger uitgevoerd.Meestalwordteennieuwethreadofcontrolopgestart.Ditalles istransparantvoordeverzender. wordenkanmeninviercategorieenonderverdelen. Desoortenmessage-passingdiedoor<strong>gedistribueerde</strong>talenondersteund<br />

<strong>van</strong>communicatie.Deverzendervoerteensend-primitieveuitende Point-to-pointEenpoint-to-pointmessageisdeeenvoudigstevorm <strong>van</strong>message-passing.Point-to-pointmessageszijneenlowlevelvorm ont<strong>van</strong>gerverwerktdeboodschapdooreenreceive-primitieveuitte voeren.<br />

verzendingwachtdeverzenderhiernietop. schapopeenont<strong>van</strong>gstbevestiging<strong>van</strong>deont<strong>van</strong>ger.Bijasynchroneverzender.Bijsynchroneverzendingwachtdeverzender<strong>van</strong>eenbood- Debelangrijksteontwerpkeuzeisdevorm<strong>van</strong>synchronisatiebijde<br />

Doorhetuitvoeren<strong>van</strong>eensynchroneont<strong>van</strong>gstprimitievewachtde ont<strong>van</strong>geropeenboodschap.Asynchroneont<strong>van</strong>gstprimitievenstellen<br />

asynchroneverzendingenont<strong>van</strong>gst,synchroneverzending/asynchro- ofereenboodschapis(polling). deont<strong>van</strong>gerinstaatzondereventueelgeblokkeerdtewordentekijken<br />

devormenmetasynchroneont<strong>van</strong>gstinweinigtalentoegepast.Asynneont<strong>van</strong>gst,enasynchroneverzending/synchroneont<strong>van</strong>gst)worden Vandeviermogelijkecombinaties(synchroneverzendingenont<strong>van</strong>gst,<br />

seld,processensynchroniserenook.Synchroneverzendingisnietzo voorhetlezen<strong>van</strong>boodschappentezijn[Lara]. Bijsynchronemessage-passingwordennietalleengegevensuitgewischroneont<strong>van</strong>gstblijkt|behalvevoorpolling|geenpraktischemanier Asynchronecommunicatieisingewikkelder,zowelquaimplementatie woordnodigis.<strong>van</strong>gerdeboodschapgeaccepteerdheeft,ookwanneerergeenantconcurrentalsasynchroneomdatdeverzenderaltijdwachttotdeont- deverzendernietwachtopdeont<strong>van</strong>gerkanhetvoorkomendater meerdereberichtenbijdeont<strong>van</strong>gerineenwachtrijstaan.Zewor- alsgebruik.Bijditmodeltredensemantischeproblemenop.Daar dendoorhetoperatingsystemofhetrun-timesysteem<strong>van</strong>detaalgebuerd.Voorhetbeheersen<strong>van</strong>eenbuer-overowkunnendeontbaarheid<strong>van</strong>deverbindingzoalsdeprogrammeurdezeziet.Menboodschapviaeenfoutmeldinglatenfalen.Ditverlaagtdebetrouwwerperskiezenuittweemogelijkheden.Menkandeoverdracht<strong>van</strong>de <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling kanookowcontroltoepassenendeverzenderlatenwachtentotde 43


3.3.2ont<strong>van</strong>gerweerinstaatisboodschappenteverwerken.Hiermeeintro <strong>Applicatie</strong>ontwikkeling<br />

datdeprogrammeurhierrekeningmeehoudt. duceertmensynchronisatieendemogelijkheid<strong>van</strong>deadlockszonder Desynchronevormiseenvoudigerteimplementerenenmakkelijkerin enont<strong>van</strong>gerkunnenimmersnietgelijktijdigwordenuitgevoerd. hetgebruik,maarverlaagtdemate<strong>van</strong>parallellisme.Deverzender<br />

rentezenden.Ditkanhetgevalzijnbijhetlokaliseren<strong>van</strong>eenserverishetsomswenselijkomeenboodschapaanallebeschikbareprocesso- One-to-manyVooroperatingsystemsenrun-timesystemen<strong>van</strong>talen dieeenbepaaldedienstaanbiedt.Ookvoorhetconsistentbijwerken wenselijk[Birman].Talendielogischgemeenschappelijkegegevens implementerenmakeninternvaakgebruik<strong>van</strong>multicast.Detaalis <strong>van</strong>gerepliceerdegegevensiseenbroadcastcommunicatieprimitieve<br />

onderscheidtgebuerdeenongebuerdebroadcastsystemen.Inhet Veelnetwerksoftwarebiedteenbroadcast-ofmulticastfaciliteit.Men biedtdeprogrammeurdezeprimitievenietzelfaan. dangemplementeerdmetbehulp<strong>van</strong>demulticast-primitieve.Detaal<br />

laatstegevalont<strong>van</strong>genalleenprocessendieeropwachteneenbood- ont<strong>van</strong>gen. Rendez-vousPoint-to-pointenone-to-manymessageskunnengebruikt schap.Bijgebuerdesystemenzalelkprocesuiteindelijkdeboodschapmodel(x3.4.4),vereisentwee-wegcommunicatie.Derendez-vouscongen.Veelinteractievormen,zoalsvraag/antwoordbijhetclient/serverwordenomeenrichtingscommunicatietussentweeprocessenteverzorstructiebiedteenhighlevelalternatiefvoortweepoint-to-pointmes<br />

spaghettiprogramming." ofasthedistributedsystem'sanswertothegotostatement:parallel p.604]zegt:"Separatesendandreceiveprimitivescanbethought sages.Rendez-vousheefteenkrachtigersemantiek.[Tanenbaum5,Hetrendez-vousmodelkenteenclient(zender)eneenserver(ont<strong>van</strong>-<br />

interactiemoetenwordenuitgevoerd.Eenclientkanmeteenentry ger)kant.Eenserverkaneenentrydeclareren(eensoortproceduredeclaratie)enmeteenacceptstatementactiesspecicerendiebijeen deserverofdeserverwachtopdeentrycall<strong>van</strong>declient.Nadatde Deinteractievindtsynchroonplaats:declientwachtopdeaccept<strong>van</strong> interactieheeftplaatsgevondenwordenclientenserververderparallel call(eensoortprocedureaanroep)parametersnaardeserversturen.<br />

uitgevoerd.Indeliteratuurzijnreal-timetoepassingen<strong>van</strong>Ada's rendez-vousbeschreven[Bal]. rpcisnietzoalsrendez-vousvoorreal-timetoepassingenbedoeld. RemoteprocedurecallDerpciseenanderetwee-wegprimitieve.De Eenrpciseensynchronecommunicatievorm.Eenrpclijktophet<br />

44rendez-vousconceptineenbekendeabstractie.Hetdoel<strong>van</strong>rpcis omeenprocedureabstractieaantebiedenwaarbijdecommunicatie <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria transparantisvoordeapplicatieprogrammeur.Hetverschilmetde 3.3.2<br />

conclusie processenafspeelt.Inx3.4wordtderpcverderbesproken. sequentiele,lokaleprocedureisdatrpczichtussentweeverschillende<br />

ofasynchronecommunicatiegebruikt.Hetprogrammerenmetsynchrone groteremate<strong>van</strong>parallellismetebereiken.Daarnaastspeeltookhierde communicatieprimitieveniseenvoudiger.Metasynchroneprimitieveniseen Hetbelangrijkstekeuzeprobleembijmessage-passingisofmensynchrone<br />

Dekeuzehangtaf<strong>van</strong>desoortapplicatiediemenwilgaanimplementeren [Bal]. ges),endetransparantie<strong>van</strong>highlevelprimitieven(rpcofrendez-vous).keuzetussendeexibiliteit<strong>van</strong>lowlevelprimitieven(point-to-pointmessabijmessage-passingeenprobleem(ziex3.4.5).Naastcommunicatieensyn- shareddata Voorsommigetoepassingenishetontbreken<strong>van</strong>globaletoestandsinformatie<br />

eenvoudigewijzeglobaletoestandsinformatieteprogrammeren. chronisatiemetboodschappenkanmenookshareddata,gemeenschappelijke variabelen,voorcommunicatiegebruiken.Hiermeeishetmogelijkomop<br />

dersteunenzulkepseudo-parallelleprocessenencommunicatie-ensynchroparallelopeenprocessoruitgevoerdworden.Veel<strong>gedistribueerde</strong>talenoncommunicatie-ensynchronisatiemechanismetussenprocessendiepseudo- Hetgebruik<strong>van</strong>gemeenschappelijkevariabelenisreedslangbekendals<br />

nisatiemechanismen.DemutexinArgusensemaforeninsrzijnhier<strong>van</strong>een voorbeeld[Bal]. verschillendeprocessorenondersteunen.Ineengedistribueerdcomputersysteemwordendezemodellen|bijafwezigheid<strong>van</strong>fysiekgemeenschappelijkgeheugen|metmessage-passinggemplementeerd.Hetnabootsen<strong>van</strong>ge- Erzijnooktalendiegemeenschappelijkevariabelentussenprocessenop<br />

meenschappelijkgeheugenopfysiekearchitecturendieditnietbezitten(guur2.4)heeftvoor-ennadelen.Eenvoordeelisdatgemeenschappelijkebijone-to-manymessages|gegevenstussentweespeciekeprocessenuit- variabelenvoorelkprocestoegankelijkzijn,terwijlboodschappen|behalve wisselen.Hettoekennen<strong>van</strong>eenwaardeaaneengemeenschappelijkevaria verstrijkttussenverzendingenont<strong>van</strong>gst. belewordtconceptueeldirectgeeectueerd,terwijlbijmessage-passingtijdfysiekgeheugenop<strong>gedistribueerde</strong>systemeneenslechteresponstijdople<strong>van</strong>gemeenschappelijkegegevensopteleggen.In[Bal]wordendriemevert.Ditwordtopgelostdoorbepaalderestrictiesaandetoegankelijkheid Eennadeelisdathetdirectsimuleren<strong>van</strong>devolledigesemantiek<strong>van</strong><br />

thodenbeschrevenomgemeenschappelijkevariabelenop<strong>gedistribueerde</strong> computersystementeimplementeren:<strong>gedistribueerde</strong>gegevensstructuren,<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling gemeenschappelijkelogischevariabelenengemeenschappelijkegegevensobjecten.Daarnaastzijnerparadigma'svoordeimplementatie<strong>van</strong>gemeen- 45


3.3.2 schappelijkgeheugenopoperatingsystemniveau[VanRenesse]. <strong>Applicatie</strong>ontwikkeling<br />

<strong>gedistribueerde</strong>systemen. tiekalsgewoneglobalevariabelen|endemogelijkheid<strong>van</strong>eeneciente implementatieopsystemenzonderfysiekgemeenschappelijkgeheugen| Hetontwerpdoelistransparantievoordegebruiker|dezelfdeseman-<br />

overprocessorenmetgemeenschappelijkfysiekgeheugenbeschikken GemeenschappelijkfysiekgeheugenParallellecomputersystemendie zijnnietgedistribueerd.7Zehebbenhetvoordeeldatlezenenschrijven <strong>van</strong>gegevens(metbehulp<strong>van</strong>level2loadenstoreopdrachten)voor elkprocessnelplaatsvindt.Wanneermeerdereprocessendezelfdege-<br />

slechtseenprocestegelijkeengeheugenlokatiebenaderen. voordoen.Hiervoorkanmenoplevel2niveau|`inhardware'|bus heugenlokatiegelijktijdigwillenraadplegenkunnenrace-conditieszich lockingtoepassen.Buslockingiseenvorm<strong>van</strong>mutex.Hiermeekan<br />

heugenisfunctioneelidentiekaangemeenschappelijkfysiekgeheugen.GemeenschappelijkvirtueelgeheugenGemeenschappelijkvirtueelge- Hetverschilisdatdeprocessorennietviaeenbusmaarviaeennetwerk verbondenzijn.Hetverschilintoegangstijd<strong>van</strong>dezemediabedraagt ongeveereenfactor104.Wanneerelkeloadofstore<strong>van</strong>eenpro- op.Daaromwordthetgeheugeninsegmenten(pagina's)opgedeeld. cesviahetnetwerkzougaanlevertditeenonacceptabeleresponstijd<br />

race-conditiesendeadlockrekeningwordengehouden[VanRenesse]. dat<strong>van</strong>deandereprocessorverplaatst.Bijdezeverzoekenmoetmet unit<strong>van</strong>eenprocessor8<strong>van</strong>hetprimairegeheugen<strong>van</strong>deenenaar Dezepagina'swordenbijeenpage-fault<strong>van</strong>dememorymanagement<br />

Voortoepassingendieveelcentralevariabelen|ofveelverschillende<br />

beertmenindevolgendedriebenaderingeneenacceptabeleresponssemantiek<strong>van</strong>primairgeheugennietvolledigteondersteunenproeelgeheugeneentetrageresponsop[VanRenesse,Bal].Doordegeheugenlokaties|moetenbijwerkenlevertgemeenschappelijkvirtu- GedistribueerdegegevensstructurenDetaalLindaimplementeerteen teverwerkelijken. distributeddatastructuregenaamd`TupleSpace'.Naasthunlokalegeheugenbeschikkenprocessenovereenlogischglobaalgeheugenwaaringeenadresofindexmaarwordenviaassociatieveadresseringgedenti- men<strong>van</strong>viaeenbeperktaantaloperatiesgegevensindevorm<strong>van</strong> EentupleisvergelijkbaarmeteenrecordinPascal.Tupleshebben tupleskanopslaan.<br />

operatiesoptuplesgedenieerd:in,outenread.Metoutplaatst mentuplesindeTuplesSpace,metinwordenzegelezeneneruit verwijderd,enmetreadwordenzegelezen.Omdewaarde<strong>van</strong>een ceerd.Tupleswordenopbasis<strong>van</strong>huninhoudgevonden.Erzijndrie<br />

468Zie[DeBruin,Tanenbaum1]vooreenbeschrijving<strong>van</strong>pagedvirtualmemory. 7Zezijnvoordevolledigheidtochindezeopsommingopgenomen. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria variabeleteveranderenmoeteenineneenoutoperatieuitgevoerd 3.3.2<br />

parant.plesoverdeprocessoren.Voordeapplicatieprogrammeurisdittrans worden.<br />

Eennadeel<strong>van</strong>deTupleSpace<strong>van</strong>Lindaishetontbreken<strong>van</strong>eenuniHetrun-timesysteem<strong>van</strong>detaalverzorgtdeverspreiding<strong>van</strong>detuformewijze<strong>van</strong>representeren<strong>van</strong>gegevensstructurenalseenvector. Eenecienterepresentatiewijzedieeenhogemate<strong>van</strong>parallellisme<br />

meertijddanoperatiesoplokalevariabelen[Bal]. meur.Eenanderpuntisdecommunicatieoverhead<strong>van</strong>Linda'sruntimesysteem.OperatiesopTupleSpacevariabelenkostenbeduidendtoestaatvraagteenniettrivialeoplossing<strong>van</strong>deapplicatieprogram- Dooreenbeperktesemantiek<strong>van</strong>degemeenschappelijkegegevenste implementerenmethighlevelprimitievenwordteengrotereecientie Gemeenschappelijke,logischevariabelenConcurrentPrologenparlog bereiktdanbijgemeenschappelijkvirtueelgeheugen.<br />

Menkanzealscommunicatie-ensynchronisatiemechanismegebrui- waardeaanistoegekendkandezenietmeerveranderdworden. bezittendesingleassignmenteigenschap.Wanneerereenmaaleen zijntalendiegebaseerdzijnopsharedlogicalvariables.Dezevariabelen<br />

ralleldoorprocesP1,P2enP3opgelostworden.ZogauweenproceseenwaardeaanXtoekentkunnendeandereprocessenditgebruiken.EenproceskrijgthetrechtomeenwaardeaanXtoetekennen.ken.Deverenigingdoel_1(X,Y),doel_2(X,Y),doel_3(X)kanpa gemeenschappelijkevariabeleXiseencommunicatiekanaaltussende processen. Hetmodelleren<strong>van</strong>client/servertoepassingenmetmeerdereclients Deanderewachtenzolangopdateneproces(synchronisatie).De<br />

schappelijke,logischevariabelen[Bal].lijkomeenhelderenduidelijkprogrammateschrijvenmetgemeenperservergeeftaanleidingtotingewikkeldeconstructies.Hetismoei- entiteitendiegedistribueerdgegevenskunnenbevatten.Daarobjecten GemeenschappelijkegegevensobjectenOppagina39isdeprocedurele kant<strong>van</strong>objectenbesproken.Objectenkanmenookbeschouwenals zelfdetoegangtothungegevensbewaken,kunnenzedesynchronisatieregelen<strong>van</strong>andereprocessen(objecten)dietoegangtotdiegege isdetaak<strong>van</strong>hetrun-timesysteem<strong>van</strong>detaaleenecienteverdeling Deplaats<strong>van</strong>dezeobjectenistransparantvoordeprogrammeur.Het pseudo-parallelleprocessendooreenmonitor. venswensen|analoogaandesynchronisatie<strong>van</strong>variabeletoegang<strong>van</strong><br />

eenprocessor)metsimpelelowlevel(level2)loadenstoreoperaties Detoegangtotvariabelenwordtbijlokalevariabelen(variabelenop <strong>van</strong>objectenoverprocessorenteverzorgen.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 47


3.3.2verricht.Voor<strong>gedistribueerde</strong>systemenisdezeoplossingteinecient. <strong>Applicatie</strong>ontwikkeling<br />

loadenstore.Zewordenslechtseenmaalpervariabeletoegang<strong>van</strong> conditiestevoorkomen.Dezeoperatieszijn<strong>van</strong>eenhogerniveaudan opdegegevens<strong>van</strong>eenobjectdenierenomhetoptreden<strong>van</strong>race InOrca[Bal]moetdeapplicatieprogrammeurzelfondeelbareoperaties<br />

FilesystemenDebekendstemanieromgegevensuittewisselenis eenobjectuitgevoerdengevenzomindercommunicatieoverhead.<br />

<strong>gedistribueerde</strong>omgevingenmetsynchronisatieprimitievenalslocking schrijvenenverwijderen.Daarbijwordenle-systemeninmulti-useren voorconcurrency-beheersinguitgerust. viabestanden.Bestandsoperatieszijnonderanderemaken,lezen,<br />

standsoperatiesgebaseerd[Rochkind].Eenbestandisinbeginseleeneenbeperktaantaloperatieszijntoegestaan.9Desnelheid<strong>van</strong>be- speciaaltypeobjectwaaropindemeesteoperatingsystemsslechts Veeltraditionelepseudo-parallelleinterproces-communicatieisopbestandsoperatiesisvaakdoordeoverhead<strong>van</strong>hetoperatingsystem<br />

aanmerkelijkminderdandie<strong>van</strong>geheugenoperaties.Voorsommige<br />

DatabasesInhetdatabaseparadigmawordengegevensinrecordsge- viahetlesysteemvoldoendesnel[VanRenesse]. toepassingenmetlarge-grainparallellismeisinterproces-communicatie<br />

ofkey.Oprecordszijncreatie,lees,wijzigenverwijderoperatiesgedegroepeerd.Hetadres<strong>van</strong>eenrecordiseenuniekveldgenaamd`sleutel'bruikerstegelijk(concurrency).voorom<strong>van</strong>grijketabellenenfouttransparantetoegang<strong>van</strong>veelge- [Date].Databasemanagementsystemen(dbms)biedenfaciliteiten nieerd.RecordswordeninhetrelationelemodelintabellengeordendVoortoepassingendiesnelletoegangtotminderom<strong>van</strong>grijkegegevens-<br />

totgegevensdienietopeendatabaseparadigmastructuurgebaseerd tribueerd|nietgeschikt.Anderemodellenvoorfouttolerantetoegang zijnwordeninx3.3.3beschreven. verzamelingenvereisenzijnrelationeledatabases|aldannietgedis<br />

conclusie Volledigetransparantieenecientiezijnvoorveelapplicatiesniettebereiken.Detoegestanebewerkingenopgemeenschappelijkegegevenszijnbemessage-passingextensies<strong>van</strong>conventionele,procedureletalenbetergeperktofdeprogrammeurmoetzezelfspeciceren. Procedureletalengeldenalsexibelerdananderetalen[Bal]. schikt.Dezwakkesemantiek<strong>van</strong>shared-datatalenwordtdanvermeden. Voorapplicatiesdiegeengemeenschappelijkevariabelenvereisen10zijn<br />

geheugenoperatiesmogelijk[Tanenbaum1]. shared-datatalenteprogrammeren(x3.4.5). 10Integenstellingtotsommigeoptimaliseringsvraagstukken:dezezijneenvoudigerin 9Inoperatingsystemsmetmemorymappedlesalsmulticszijnallelevel2primair<br />

48 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria Indevolgendetabelwordtterillustratieeenaantaltalenopgesomddie 3.3.3<br />

dehiervoorbesprokenmogelijkhedenimplementeren.<br />

primitieveCommunicatie[Bal] messagerendez-vous passingremoteprocedurecall point-to-pointmessages csp,Occam,nil Ada,ConcurrentC dp,Concurrentclu,lynx voorbeeldtaal<br />

shared data one-to-manymessages <strong>gedistribueerde</strong>variabelen gemeenschappelijkeobjecten gemeensch.logischevariabelenConcurrentProlog,parlog bsp,StarMod Linda Orca<br />

tribueerdesystemenfouttolerantie.Doorgegevensenprocessenopverschil 3.3.3Fouttolerantie(3)<br />

lendeprocessorenteduplicerenkandebetrouwbaarheidenbeschikbaarheid <strong>van</strong>eenapplicatievergrootworden[Mullender1]. Volgensx2.1.4enx2.3.3iseentweedefundamenteleeigenschap<strong>van</strong>gedismate<strong>van</strong>fouttolerantietebiedendangecentraliseerdesystemen.Ontwerpers<strong>van</strong>eentaalkunnenvoorfouttolerantieuitdriebenaderingenkiezen:<br />

(a)allesaandeprogrammeuroverlaten,(b)atomairetransactiesaanbieden, Gedistribueerdecomputersystemenzijnpotentieelinstaateenhogere<br />

deprogrammeur of(c)eenfouttransparantrun-timesysteemaanbieden.Dezedriebenaderingenwordenhieronderbesproken.Voortaalontwerpersishetnegeren<strong>van</strong>demogelijkheid<strong>van</strong>fouteninlagerevirtuelemachinesdesimpelsteoplossing.Voorsommigetoepassingen isditaanvaardbaaromdatprocessor-enanderefoutenzeldenvoorkomen [Coulouris]. biedenfoutenzelfadequaataftehandelen.Wanneerhetoperatingsystem ofhetrun-timesysteem<strong>van</strong>detaaleenfoutdetecteertkanhetprogramma opbasis<strong>van</strong>defoutcode<strong>van</strong>eenprocedureactieondernemen.Eenvariant Eenandereoplossingisdeapplicatieprogrammeurdemogelijkheidte<br />

resulteertinduidelijkerprogrammatekstomdatdecodevoordeuitzonde- doorhettaal-run-time-systeembuitenhetprogrammaomaangeroepen.Dit lervoorbepaaldesoortenfoutenteschrijven.Dezeexceptionhandlerwordthieropisdeprogrammeurdemogelijkheidtebiedeneenexceptionhand- applicatiekandeexceptionserverlatenwetenwelkeactieserinhetgeval<strong>van</strong> bepaaldecalamiteitenondernomenmoetenworden.Hetoperatingsystem ringssituatiesniettussendecode<strong>van</strong>heteigenlijkealgoritmestaat. Erzijnsystemendieexceptionscentraliserenineenexceptionserver.Een<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 49


3.3.3 zendtfoutmeldingennietmeernaardeapplicatie,maarnaardeexception <strong>Applicatie</strong>ontwikkeling<br />

server. kijktperiodiekofvoorafgeregistreerdeprocessennogbestaan.Zoniet,dan hetoperatingsystemervoordatbelangrijkefunctiessteedsinhetsysteem wordteennieuweversie<strong>van</strong>hetprocesopgestart.Opdezewijzezorgt Eenandermechanismeisdebootserver<strong>van</strong>hetAmoebasysteem.Deze<br />

gina62)kanbijeenprocessorfoutdezelfdeprocedureeenvoudigaaneenplicatie.Wanneereenprocedureidempotentis(geenside-eectsheeft,pa aanwezigzijn[Coulouris].<br />

andereprocessorwordenaangeboden.Wanneereenproceduresideeects Deacties,diedeprogrammeurmoetnemen,verschillenpersoortap-<br />

deprocedurenaeenfoutprecieszijnbijgehoudenwelkesideeectshebben plaatsgevondenenwelkenogniet.Voortoepassingsprogramma'sisheteen- heeft|zoalseengetalineenbestandveranderen|moetbijherstarten<strong>van</strong> voudigerdezeproceduresineentaalmetmeerfaciliteitenophetgebied<strong>van</strong> atomairetransacties fouttolerantieteschrijven.<br />

Verschillendesoortenapplicatiesstellenverschillendeeisenaansnelheiden bedrijfszekerheid.Omdezeredenzijneromgevingendiedeapplicatieprogrammeurdemogelijkheidgevenomzelfdebenodigdemate<strong>van</strong>bedrijfsvoudigddoorfaciliteitenalsatomairetransacties. biedenkunnenidempotentetoepassingeneenvoudigfouttolerantgemaakt zekerheidtekiezen.Opsystemendienauwelijksfaciliteitenopditgebiedworden.Vooralgoritmesmetside-eectswordtdeimplementatievereenhetprogrammeren<strong>van</strong>fouttoleranteapplicatiesmetsideeectsmindercomplex,arbeidsintensiefenfoutgevoelig. Talendieondeelbareoperaties|atomairetransacties|aanbiedenmaken<br />

wordenuitgevoerdkandeprogrammeurdeconsistentie<strong>van</strong>gegevensobjec- uitvoeren.11Dooraantegevenwelkeoperatiesnietlos<strong>van</strong>elkaarmogen eenverzamelingparallelleprocessendieoperatiesopgegevenselementen Eengedistribueerdprogrammametside-eectsistebeschouwenals<br />

tenwaarborgen[Date].senremoteprocedurecallsenatomairetransactiesisgeblekendattransactiestribueerdecontextzijnin[Davidson,Liskov,Spector]beschreven.Hetvastleggen<strong>van</strong>toestandsinformatiekosttijd.UitvergelijkingentusTechniekenvoordeimplementatie<strong>van</strong>atomairetransactiesineengedis-<br />

eersteenkopie<strong>van</strong>hetobjectgemaakt.Ditkantot1msduren.Eenrpc velemalenlangerduren[Bal].Voorhetverkrijgen<strong>van</strong>eenwrite-lockwordt primitievendatArgus,AeolusenCamelot[Spector]aanbiedenisvoorsom- duurdetientallenms,eentransactiehonderdenms.Hetsoortfouttolerante<br />

DeeersteoperatieverlaagtsaldoA,detweedeverhoogtsaldoB.Vanwegedemogelijkheid migetoepassingennietsnelgenoeg.Voortoepassingenalsparallelsorteren<br />

wordenuitgevoerd|helemaalofhelemaalniet. <strong>van</strong>eenprocessorfouthalverwegeishetinhetbelang<strong>van</strong>Adatbeideoperatiesondeelbaar 11Bijvoorbeeldhetovermaken<strong>van</strong>eenbedrag<strong>van</strong>deenenaardeanderebankrekening.<br />

50 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria zijnandereoplossingenmetminderoverheadnodig[Bal]. 3.3.3<br />

fouttransparantie Erzijntalendieprocessorfoutengeheelverhullenvoordeapplicatieprogram- hetgeenonderscheidmakeninprocessenofgegevensdieessentieelzijnvoor meur.Omdatdetaalimplementatiegeenkennisoverdeapplicatieheeftkandeapplicatieenwelkeniet.Elkprocesofgegevenselementwordtgelijkbehandeld.Omtevoorkomendatdeoverhead<strong>van</strong>ditsoortsystementegroot wordtisgezochtnaarecienteherstelmethodes.<br />

maireprocesverzondenzijn.Periodiekwordtdetoestand<strong>van</strong>hetprimaireden.Ditprocesbewaartautomatischalleboodschappendienaarhetprielkproceseenbackup-procesopeenaparteprocessorachterdehandhou- Vooreenmessage-passingsysteemgebaseerdopprocessenkanmenvoor<br />

worden.Wanneerhetprimaireprocesnietmeerfunctioneertneemthet backup-proceshetwerkoveropbasis<strong>van</strong>devorigetoestandenhetlogboek procesnaardebackupgekopieerd.Deboodschappenkunnendangewist metverzondenboodschappen[Bal].<br />

checkpointsenlogboekenmetalleverzondenboodschappen.Erwordthier checkpoints. nilgebruiktoptimisticrecovery.Dezetechniekisookgebaseerdop Dezebenaderingkostextraprocessoren,entijdvoorhetmaken<strong>van</strong><br />

berekeningen.AangenomendatdeI/Obandbreedtevoldoendeiswordt totdevorigemethodegebeurtditwegschrijvenasynchroonaandenormale stablestorage(foutvrijachtergrondgeheugen)geschreven.Integenstelling geenbackupprocesgebruikt.Checkpointsenboodschappenwordennaar<br />

dedoorlooptijdhierdoornietnegatiefbenvloed.Indeliteratuurzijngeen dehiervoorbesprokenmogelijkhedenimplementeren. tijdmetingenbeschreven[Bal]. Indevolgendetabelwordtterillustratieeenaantaltalenopgesomddie<br />

primitieve foutdetectieFouttolerantie[Bal] atomairetransactiesArgus,Aeolus,Avalon fouttransparantie voorbeeldtaal Ada,sr<br />

conclusie:kosten nil<br />

torenbepaald.WanneereenproceseenaantalmaalgerepliceerdwordtkostDeprijsdievoorfouttolerantiebetaaldmoetwordenwordtdoortweefaclingkosttweevoudigereplicatieeenfactortweeinsnelheid.Tentweedeisdeditevenzoveelprocessoren.Bijeenparallelprogrammametlineaireversnel- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling communicatieoverhead<strong>van</strong>degerepliceerdeprocessenaanzienlijk.Volgens 51


3.3.5 [Bal]isdeprijsdievoorfouttolerantiebetaaltmoetwordenhoog.Foutto- <strong>Applicatie</strong>ontwikkeling<br />

toepassing. 3.3.4Integratie(4) lerantiemoetalleentoegepastwordenwanneerditnoodzakelijkisvoorde<br />

Deintegratietussensequentieleen<strong>gedistribueerde</strong>taalconstructiesisvaak issamengestelduitprimitievendiegebaseerdzijnoptweefundamenteel problematisch.Decomplexiteit<strong>van</strong>eenprogrammeertaalhangtnauwsamen verschillendeparadigma'singewikkeldis(x3.2.2).Ditgeldtnogsterker metdesemantiek<strong>van</strong>deprimitieven.Dekansisgrootdateentaaldie wanneerprimitieven<strong>van</strong>tweeverschillendelagengebruiktmoetenworden (x3.2.1).<br />

sommigepuntenproblemenop.Gedistribueerdesystemen,zondergemeen- x3.2.3isopgezetkentdezeintegratieproblemenniet. Eentaaldiegeenconstructiesvoorexplicietparallellismekent,ofvolgens<br />

schappelijkeadresruimte,ondersteunenhetgebruik<strong>van</strong>globalevariabelen, pointervariabelenenreferenceparametersniet.Veelsequentieletalenstaan Deintegratie<strong>van</strong>sequentieleen<strong>gedistribueerde</strong>primitievenlevertop<br />

wordtinx3.4.2voorrpc-systemenbehandeld. constructiestoedieineen<strong>gedistribueerde</strong>contextonjuistzijn.Ditprobleem bruikt.Ineen<strong>gedistribueerde</strong>omgevinggeeftditproblemenomdatpointers envariabelereferentiesalleenbetekenishebbenbinnenineenadresruimte. Procedurelesequentieletalenstaanhetgebruik<strong>van</strong>globalevariabelentoe. Insommigesequentieletalenwordenreference-ofpointerparametersge-<br />

uitdesequentieletaalgaanverloren. geeft(pagina45)problemen.Deecientieofdesemantiek<strong>van</strong>variabelen Hetsimuleren<strong>van</strong>logischshared-memoryopfysiek<strong>gedistribueerde</strong>systemen<br />

traliseerdemultiprocessorarchitectuurandersisdanopeen<strong>gedistribueerde</strong> architectuur. Hetresultaatisdatdesemantiek<strong>van</strong>globalevariabelenopeengecen-<br />

Indezeparagraafwordt<strong>van</strong>devieraspectendiemetalgemeneaspecten<strong>van</strong> deomgevinginverbandstaanbeschrevenwelkepuntenbijhetontwerp<strong>van</strong> 3.3.5Beschrijvingaspectenomgeving<br />

wordenzehierbeknoptbehandeld. eenlevel5interface<strong>van</strong>belangzijn.<br />

complexiteit(5) Omdatdezeaspectennietspeciekvoor<strong>gedistribueerde</strong>omgevingenzijn<br />

veneenkrachtigersemantiekbezitten(x2.3.4)eneengroteresamenhangDecomplexiteit<strong>van</strong>eenprogrammeertaalneemtafnaarmatedeprimitie- vertonen(x3.2).<br />

52 deelsgos-primitieven.Eenlevel5omgevingdiebestaatuiteensequentiele Desystemcalls<strong>van</strong>veeloperatingsystemszijndeelsnos-primitieven, <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria taalenoverwegendnos-primitieven,biedt,zekerbijafwezigheid<strong>van</strong>impli- 3.3.5<br />

cietparallellisme,weinigtransparantie.biedtmoetdeprogrammeurdezezelfbouwen.Ookdeafwezigheid<strong>van</strong>onren.Wanneerhetoperatingsystemnietdevereistehighlevelprimitievensequentieletaalkanhetschrijven<strong>van</strong>programma'saanmerkelijkcomplice-<br />

Hetbestaan<strong>van</strong>eenaantalniet-transparantenos-primitievenaaneen<br />

dersteuning<strong>van</strong>degewenstemate<strong>van</strong>fouttolerantiekandeontwikkeltijd<br />

redenbestaan<strong>van</strong>veelsequentieletalen<strong>gedistribueerde</strong>varianten,meestal procedureaanroepenverlaagtdeleesbaarheid<strong>van</strong>programma's.Omdeze endekansopfoutennadeligbenvloeden.<br />

`ConcurrentX'of`ParallelX'genoemd(x3.2.2). Hetaanroepen<strong>van</strong>nos-primitievenindevorm<strong>van</strong>geparameteriseerde<br />

ofgedistribueerd|iseenzorgvuldigekeuze<strong>van</strong>paradigma,conceptenen primitieven<strong>van</strong>grootbelang.[Hoare]bespreekthetbelang<strong>van</strong>eensimpele taalmeteleganteprimitieven.Ontwerpers<strong>van</strong>eennieuwe,<strong>gedistribueerde</strong> Ookwanneereentaalvolgenseenprincipeisontworpen|ofsequentieel,<br />

lendeconcepten.Zezijnvrijomdestructuur<strong>van</strong>detaalgeheelopde enprimitieveneenvoorbeeld<strong>van</strong>eenonnodigcomplexetaal[Bal].Linda nieuweelementenaftestemmen.Adaismethaarveelheidaanconcepten taalhoevengeenrekeningtehoudenmetdeintegratie<strong>van</strong>tweeverschil-<br />

iseenvoorbeeld<strong>van</strong>eensimpeletaal.HetTupleSpacemodelkentslechts vierprimitieveneniseenvoudigtebegrijpen[Bal].<br />

run-timesystemwordengedetecteerd.Ditkanmetcompile-timechecks, Volgens[Hoare]moetenalleafwijkingen<strong>van</strong>detaalregelsdoorcompilerof typesecurity(6)<br />

ofmetrun-timechecks<strong>van</strong>bijvoorbeeldarray-indicesenpointervariabelen. [Hoare,p.76]zegthierover:"Inanyrespectablebranchofengineering, thelaw."Talenmoetenzouminmogelijkonveiligeconstructiestoelaten. failuretoobservesuchelementaryprecautionswouldhavelongbeenagainst Veelveelgebruiktetalen,zoalsCenPascal,zondigentegenditprincipe.<br />

ineen<strong>gedistribueerde</strong>omgevinggeenbetekenishebben.Doordatdeverschillendeprocessendoorcompilerenrun-timesystem<strong>van</strong>detaalnietalsonderdeel<strong>van</strong>eenprogrammagezienwordenisfoutdetectietussenproces- Sequentieletalenstaangebruik<strong>van</strong>variabelenenparameterstoedie<br />

senonderlingnietmogelijk.Operatingsystemsvoerenbijhetuitvoeren<strong>van</strong> interproces-communicatiemeestalgeentype-checksuit.<br />

kanheteenprobleemzijndefoutievecodetelokaliseren[Bal].Daarnaastkan Omdathetverloopvaaknon-deterministischis,zijnprogrammeerfoutenzeer moeilijktereproduceren.Zelfswanneereenduidelijkefoutmeldingoptreedt, Hetopsporen<strong>van</strong>foutenin<strong>gedistribueerde</strong>programma'sisingewikkeld.<br />

adresruimtecorrumperen.Juist<strong>gedistribueerde</strong>talenmoetentypesecure zijn.Dekansopfoutenisgroternaarmatedecomplexiteit<strong>van</strong>eentaalgroter eenverborgenfoutuiteenproceseencorrectprocesindezelfde(logische)<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling is(punt5).Hetnut<strong>van</strong>typesecuritywordtdansteedsgroter.Adais 53


3.3.5 totopzekerehoogtetypesecure.Viahetconcept`typestate'wordtinnil <strong>Applicatie</strong>ontwikkeling<br />

typesecuritygerealiseerd[Watt1,Bal]. hetverlaagtechterdeecientie<strong>van</strong>deuitvoering<strong>van</strong>eenprogramma. ecientie(7) Typesecurityverkortdetestperiode<strong>van</strong>programmatuurontwikkeling,<br />

highlevelconcepten.Sommigeparadigma'sstaandeecienteimplementatie<strong>van</strong>bepaaldetoepassingenindeweg|zoalsrpcbijbranch-and-bound primitieveneengroterolspeeltvoorhetecientkunnenimplementeren<strong>van</strong> Inparagraaf2.3.4en2.3.5isbeschrevendatdekeuze<strong>van</strong>paradigma'sen<br />

talingtemaken|zoalslogischvirtueelgeheugenop<strong>gedistribueerde</strong>hardalgoritmen|envoorsommigeparadigma'sishetmoeilijkeenecienteverware.baumbrengteenzekereinecientiemetzichmee.Wanneereenlevel5 virtuelemachinegemplementeerdwordtopeenoperatingsystemdatniet speciaalvoorhogeoverdrachtssnelheidgestructureerdiskanhetgebeuren Deopbouw<strong>van</strong>computersystemenvolgenshetlagenmodel<strong>van</strong>Tanen-<br />

datcommunicatienietopdemeestecientewijzeplaatsvindt(ziex4.2.1). gemplementeerdkanwordenhangtnauwsamenmetdevraagofdearchitecarchitecturenmetgemeenschappelijkgeheugenzijnmeergeschiktvooraptuurenhetprogrammeerparadigmabijdeapplicatiepassen.Multiprocessor Ecientieiseenrelatiefbegrip.Devraagofeenapplicatieecient<br />

[Bal]:Bijdeimplementatie<strong>van</strong>communicatieprimitievenkunnenonderligplicatiesmetne-grainparallellismedan<strong>gedistribueerde</strong>architecturen.<br />

Uitvergelijkingenindeliteratuurkanmendevolgendeconclusiestrekken<br />

gendeoperatingsystemsmeteenmindergeschiktestructuur(bijvoorop.Softwareprotocolsinhogerelagenbiedenditaan.Dezebevindenzichvaakindekernel<strong>van</strong>operatingsystems.Bijdeaanroepbeeldunix)veeloverheadopleveren.Lowlevelcommunicatiesoftware levertinhetalgemeengeenbetrouwbaartransport<strong>van</strong>boodschappen<br />

Bijhetontwerp<strong>van</strong>ecientegegevensoverdrachtspeeltminimaliseren <strong>van</strong>eencommunicatieprotocolwordteencontext-switchuitgevoerd.<br />

rityheefteenprijs.Deuitvoering<strong>van</strong>run-timechecksdooreentaalkosttijd.Typesecu- <strong>van</strong>dezeoverheadeengroterol[Coulouris,Birrell].<br />

Doorsommigeoptimaliserendecompilers<strong>van</strong>functioneletalenwordt Procedureletalenzijnecienterdanfunctioneleoflogischetalen. hetverschiltoteenfactortweeteruggebracht.<br />

Dooronderzoeknaarsnellereimplementatietechniekenenhardware Gedistribueerdeimplementaties<strong>van</strong>talenzijnduidelijktragerdanimplementatiesopshared-memorymultiprocessors. 54wordtdecommunicatieoverhead<strong>van</strong><strong>gedistribueerde</strong>systemensteeds <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingscriteria kleiner.Deprestaties<strong>van</strong><strong>gedistribueerde</strong>systemenzullenindetoe- 3.3.5<br />

overdraagbaarheid(8) komststeedsbeterworden.<br />

enoperatingsystemsteimplementerenzijn.Detaalmoetzoveelmogelijk moetopeenaantal<strong>gedistribueerde</strong>computerconguraties,processortypen, Omeenapplicatieeenvoudig<strong>van</strong>hetenesysteemnaarhetanderesysteem<br />

algemeneconceptenimplementeren,enzominmogelijkarchitectuurspeci- tekunnenoverzettenmoetdetaalaaneenaantaleisenvoldoen.Eentaal<br />

hankelijkeprimitievenbenutteneengroterprobleemdanvoorapplicatiessystem)naarhetandereisvoorprogramma'sdieveeloperatingsystemafekekenmerken. diedatnietdoen. Deoverdraagbaarheid<strong>van</strong>applicaties<strong>van</strong>heteneplatform(operating<br />

opandereconceptenkanhetvoorkomendateensubstantieeldeel<strong>van</strong>de delen<strong>van</strong>deapplicatiedienietaaneenstandaardvoldoen.Wanneermen eenprogrammawiloverdragenopeenoperatingsystemdatgebaseerdis Deproblemenbijhetoverzetten<strong>van</strong>eenapplicatiezijnhetgrootstbij<br />

programmatekstmoetwordenherschreven[Bal].<br />

geprogrammeerdkunnenwordenisgroternaarmatedetaalmeerprimitieven geschrevenishetoverdragen<strong>van</strong>eenapplicatieeenvoudiger.Dekansdatde vooreentoepassingbenodigdemogelijkhedenopeenoverdraagbaremanier Wanneerdegeheleapplicatieineen(nieuwe)gestandaardiseerdetaalis<br />

implementeertengebruik<strong>van</strong>systemcallsnietnodigis. voldoen. Eenapplicatieontwikkelomgevingmoetzoveelmogelijkaanstandaards<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 55


3.4.1 3.4 RemoteProcedureCall <strong>Applicatie</strong>ontwikkeling<br />

tie,werktmetrpc's.Daaromwordthethieruitgebreidbehandeld.het<strong>gedistribueerde</strong>computersysteem<strong>van</strong>Sun,hetonderwerp<strong>van</strong>dezescrip- Veel<strong>gedistribueerde</strong>operatingsystemsondersteunenderemoteprocedure callalscommunicatieprimitieve[Coulouris,Bal,Tanenbaum4,Weihl1].Ook<br />

3.4.1Algemenekenmerken Figuur3.1:<strong>Plaat</strong>s<strong>van</strong>rpc<br />

'<br />

& $ ) PPPPq<br />

?<br />

%<br />

procedure<br />

programmeur<br />

lokaal abstractie ?<br />

level5 rpc<br />

level3 gedistribueerd ?<br />

operating system communicatie primitieven rpc<br />

protocollen ? rpc-subsysteem<br />

level2virtuelemachine ?<br />

aantalrpc-primitievenuit.Derpc-primitievenwordendoordeproblem- Hetbreidtdetaaldiedeoperatingsystemlaagaanbiedt(guur2.1)meteen oriented-languagelaagaandeapplicatieprogrammeuraangeboden.Deze Eenrpc-systeemiseendeel<strong>van</strong>het<strong>gedistribueerde</strong>operatingsystem.<br />

opbestaandeabstractiesuitdeproblem-orientedvirtuelemachineaante latensluiten. werpers<strong>van</strong>rpc-systemenproberendenieuweprimitievenzoveelmogelijkzieteenprogrammeertaalwaarinremoteproceduresgentegreerdzijn.Ont- 56Inguur3.1isinguur2.1eenrpc-subsysteemtoegevoegdaanhet <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall operatingsystem.12Ditsubsysteemtrachtcommunicatieprimitieveninde 3.4.1<br />

hetclient/servermodelontworpen(ziex3.4.4).Inplaats<strong>van</strong>verzoeken<strong>van</strong> op<strong>gedistribueerde</strong>systemenwordengemplementeerd|wordenvaakvolgens vorm<strong>van</strong>eenbekendeabstractieaandeprogrammeuraantebieden.<br />

declientaandeservermetpoint-to-pointboodschappenteimplementeren Gedistribueerdeapplicaties|applicatiesdieomreden3en4<strong>van</strong>x2.1.4<br />

kanmenhiervoorookeenenkelecommunicatieprimitieve<strong>van</strong>eenhoger<br />

probeertdezeabstractieineen<strong>gedistribueerde</strong>omgevingtebieden.Een zulkehoog-niveauprimitieven. niveaugebruiken.Rendez-vous(pagina44)enremoteprocedurecallzijn<br />

isdebekendheidmetdeprocedureabstractie. <strong>van</strong>deredenendatveel<strong>gedistribueerde</strong>omgevingenoprpcgebaseerdzijn Veelprogrammeurszijnmetdeprocedureabstractiebekend.Derpc<br />

satiemiddelindevorm<strong>van</strong>eenprocedureabstractie.Hiervolgenenkele procedure Deremoteprocedurecallimplementeerteencommunicatie-ensynchroniproceduremechanismebestaatinsequentieleprocedureletalenuiteenproce-<br />

kenmerken<strong>van</strong>deprocedureabstractie. duredenitieeneenprocedureaanroep.Indedenitiebeschrijftdeprogrammeurdeopdrachtendiemoetenwordenuitgevoerdwanneerdeprocedure Deeenheid<strong>van</strong>parallellisme<strong>van</strong>procedureletalenishetproces.Het<br />

Desemantiek<strong>van</strong>parameterskandoorhetgebruik<strong>van</strong>verschillendeover- omdefunctionaliteit<strong>van</strong>deproceduretebenvloeden. wordtaangeroepen.Deaanroeperkanbijdeaanroepparametersmeegeven<br />

drachtmechanismenwordenveranderd[Watt1].Eenparameterdiebyreferencewordtovergedragenisalseenglobalevariabeletebeschouwen.Een Procedureskunnenoperatiesopglobaleenlokalevariabelenuitvoeren.<br />

[VanderSluis]. valueparameteristebeschouwenalseengenitialiseerdelokalevariabele<br />

gemeenschappelijkeadresruimte Deremoteprocedurecallimplementeerteencommunicatie-ensynchronisatiemiddeltussenprocessendiegeengemeenschappelijkgeheugenhebben. binneneenzelfde(heavy-weight)proceskunnenoverdezelfdeadresruimte ruimteniet.Zebestaanuitverschillendeprocessen.Alleenprocedureszelfdegeheugenruimte.Gedistribueerdeapplicatiesdelende(fysieke)adresBinnenconventionelemonolitischeprogramma'shebbenproceduresdeprocedureaanroep.Degewoneaanroep,binneneenzelfdeadresruimte,wordt teronderscheidingwellokaleprocedureaanroepgenoemd. iseenremoteprocedurecall.Eenremoteprocedurecalliseeninterproces- beschikken.Deaanroep<strong>van</strong>eenprocedure<strong>van</strong>uiteenandereadresruimte<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 12Level4isvoordeoverzichtelijkheidweggelaten. 57


3.4.1 communicatie <strong>Applicatie</strong>ontwikkeling<br />

ookone-to-manymessages. menteerdmetboodschappen.Meestalzijnditpoint-to-pointmessages,somsgrammeurwordtdeprocedureaanroepdoorhetrpc-subsysteemgemplerpciseenvorm<strong>van</strong>message-passing.Onzichtbaarvoordeapplicatieproparametersplaatsvinden.Variabelenmetgeheugenadressenhebbengeldig- partijengeenglobalevariabelengemeen.Gegevensoverdrachtkanslechtsvia pene.Doorhetontbreken<strong>van</strong>gemeenschappelijkgeheugenhebbendetweeEenrpcspeeltzichtussentweepartijenaf:deaanroeperendeaangeroeheidbinneneenproces.Pointervariabelenenreferenceparametersbevatten derhalvebinnendecontext<strong>van</strong>hetandereprocesonjuisteinformatie.<br />

Wanneerereenaanvraagvoorservicebinnenkomtterwijleenvorigverzoek diensteningesteld.Dezeservershebbenmetmeerdereclientstemaken. woord.Inveel<strong>gedistribueerde</strong>omgevingenwordenserversvoorbepaalderpciseensynchronecommunicatievorm:deaanroeperwachtopant- nognietisafgehandeldzijnerverschillendeoplossingenmogelijk.Deserver kanhetnieuweverzoeklatenwachten.Terverhoging<strong>van</strong>demate<strong>van</strong>pa- nieuweverzoekopstartendatditdirectgaatverwerken. semantiekentransparantie rallellismebinnenhetsysteemkandeserverookeenextraprocesvoorhetIneen<strong>gedistribueerde</strong>omgevingkanhetgebeurendateen<strong>van</strong>beideprocesprocedureabstractielijken[Weihl1].Wanneerbijeengewonelokaleprocedureaanroepeenprocessorfaaltstoppenzowelaanroeperalsaangeroepene.<br />

Desemantiek<strong>van</strong>derpcmoetzoveelmogelijkopdie<strong>van</strong>degebruikelijke<br />

werpdoel<strong>van</strong>rpc-implementatiesisomzoveelmogelijktransparantieopsorenfaalt.Bijherstartenisonbekendwelkdeel<strong>van</strong>deprocedureaanroep ditpunttebieden[Birrell]. isuitgevoerdenwelkdeelmoetwordenovergedaan.Desemantiek<strong>van</strong>een remoteaanroepisinprincipeandersdan<strong>van</strong>eenlokaleaanroep.Eenontgehandeld.Eengebruikelijkemanierisomproceduresfoutcodestelatenteruggeven.Naelkeproceduremoetdeapplicatieprogrammeurcodeschrijvenomdezefoutcodestetesten.EenwatbeteremethodeisdeprogrammeurexHetoptreden<strong>van</strong>systeemfoutenkanopverschillendewijzenwordenaf-<br />

[Coulouris,Bal]. handelinguithetalgoritmenaareencentraleplaatsindecodegebrachtceptionhandlerstelatendenieren.Hierdoorwordtdecodevoordefoutaf taal rpc'skunnenaaneensequentieletaalwordentoegevoegdindevorm<strong>van</strong> systemcalls.Hetisookmogelijkrpc-primitievenineensequentieletaalte integreren.Deproblemen<strong>van</strong>pointer-englobalevariabelenineen<strong>gedistribueerde</strong>omgevingwordennietopgelost.Inx3.4.3wordteenvoorbeelduit deliteratuuruitgebreiderbeschreven. 58 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall Hetisookmogelijkomeennieuwe<strong>gedistribueerde</strong>taalteontwerpendie 3.4.2<br />

rpc'svoordecommunicatiegebruikt.Veeltalendieatomairetransacties implementerengebruikenrpc's,bijvoorbeeldArgus[Liskov]. 3.4.2SpeciekeRPCcriteria rpc-implementaties.Hetzijnachtereenvolgens:globalevariabelen,pointer- Nadezeglobaleschets<strong>van</strong>rpc-systemenvolgthiereenop[Coulouris,Bal, Birrell,Weihl1]gebaseerdebeschrijving<strong>van</strong>criteriavoordebeoordeling<strong>van</strong><br />

dressering,beveiliging,enparallellisme.Dezecriteriazijn<strong>van</strong>toepassingophetrpc-subsysteem<strong>van</strong>eenoprpcgebaseerde<strong>gedistribueerde</strong>applicatieprogrammeertaal,interfacedenitie,gegevensoverdrachtprotocol,netwerkavariabelen,parameters,faal-semantiek,foutcode/exceptions,integratieinontwikkelomgeving.Voordebeoordeling<strong>van</strong>de<strong>gedistribueerde</strong>omgeving a.globalevariabelen alsgeheelzijndecriteriauitx3.3enx3.3.5.<br />

Insequentiele,gecentraliseerdesystemenzijnapplicatiesgestructureerdals monolitischeprogramma's.Zo'nprogrammavormteenproces.Elkproces<br />

variabelenonderlingcommuniceren. heefteenadresruimte.Indezeeneadresruimtebevindenzichalleprocedures gemeenschappelijkeadresruimtehebbenkunnenzemetbehulp<strong>van</strong>globale enallevariabelen<strong>van</strong>demonolitischeapplicatie.Doordatdeprocedureseen<br />

teemwaarindeprocessorenenprocessennietviagemeenschappelijkgeheuresgeengebruikmaken<strong>van</strong>globalevariabelen.Wanneerzebeidetoeganggenmetelkaarcommuniceren.Ineenrpc-systeemkunnenremoteproceduInx2.3.1enx2.3.2iseengedistribueerdsysteemgedenieerdalseensys- degewenstevariabeleexplicietdoorgegevenmoetenworden.Opditpunt moetenhebbentotdezelfdegegevenszalviaparameteroverdrachtsteeds wijkenremoteproceduresaf<strong>van</strong>lokaleprocedures. geschrevenprogrammanaareen<strong>gedistribueerde</strong>omgevingwiloverzetten processendoorparameteroverdrachtmoetenwordenver<strong>van</strong>gen.Veelvuldige zalelkgebruik<strong>van</strong>globalevariabelentussenproceduresinverschillende IndienmeneenineenconventionelesequentieletaalalsCoffortran<br />

overdracht<strong>van</strong>grotehoeveelhedengegevens|ne-grainparallellisme|zoals matriceszalhetprogrammamogelijktetraagmaken.Bijhetpartitioneren <strong>van</strong>demodulesenprocedurestijdenshetsysteemontwerpvormtditeen decompilerhetfoutiefgebruik<strong>van</strong>globalevariabelenniet.Oppagina53 isgewezenophetbelang<strong>van</strong>hetvoorkomen<strong>van</strong>programmeerfoutenbij extrarandvoorwaarde.<br />

<strong>gedistribueerde</strong>applicatie-ontwikkeling.Vanuitditoogpuntishetbetereen Wanneermeneensequentieletaalmetsystem-callsgebruiktonderkent<br />

omgevingtegebruikendie`interprocesglobalevariabelen'kanonderkennen.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 59


3.4.2 b.pointervariabelen <strong>Applicatie</strong>ontwikkeling<br />

<strong>van</strong>geheugenruimteBwilgebruikenzouhetadres<strong>van</strong>AnaarBgezonden wordengehouden.WanneerprocesAdeinhoud<strong>van</strong>eengeheugenlocatie senoverzendtmoetbijelkgebruik<strong>van</strong>datadresdecontexter<strong>van</strong>inhetoogWanneermengeheugenadressentussenproceduresinverschillendeprocesmoetenwordenenvervolgensdeinhoud<strong>van</strong>BnaarA.Vanwegedecommunicatieoverheadleidtdittotonacceptabeleprestaties.13Pointervariabelenming<strong>van</strong>programmeerfoutenzouverhinderdmoetenwordendatzeworden overgezonden.Mochtdecompiler<strong>van</strong>detaalditnietdoendanzalhet hebbeninrpc-systemengeenbetekenisbuitenhuncontext.Tervoorko- rpc-subsysteem<strong>van</strong>hetoperatingsystemditvaakkunnenonder<strong>van</strong>gen.<br />

datatypenherkennenenconverteren.Bijditconverterenwordtdedata- directwordenovergezonden.Hetrpc-systeemvoorzo'ntaalmoetzulke lijsten,bomen|metbehulp<strong>van</strong>pointersgerepresenteerd.Dezekunnenniet Inveelprocedureletalenwordenrecursievedatastructuren|gelinkte<br />

structuurafgelopenenwordendewaardenachterelkaargezet.Vervolgenswordentypeenwaardenovergezonden.Deont<strong>van</strong>germoetdedatastructuurinzijneigenadresruimteweeropbouwen.Hetgebruik<strong>van</strong>zulkesa enkelvoudigevariabelen. mengesteldedatastructurenalsparameterzorgtvoormeeroverheaddan<br />

levertdoordecommunicatieoverheadtetragesystemenop[Bal,Coulouris, Tanenbaum3]. duidelijkverschillend<strong>van</strong>lokaleprocedures.Hetnastreven<strong>van</strong>transparantie Desemantiek<strong>van</strong>remoteproceduresisophetgebied<strong>van</strong>variabelen<br />

c.parameters<br />

parameteroverdachtgebruiken.Meteencopymechanismwordenwaarden Eenessentieelonderdeel<strong>van</strong>deprocedureabstractieisdewijze<strong>van</strong>parame-<br />

inenuiteenabstractiegekopieerd.Menkanvalue,resultenvalue/result den.Eentaalkanhetcopymechanismenhetdenitionalmechanismvoorteroverdracht.In[Watt1]wordentweeparametermechanismenonderscheicedureabstractiewordtdewaarde<strong>van</strong>dezelokalevariabele<strong>van</strong>/naardeparametereenlokalevariabele.Bijbinnenkomsten/ofverlaten<strong>van</strong>deproput/outputparameters<strong>van</strong>Ada.Bijhetcopymechanismisdeformeleparametersonderscheiden.Ditkomtovereenmetdeinput,outputenin- actueleparametergekopieerd. linktussendeformele14endeactueleparametergelegd.Deformeleparameterisgeenapartelokalevariabele.Elkewijziging<strong>van</strong>deformeleparameter 13Eensysteemdatdezevorm<strong>van</strong>variabeletoegangmogelijkmaaktiseenlogisch<br />

Bijhetdenitionalmechanismwordtbijaanroep<strong>van</strong>deprocedureeen<br />

gemeenschappelijkgeheugensysteem(pagina45).Vanwegedecommunicatieoverheadstel-<br />

denitie<strong>van</strong>deaangeroepenedeformeleparameter[VanderSluis]. kunnenworden. lenlogicalshared-memorysystemendusdanigesemantischebeperkingenaanhetgebruik <strong>van</strong>gemeenschappelijkevariabelendatzenietalsgemeenschappelijkgeheugenbeschouwd<br />

6014Deparameterdiedeaanroepermeegeeftisdeactueleparameter;deparameterinde <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall vindtplaatsindeactueleparameter.Deformeleparameterwordtvoorde 3.4.2<br />

nadeelisdathetoptoekenning<strong>van</strong>waardenaanvariabelen(assignment) parameterszijneenvoorbeeld<strong>van</strong>ditmechanisme. duur<strong>van</strong>deaanroepgesubstitueerddoordeactueleparameter.Reference<br />

gebaseerdis.Hetisongeschiktvoorvariabeletypenzondertoekenning.15 Eenandernadeelisdathetkopieeren<strong>van</strong>grotesamengesteldewaarden Hetvoordeel<strong>van</strong>hetcopymechanismiseeneenvoudigesemantiek.Een<br />

(arrays)inecientis. allevariabeletypen.Hetisgebaseerdopindirectetoegangtotwaarden|via pointersofadressen<strong>van</strong>variabelen.Ditisinhetalgemeenecienterdan hetkopieeren<strong>van</strong>gegevens.Eennadeelisdemogelijkheid<strong>van</strong>aliassen.In Hetvoordeel<strong>van</strong>hetdenitionalmechanismisdathetgeschiktisvoor<br />

enslechtberedeneerbaar. hetvoorbeeldisyeenalias<strong>van</strong>xophetmomentdatbeidedelinknaara leggen.Volgens[Watt1,p.98]makenaliassenprogramma'singewikkelder<br />

geven.Inplaats<strong>van</strong>dereferentiemoetdewaardewordendoorgegeven.BijlendeadresruimtehebbenkanhetrpcsysteemnietditgeheugenadresdoorDaaraanroeperenaangeroepenein<strong>gedistribueerde</strong>systemeneenverschil- Eenreferentienaareenvariabeleishetgeheugenadres<strong>van</strong>dievariabele.<br />

ference.In[Tanenbaum3]wordthier<strong>van</strong>hetvolgendevoorbeeldgegeven. gekopieerdworden.Ditwordtcallbycopy/restoregenoemd.Inbepaalde situatiesisdesemantiek<strong>van</strong>callbycopy/restoreandersdanbijcallbyre- desimulatie<strong>van</strong>callbyreferencemoetdezewaardezowelheenalsterug<br />

programtest(output);<br />

begin vara:integer; proceduredubbelverhoog(varx,y:integer);<br />

end; x:=x+1;<br />

begin y:=y+1;<br />

end. a:=0; dubbelverhoog(a,a);<br />

Alsdubbelverhoogeenlokaleprocedureisrefererenxenybeideaana.a writeln(a);<br />

teembijaanroepdewaarden<strong>van</strong>detweecallbycopy/restoreparameters, wordtdanachtereenvolgens<strong>van</strong>0naar1en<strong>van</strong>1naar2opgehoogd.<br />

15InPascalmogenlevariabelennietaanelkaarwordentoegekend<strong>van</strong>wegedeoverAlsdubbelverhoogalsrpcwordtbehandelddanzalhetrpc-subsys- uitvoeren. head<strong>van</strong>hetkopieren<strong>van</strong>les.Ditmoetmenmetlees-enschrijfopdrachtenperrecord <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 61


3.4.2 tweemaal0,verzendenaanderemoteprocedure.Dezehoogtdeeerste <strong>Applicatie</strong>ontwikkeling<br />

copy/restore.Indemeestegevallenzaldezebenaderingvoldoendezijn.In parameterop<strong>van</strong>0naar1,enhijhoogtyop<strong>van</strong>0naar1.Dewaarden wordenteruggezondenenablijkt1tebevatten. deuitzonderlijkegevallenzullenditsoortfoutenmoelijktevindenzijn. Desemantiek<strong>van</strong>callbyreferencewordtslechtsbenaderdmetcallby<br />

ecient.Veelrpc-implementatiesvermijdenditsoortproblemendoorpointersenreferenceparametersnietteondersteunen.<strong>Applicatie</strong>programmeurs moetenhiervoorzelfoplossingenprogrammeren.Desemantiek<strong>van</strong>eenrpc In<strong>gedistribueerde</strong>omgevingenzijngeheugenreferenties(pointers)niet<br />

d.faal-semantiek ligtdanwelergver<strong>van</strong>die<strong>van</strong>eenlokaleprocedureaanroep.<br />

rpc-systemenspitstdezekwestiezichtoeop"deexactebetekenis<strong>van</strong>een aanroepinhetlicht<strong>van</strong>hetfalen<strong>van</strong>machineencommunicatie"[Birrell]. diehetsysteemgaatondersteuneneenbelangrijkerol.Inhetkader<strong>van</strong> Bijhetontwerpen<strong>van</strong>computersystemenspeeltdemate<strong>van</strong>fouttolerantie<br />

een:insystemenmetensystemenzondertransactiemechanismen.Erzijn [Date].Detoestand<strong>van</strong>deapplicatiewordtopfoutvrijachtergrondgeheugen systemendiemetbehulp<strong>van</strong>transactiemechanismenfouttolerantiebieden Defaal-semantiek<strong>van</strong>eenlokaleaanroepvaltintweecategorieenuit-<br />

deoperatiesalsnoggaatuitvoeren. deonderbrekinggereconstrueerdworden,waarnadeprocedureofhetproces onderbrokenwordtkanbijherstarten<strong>van</strong>hetsysteemdesituatie<strong>van</strong>voor (stablestorage)bewaard.Wanneereenprocedurehalverwegedeuitvoering<br />

Eeneectiseentoestandsverandering<strong>van</strong>eenvirtuelemachineofomgeving.Side-eectszijntoestandsveranderingendienaastheteinddoel<strong>van</strong> deprocedureplaatsvinden.Zieguur3.2.Side-eectszijngebeurtenissen Eensleutelbegripindezeproblematiekishetzogenaamdeside-eect.<br />

die,voordatdeprocedureisafgelopen,reedsdetoestand<strong>van</strong>hetsysteem<br />

ceert.Dezestriktebetekeniswordtnaaranalogie<strong>van</strong>hetwiskundigefuncentiteitdieinvoeraccepteert,bewerkingeneropuitvoert,enuitvoerprodu- veranderen.<br />

tiebegrip<strong>van</strong>functioneleprogrammeertalenin[VanRenesse]hetfunctional Deoorspronkelijkebetekenis<strong>van</strong>eenprocedure|ofeenproces|iseen<br />

ministisch,16deuitvoerwordtvolledigdoordeinvoerbepaald.zijnomgevingandersdandoorzijnuitvoer.Eenfunctioneelprocesisdeter- processingmodelgenoemd.Eenfunctioneelprocesheeftgeeninteractiemet<br />

kanuiteindelijkleidentot`side'-eectsalsbestandsbijwerkingenofcreatie <strong>van</strong>eenanderfunctioneelproces.Communicatievindtplaatsdoordateen dezelfdeinvoer.Hetsysteemgarandeertzodezelfdeuitkomst.Deuitvoer Naeenstoringwordthetprocesdoordeomgevingopnieuwopgestartmet<br />

procesdeuitvoer<strong>van</strong>eenanderprocesalszijninvoerkanaccepteren. <strong>van</strong>voorgaandezaken,waarophijzelfgeeninvloedheeft. 6216Volgenshetwoordenboek:Leervolgenswelkedehandelingen<strong>van</strong>eenmensafhangen <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall 3.4.2<br />

Figuur3.2:Side-eects<br />

-<br />

tijd<br />

proces<br />

-<br />

invoer -<br />

uitvoer<br />

QQQsQQQsQQQs<br />

333<br />

side<br />

eect<br />

side<br />

eect<br />

procedureelproces<br />

-<br />

tijd<br />

proces<br />

-<br />

invoer -<br />

uitvoer<br />

functioneelproces<br />

Inconventionele,procedureletalenkaneenproceswelside-eectsheb-<br />

ben.Omgevingendiefouttolerantiemoetenondersteunenmoetentotde<br />

terminering<strong>van</strong>eenprocesalleside-eectsbijhoudenominhetgeval<strong>van</strong><br />

eencalamiteitdeoorspronkelijketoestand<strong>van</strong>hetsysteemtekunnenrecon-<br />

strueren.<br />

Zero-or-onesemantiekhoudtindatalletoestandsveranderingen|ookde<br />

side-eects|inhungeheeloptreden.Ofalletoestandsveranderingenvinden<br />

plaats,ofgeenenkele.Detoestandsveranderingendieoptredentotdateen<br />

procedurehalverwegeonderbrokenwordt,wordenbijzero-or-onesemantiek<br />

achterafongedaangemaakt.Pasalsdelaatsteoperatie<strong>van</strong>deprocedure<br />

heeftplaatsgevondenwordtdegeheletoestandsveranderingdoorgevoerd.<br />

Deprocedure(transactie)wordtdange-`commit'.Dezeactiesvindentrans-<br />

parantvoordeapplicatieprogrammeurplaats.Deherstelwerkzaamheden<br />

wordendoordevirtuelemachineuitgevoerd.<br />

Procedureszonderside-eectszijnidempotent:wanneerzewordenaan-<br />

geroepenmetdezelfdeparametersgevenzesteedshetzelfderesultaat.Een<br />

proceduremetuitvoerparameteridiei:=2+2berekentisidempotent.<br />

Eenprocedurediei:=j+1uitrekentwaarbijjgeenparameteris,niet.<br />

Deuitkomsthangtniet<strong>van</strong>deinvoerparametersafmaar<strong>van</strong>andereomge-<br />

vingsfactoren|inditgeval<strong>van</strong>globalevariabelej.<br />

Systemendiegeentransactieconceptondersteunenbiedenlast-onese-<br />

mantiek.Wanneerdeprocessorfaaltwordtbijherstarten<strong>van</strong>deapplicatie<br />

uiteindelijkdeonderbrokenprocedureopnieuwuitgevoerd.Eventueleside-<br />

eectstredenwellichtopnieuwop.Deaanroepergebruiktheteindresul-<br />

taat<strong>van</strong>delaatsteprocedureaanroep.Voorhetuitvoeren<strong>van</strong>idempotente<br />

berekeningenislast-onesemantiekvoldoende.Systemendielast-onese-<br />

mantiekbiedenmissendeoverhead<strong>van</strong>transactiesystemen.Zezijnsneller<br />

(pagina51).<br />

rpc-systemenkunnenverschillendestrategieentoepassenbijhetoptre-<br />

den<strong>van</strong>systeemfouten.Deliteratuuronderscheidttweecategorieenfouten:<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 63


3.4.2 communicatiefoutenenprocessorfouten[Bal].Hetoptreden<strong>van</strong>communi- <strong>Applicatie</strong>ontwikkeling<br />

enosi)doordenetwerksoftwarelaaggesignaleerd.Hetuitvallen<strong>van</strong>een catiefoutenwordtbijconnection-orientedcommunicatieprotocollen(alstcpprocedureskanhetrpc-systeemdeaanroepblijvenherhalentotereenant-<br />

processorkandoorhetrpc-subsysteemwordengesignaleerd.<br />

woordkomt.Deprocedurewordtdanminstenseenkeeruitgevoerd.Ditrenaandeaanroeper,ofproberenzelfdefoutteherstellen.BijidempotenteWanneerhetrpc-systeemeenfoutsignaleertkanhetdefoutrapporte- heetat-least-oncesemantiek.<br />

bouwstenenaantebieden(atomaireobjectenmettransacties)waarmeemen parantie(x3.3.3)aantebieden.Hetisookmogelijkomdeprogrammeurwensteresultaten.Eenoplossingisomzero-or-onesemantiekviafouttransWanneerdeprocedureside-eectsheeftleidtdezewerkwijzetotonge- zelfzero-or-onesemantiekkanprogrammeren.<br />

implementatieat-most-oncesemantiek.Hetrpc-systeem(devirtuelerpcgevenofeenexceptiontesignaleren.Deprogrammeurmoetdanzelfzorgenvoorcodediedefoutafhandelt.Inditlaatstegevalbiedtderpc Eenderdemogelijkheidisomeenfoutcodeaandeaanroeperterugte<br />

machine)garandeertdatbijeenfoutmeldingdeaangeroepenprocedure inzijngeheeluitgevoerd.Bijeenprocessorfouthalverwegeisdeproce- optreden.Alsalleenhetantwoordverlorenisgegaanisdeprocedureverder maximaaleenkeerisuitgevoerd.Side-eectskunnenmaximaaleenkeer<br />

mogelijkhedennietenvoertgeenherstelwerkzaamhedenuit.Ditwordtaan dureslechtstendeleuitgevoerd.Hetrpc-systeemonderscheidtdezetwee deprogrammeurovergelaten.<br />

remotezijn.Voorelk<strong>van</strong>deviercombinatiesisdesemantiekdiedelevel5 genentoepassingenmetside-eects.Eenprocedureaanroepkanlokaaloflendeapplicatiesenaanroepensamengevat.ErzijnidempotentetoepassinIndetabelwordtdemeestgeschiktevorm<strong>van</strong>semantiekvoorverschil- virtuelemachinebiedtgegeven.Semantiek idempotente procedure proceduremetlokaleaanroep zero last one atmostonceof atleast once RPC<br />

hetrpc-systeem,isalleengeschiktvooridempotenteberekeningen.At- At-least-oncesemantiek,hetopnieuwverzenden<strong>van</strong>eenaanroepdoor side-eects orone zeroorone<br />

most-oncesemantiekbiedtdeprogrammeurweinigondersteuning.Vooroncesemantiekgeschikt.Hetrpc-systeemiseenvoudigerenaanmerkelijktoepassingendieeenbeperktemate<strong>van</strong>bedrijfszekerheidvereisenisat-mostsneller.Eventuelefouttolerantiewordtmoetprogrammeurgeheelzelfpro- 64 wijktaf<strong>van</strong>die<strong>van</strong>eenlokaleprocedureaanroep. grammeren(x3.3.3).Desemantiek<strong>van</strong>eenat-most-onceprocedureaanroep <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall Voortoepassingendieeenzekeremate<strong>van</strong>bedrijfszekerheidvereisenzijn 3.4.2<br />

e.foutcode/exceptions zero-or-onerpc-systemenbetergeschikt.<br />

voorfoutconditiesdiehetrun-timesysteem<strong>van</strong>detaalsignaleertexception handlersteschrijven.Bijhetoptreden<strong>van</strong>eenfoutwordtdecode<strong>van</strong>de leerd.Sommigetalen,bijvoorbeeldAda,stellendeprogrammeurinstaatHetoptreden<strong>van</strong>foutenkanopverschillendemanierenwordengesigna- programma.Inhetgewoneprogrammawordtdecode<strong>van</strong>hetalgoritme desbetreendeexceptionhandleruitgevoerd.Ditgebeurtlos<strong>van</strong>hetgewone<br />

cedureaanroepopzulkefoutconditiestest.Cishier<strong>van</strong>eengoedvoorbeeld [Kernighan2].Veelfoutendiepasnadeinvoering<strong>van</strong>eenprogrammaaan nietmeeronderbrokendoorcodevoorhettestenopfoutcondities.<br />

hetlichtkomenzijntewijtenaanhetvergeten<strong>van</strong>ditsoortfouttesten Sommigetalenverwachten<strong>van</strong>deprogrammeurdatdezenaelkepro-<br />

eenkeerdeafhandelingscodegeschreventeworden[Coulouris].Deaanroep <strong>van</strong>dezecodewordtdoorhetrun-timesysteem<strong>van</strong>detaalverzorgd. plaatsopeenfouttetesten.Voorelkesoortfouthoeftbijdezetalenmaar [Rochkind].Intalendieexceptionsondersteunenishetnietnodigopelke<br />

talendieexceptionsimplementerenminderwerk[Coulouris,Bal]. belang(zieookpagina53).Hetschrijven<strong>van</strong>foutafhandelingscodeisin Inrpc-systemendiezero-or-onesemantiekondersteunenwordenfouten Hetopsporen<strong>van</strong>foutenbijgedistribueerdprogrammerenis<strong>van</strong>groot<br />

veeldisciplineverwacht.Talendieexceptionsondersteunengevenhiervoor adequatefoutafhandelingheelbelangrijk.Vandeprogrammeurwordthier most-oncesystemenkunnenmeersoortenfoutenvoorkomen.Hieriseen<strong>van</strong>lagerevirtuelemachinesdoorhetrpc-subsysteemafgehandeld.Inat- eenzekereondersteuning.<br />

digendooreenbekendeabstractieuitprocedureletalenteimplementerenHetdoel<strong>van</strong>hetrpcconceptisgedistribueerdprogrammerentevereenvou- f.integratieinprogrammeertaal<br />

mogelijkovereenkomenmetconceptenuitdietaal. cedureletalentoegevoegd.Desemantiek<strong>van</strong>derpcmoetdanzoveel[Birrell].rpc-primitievenwordenvaakaanreedsbestaandesequentielepro- Dezesystem-callszijnmoeilijkinhetgebruik[Birrell,Sun1].Omhet digenwordtsomseencodegeneratoraandeomgevingtoegevoegd.Dezeschrijven<strong>van</strong>toepassingsprogramma'svoordezeomgevingentevereenvou- rpc-primitievenkunnenalssystem-callsaandetaalwordentoegevoegd.<br />

generatorprobeertmendeprogrammeurzoveelmogelijk<strong>van</strong>ingewikkelde system-callsafteschermen. codegeneratorproduceertopbasis<strong>van</strong>eeninterfacedenitie(ziepuntg) codediedeprogrammeuranderszelfzoumoetenschrijven.Metdecodebelen,pointers,parametersenfaal-semantiekbeschreven.Dezeproblemen<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling Hiervoorzijndeproblemen<strong>van</strong>rpc'smetbetrekkingtotglobalevaria- 65


3.4.2 komenvoortuitdewensomeengedistribueerdconcepteenconventioneel <strong>Applicatie</strong>ontwikkeling<br />

conceptendievooreen<strong>gedistribueerde</strong>omgevinggeschiktzijn,zodatergeen (gecentraliseerd)uiterlijktegeven. gebruikt.Bijhetontwerp<strong>van</strong>zo'n<strong>gedistribueerde</strong>taalkiestmenalleen integratieproblemenmetconceptenvoorverschillendearchitecturenzijn(zie rpc'swordenbehalveinsequentieletalenookin<strong>gedistribueerde</strong>talen<br />

x3.2.1).<br />

teren.[Liskov,p.387]stelt,dateenrpc-systeemdemessage-passingdetailsworpenmetalsprimairdoelsequentieleprocedureabstractiesteimplemenandersgeziendanBirrell&Nelson[Birrell]datdoen.Argusisnietont- InArgus,eentaaldieatomairetransactiesondersteunt,wordenrpc's<br />

handelen.Derpcmoetgestoptkunnenwordenenindatgevalgeeneecten wachttijdenenprocessorfoutennietvoordeaanroepermoetverbergen.De aanroepermoetfoutenafhankelijk<strong>van</strong>deeisen<strong>van</strong>deapplicatiekunnenaf- <strong>van</strong>deprogrammeurmoetafschermen,maardemogelijkheid<strong>van</strong>langere<br />

hebben(zero-or-onesemantiek).Demogelijkheiddatclientsrpc'skunnen<br />

rpc'stoetekennen,kanmeneentaaltemakendieeengrotereconceptuele stoppenheeftgevolgenvoorhetontwerp<strong>van</strong>deserver.Deservermoetin<br />

consistentiebiedtdaneentaalmetsequentieleen<strong>gedistribueerde</strong>concepten. staatzijndetoestand<strong>van</strong>hetsysteem<strong>van</strong>voorderpcterestaureren.<br />

Detransparantie<strong>van</strong>zo'ntaalisdoordezesemantiekveranderingvermin- Dooreenanderesemantiekaande(sequentiele)procedureabstractiebij<br />

denadrukopexibiliteitdoordeprogrammeurexplicieteprimitievenvoor reikenzedieniet.Liskovstreeftnietdezelfdesemantiekna.Zijlegtmeerderd. foutafhandelingtegeven. Birrell&Nelsonstrevendezelfdesemantiekna(transparantie),albe-<br />

g.interfacedenitie VeelmoderneimperatievetalenalsAda,Modula-2ensommigePascaldialectenkennenhetbegripmodule.Eenmodulewordtookwel`package' of`unit'genoemd.Eenmoduleiseenhogerevorm<strong>van</strong>abstractiedan<br />

proceduresbestaan. cedureabstractiesomvat.Inguur2.3isdestructuur<strong>van</strong>eenprogramma weergegevenalsbestaandeuitmeerderemodulesdieelkweeruitmeerdere deprocedureabstractieindezindateenmoduleabstractiemeerdereproriabelen)diezichtbaarzijnvoordebuitenwereld.Doordescheiding<strong>van</strong><br />

deprocedureishetdedeclaratiewaarinnaamenparametersbeschreven worden.Eenmoduleinterfacebevatdecomponenten(proceduresenva- Netalsdeprocedurekentdemoduleeeninterfacebeschrijving.Bij<br />

interfacebeschrijvingenimplementatie<strong>van</strong>decomponentenbiedtdemoduledemogelijkheidvoorzijngebruikersom<strong>van</strong>deimplementatiedetailsteabstraheren.Zoondersteuntdeprogrammeertaaleenvergaandestructurering<strong>van</strong>deopbouw<strong>van</strong>eenprogramma. 66 hulp<strong>van</strong>deinterfacebeschrijvingnagaanofergeeninconsistentietussenModuleskunnenapartgecompileerdworden.Decompilerkanmetbe- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall gebruikenimplementatie<strong>van</strong>eenmodulebestaat.Devoordecompilatie- 3.4.2<br />

volgorde<strong>van</strong>demodulesonderlingeafhankelijkhedenwordendoordecompileraandehand<strong>van</strong>deinterfacebeschrijvingenbijgehouden. bijgehouden[Watt1]. sistentiesgecontroleerd.Decompilatievolgordewordtnietdoordecompilerscheidencompilatie.Hierwordenprocedureaanroepennietoptype-inconIntegenstellingtotdezeapartecompilatiekennenCenfortrangeopdeparameters<strong>van</strong>eenprocedure.Dezevoorafgaandeproceduredecla- vermeldenwordtdecompilerinstaatgesteldtochtypechecksuittevoeren ratieswordeninansiC`prototypes'genoemd.Zezijntevergelijkenmet DoorinansiCextraproceduredeclaratiesvoordeprocedureaanroepte<br />

forwarddeclaraties<strong>van</strong>proceduresinPascal.<br />

aanroepen-denitie|bijgescheidencompilatie|kanwordengewaarborgd. Wanneerdecommunicatietussendezemodulesmetrpc'swordtuitgevoerd moetereenmechanismebestaanwaarmeeconsistentietussenprocedure- Client/serverapplicatiesbestaanuitclientmodulesenservermodules.<br />

rpc-systemenbevattenvoorditdoelvaakeenspecialeinterfacetaal.Alshet<br />

<strong>van</strong>zijnparametersende`richting'<strong>van</strong>dezeparameters|inputofoutput| ciceerd.Ininterfacetalenkunnendenaam<strong>van</strong>eenprocedure,dedatatypen rpc-subsysteemgentegreerdisineen<strong>gedistribueerde</strong>taalisditnietnodig.<br />

wordenbeschreven. Meteeninterfacetaalwordendeinterfaces<strong>van</strong>remoteproceduresgespedulemaakttypechecks<strong>van</strong>decompilermogelijkenverzorgtdetails<strong>van</strong>hetgewensteprogrammeertaal(C,Pascal,fortran,etc.)vertaald.Dezemo-<br />

rpcmechanismedienietdoordebibliotheekroutineswordenafgehandeld Dezeinterfacewordtdooreeninterfacecompilernaareenmoduleinde<br />

typechecks<strong>van</strong>aanroependenitie<strong>van</strong>remoteprocedures.Opdezewijze wordteenstapnaartypesecuritygezet(pagina53). alsmarshallingendispatching(ziepagina80). Debelangrijkstetaak<strong>van</strong>deinterfacedenitieishetmogelijkmaken<strong>van</strong><br />

Een<strong>gedistribueerde</strong>omgevingkanuitsystemen<strong>van</strong>verschillendeleveranciersbestaan.Derespectievelijkevirtuelemachineskunnengegevenselkop h.gegevensoverdrachtprotocol<br />

kenmoetendepartijen,devirtuelerpcmachines,eengemeenschappelijkeopgeslagen[Tanenbaum3].Omtochgegevensuitwisselingmogelijktematureninverschillendeomgevingen(programmeertaal,dbms)anderswordenhuneigenmanierrepresenteren.Hetisookmogelijkdatcomplexedatastruclaag,laag6,opgelost.Eventueleconversietussenmachinesdiegegevens opeenanderewijzeinternrepresenterenvindthierplaats.Wanneerhet representatiestandaardmetelkaarovereenkomen.<br />

rpc-systeemopprotocollenvolgensdeosi-structuurgebaseerdisleverteen Inhetosi-referentiemodelwordendezeproblemenindepresentatie-<br />

verschillenderepresentatievoorhetrpc-systeemgeenproblemenop.De conversiewordtdandoordeprotocollengedaan. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 67


3.4.2Een<strong>van</strong>devoornaamsteontwerpeisendieaanrpc-implementatiesge <strong>Applicatie</strong>ontwikkeling<br />

steldwordenissnelheid.Eenlokaleprocedureaanroepisinvergelijkingmet rpc-toepassingenteveeloverheadop.rpc-implementatiesworden<strong>van</strong>wege gebouwd.Eenimplementatiemetzo'nsterkgelaagdeopbouwlevertvoor desnelheidzominmogelijkgelaagdgestructureerd[Tanenbaum3]. netwerkcommunicatiesnel.Hetosi-referentiemodelisuitzevenlagenopsubsysteemzelfvoorconversiezorgdragenwanneermenapplicatiesineen<br />

heterogeneomgevingwilkunnengebruiken. Alsdegebruiktenetwerkprotocollenhiernietinvoorzienmoethetrpc-<br />

Connection-lesscommunicatiebestaatuitenkelvoudigenetwerkpacketsdie protocollenenconnection-less(ofdatagram)protocollen[Tanenbaum3]. <strong>van</strong>defunctionaliteitdiedegebruikergebodenwordt:connectionoriented Binnennetwerkprotocollenkanmentweegroepenonderscheidenopbasis<br />

nietnoodzakelijkopvolgordewordenafgeleverd.Connectionorientedcomplementatie<strong>van</strong>connection-lessfunctionaliteitkentminderoverheadeniswikkelderdanhetimplementeren<strong>van</strong>connection-lessprotocollen.Deimaankomen.Hetimplementeren<strong>van</strong>connectionorientedprotocollenisingemunicatiegarandeertdatverzondenberichteninvolgorde<strong>van</strong>verzendinggramcommunicatiedoornahetverstrijken<strong>van</strong>eenbepaaldetijdsduureen<br />

sneller. verzoekopnieuwteverzenden.Bijat-most-oncesemantiekmoetdeimplementatiehetoptreden<strong>van</strong>fouteneenduidigkunnenvaststellen.Inplaatsrpc-systemenkunnenat-least-oncesemantiekimplementerenmetdata<strong>van</strong>hierzelfmechanismenopbasis<strong>van</strong>datagramcommunicatievoortebouwenishetecientervoorontwerpers<strong>van</strong>rpc-systemenombetrouwbare(connectionoriented)protocollentegebruiken.17Dezeprotocollensignalerenzelfalhetuitvallen<strong>van</strong>eenverbinding.Ookvoorzero-or-onesemantiekdatmenprogrammeert.Idempotenteprocedureszijnsnellermeteendalen.Uiteindelijkwordtdeprotocolkeuzebepaalddoorhetsoortapplicatiezijnconnectionorientedprotocollenbetergeschiktdandatagramprotocol- i.netwerkadressering protocollenbetergeschikt[Coulouris,Sun1]. tagramprotocol.Voorproceduresmetside-eectszijnconnectionoriented<br />

Ineengedistribueerdsysteembevindendeprocessen<strong>van</strong>eenapplicatiezich opverschillendevirtuelemachines.Ineenrpcapplicatiemoetdeaanroeper procesdatderemoteprocedurebevatmoetaanhetsysteembekendmaken opdeeenofanderewijzeaangevenwelkeremoteprocedurehijaanroept.Het time.Compile-timebindingisteinexibel.Bijelkeverandering<strong>van</strong>dewelkedienstenhetaanbiedt.Ditkaninbeginselatrun-timeenatcompile- semantiekopbasis<strong>van</strong>datagramverkeermetzelfgeschrevensterkgeoptimaliseerderpc moetenworden. gebruiktenetwerkconguratiezoudeapplicatiegewijzigdengecompileerd<br />

communicatieprotocollen. 17Birrell&Nelson[Birrell]hebbenditnietgedaan.Zijimplementeerdenat-most-once<br />

68 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall Bijbindingatrun-timewordenbijhetcompileren<strong>van</strong>deapplicatiebe- 3.4.2<br />

gekend.Deplaats|hetnetwerkadres|waardedelen<strong>van</strong>deapplicatiezichpaaldeidentiers(namenofnummers)aanaanroeperenaangeroepenetoe deapplicatieopnieuwgecompileerdbehoeftteworden. Opdezemanierishetmogelijkdatservers<strong>van</strong>plaatsveranderenzonderdat zullengaanbevindenhoeftopditmomentnognietvasttestaan.Pasbij dedaadwerkelijkeaanroep,atrun-time,wordthetnetwerkadresvastgesteld.<br />

traalrpcmeldpunt.Bijeenaanroepzoekthetrpc-systeembijditcentrale meldpuntuitopwelknetwerkadresdegevraagdeprocedurezichbevindt. Zodrahetnetwerkadresisvastgesteldgaatdecommunicatiedirect|zonder Zogauweenserverprocesisopgestartmaakthetzichbekendbijeencen-<br />

j.beveiliging gebodenvoordeadresseringsproblematiek[Birrell]. hulp<strong>van</strong>hetcentralemeldpunt.Zowordteenexibeleenecienteoplossing<br />

<strong>van</strong>tweemethodes:.versleuteling<strong>van</strong>berichtenenidenticatie<strong>van</strong>vragers Voorhetbeveiligen<strong>van</strong><strong>gedistribueerde</strong>systemenwordtgebruikgemaakt <strong>van</strong>eenbepaaldedienst.Omongeauthoriseerdgebruik<strong>van</strong>eenremotepro- moetwordenvastgesteldofdeaanroeperdeproceduremaguitvoeren. ceduretevoorkomenwordenbeidetechniekentoegepast.Bijelkeaanroep<br />

plekopgeslagen.In<strong>gedistribueerde</strong>systemenwordengebruiksrechtenvaak opeenmeer<strong>gedistribueerde</strong>manierbijgehouden.Processenkunnenzelf traalwachtwoordbestandgedenticeerd.DegebruiksrechtenzijnopeenIngecentraliseerdesystemenwordengebruikersmetbehulp<strong>van</strong>eencenDitvoorkomtdatdeservereerstzelfdebeheerder<strong>van</strong>hetwachtwoordendenkandezedirectvaststellenofhetverzoekgehonoreerdmagworden. eensoortsleutelkrijgendieeengebruiksrechtvertegenwoordigd.Doordeze<br />

bestandmoetraadplegenbijeenaanroep<strong>van</strong>eenclient.Eenalternatiefissleutel|of`capability'|meteenverzoekaaneenanderprocesmeetezen- datdeserverszelfbijhoudenwiehetrechttotgebruikheeftmetbehulp<strong>van</strong><br />

<strong>gedistribueerde</strong>systementoegepast[Coulouris]. matieoverhunclientsbehoevenbijtehoudenwordtdezemethodeinveel zogenaamde`accesscontrollists'[Mullender2].<br />

Doorhetauisteren<strong>van</strong>communicatielijnenzoudenderdengegevensof Omdatserversbijhetgebruik<strong>van</strong>capabilitiesmindertoestandsinformenkandecommunicatieversleuteldworden.Erbestaanveelcryptogra<br />

DataEncryptionStandard(des)<strong>van</strong>deAmerikaanseoverheidwordtveel wachtwoordenencapabilitiesinhandenkunnenkrijgen.Omdittevoorko-<br />

toegepast.Omeensnelleversleutelingtebereikenisdesinhardwareis gemplementeerd. schetechnieken.In[Tanenbaum3]wordenereenaantalbeschreven.De<br />

biedt<strong>van</strong>grootbelang. waaropgebruikersomgaanmetdemogelijkhedendiehetsysteemhiervoor Vooreenadequatebeveiliging<strong>van</strong><strong>gedistribueerde</strong>systemenisdewijze<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 69


3.4.3 k.parallellisme <strong>Applicatie</strong>ontwikkeling<br />

Communicatieinrpc-systemenverlooptsynchroon.Nadatdeaanroeper<br />

doormetdeuitvoering<strong>van</strong>hunproces. eenrpcheeftuitgevoerdwachthijopantwoord.Demate<strong>van</strong>parallellisme communicatie.Bijasynchronecommunicatiegaanclientenserverbeide <strong>van</strong>eenapplicatieisbijsynchronecommunicatieminderdanbijasynchrone<br />

deserverkantkunnenzichmeerproblemenvoordoen.Veel<strong>gedistribueerde</strong> verrichtendoorverschillendeprocessenpseudo-paralleluittevoeren.Aan processenschedulen.Aandeclientkantkandeprocessorsteedsnuttigwerk Wanneerdeclientopantwoordwachtkanhetoperatingsystemandere<br />

applicatieswordenzodaniggestructureerddatvoorbepaaldedienstenspe- metverzoeken<strong>van</strong>meerdereclientstegelijktemakenkrijgen. ciekeserverswordenaangewezen(zieookx3.4.4).Dezeserverskunnen<br />

langewachttijdenkunnenontstaanvoornieuweclients.Daarnaastmoeten kunneninfifovolgordewordenafgehandeld.Hetnadeelhier<strong>van</strong>isdater afgelopenkanhetrpc-systeemverschillendewegenbewandelen.Verzoeken Alsereenrpcaankomtbijeenserverterwijleenvorigerpcnognietis<br />

heeftgedaantreedterdeadlockop.Vaakzaleendeadlockdooreentime- rpcdoetnaareenandereserverprocedurediealsclientneteenrpcnaarA out<strong>van</strong>hetrpc-systeemwordenopgeheven.Ominecienteverwerkingte applicatieontwerpersmetdeadlockrekeninghouden.WanneerserverAeen<br />

voorkomeniseenzorgvuldigontwerp<strong>van</strong>applicatiesnoodzakelijk. werpen.Omtoteenbetererespons<strong>van</strong>hetsysteemtekomenkanhet operatingsystemookvoorelkerpceennieuwserverprocesopstarten.Veel operatingsystemskennenalleenheavy-weightprocessen.Voorhetopstarten Voorontwerpers<strong>van</strong>rpc-systemenzijnfifoserverseenvoudigteont-<br />

enpseudo-paralleluitvoeren<strong>van</strong>heavy-weightprocessenmoethetoperating systemsteedseencontextswitchuitvoeren.Ditisinecient[Coulouris].<br />

plaatsen<strong>van</strong>eenproceskost,opweegttegendeverkorting<strong>van</strong>deresponstijd.tekunnennemenmoethetoperatingsystemwetenofdetijd,diehetvercesnaareenandereprocessorverplaatstkunnenworden.Omzo'nbeslissingWanneerderpceenom<strong>van</strong>grijkeprocedurebetreftzouhetnieuwepro- Inx3.4.3wordtoppagina73nogeenvariantbeschrevenwaarbijmeerdere inactieveprocessenstand-bywordengehouden.<br />

hier.Voorserverproceduresdiezwaarbelastzullengaanwordenkande verproceswordenopgestart.Deoverhead<strong>van</strong>eencontextswitchontbreektvoorelkerpcookeennieuwethread-of-controlbinnenhetalbestaandeser- Wanneerhetoperatingsystemlight-weightprocessenondersteuntkan<br />

applicatieprogrammeurookhierreplicatietoepassen. ratingsystemsalsunix.seerdzijnduidelijkbetereprestatiesdanserversinheavy-weightprocesopeVolgens[Coulouris]leverenserversdieoplight-weightprocessengeba- 70 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall 3.4.3Structuur<strong>van</strong>eenimplementatie 3.4.3<br />

Hiervoorzijnverschillendeaspectendiebijhetontwerp<strong>van</strong>rpcimplemen-<br />

&Nelson[Birrell]hebbenontworpenbeschreven. makenwordtindezeparagraafdestructuur<strong>van</strong>hetrpc-systeemdatBirrell tatieseenrolspelenbeschreven.Omdemanierwaaropdezeaspectensamenhangenbijdeimplementatie<strong>van</strong>eencompleetrpcsysteemduidelijktekenteenrpc-subsysteemdatviasystem-callsrpcenanderegos-primi- operatingsystem,datinhetXeroxparcisontwikkeld.Ditoperatingsystem tievenaanbiedt.Delevel5probleemgeorienteerdetalendiehetsysteem Hetrpcsysteemmaaktonderdeeluit<strong>van</strong>hetCedar<strong>gedistribueerde</strong><br />

ondersteuntzijnbcpl,Interlisp,Smalltalk,CenMesa.Voordezetalenis eeninterfacecompiler,Lupine,beschikbaar.<br />

Opbasis<strong>van</strong>dezeinformatiekunnencompile-timetypechecks(gescheiden) staatuiteenlijstprocedurenamenmethunparameter-enresultaattypen. interface<br />

voorclientenserverwordenuitgevoerd.EenmoduledieproceduresimVoorapplicatiesmoeteeninterfacemodulegeschrevenworden.Dezebeplementeertexporteertdeinterface.Eenmoduledieproceduresaanroept importeertdeinterface.<br />

(zieguur3.3).Declientroeptdestubaanalseengewoonlokaleprocedure. decontactpersoon(agent)is<strong>van</strong>deeigenlijkeremoteprocedureofaanroeper `stubs'wordengenoemd.Eenstubiseenproceduredieopdelokalemachine Opbasis<strong>van</strong>deinterfacemodulegenereertLupinehulpproceduresdie<br />

rpc.Destubaandeserverkantwordtnaont<strong>van</strong>gst<strong>van</strong>deboodschapdoor netwerktemakenhebben.Ditzijnzakenalshetverzendklaarmaken<strong>van</strong> parametersenhetaanroepen<strong>van</strong>desystemcallsvoorhetuitvoeren<strong>van</strong>de Hetiseengewoonlokaleprocedure.Destubregeltdetailsdiemethet<br />

catieprogrammeurgeschrevenfunctieaan.hetoperatingsystemaangeroepenenroeptopzijnplaatsdedoordeapplischrijven.Lupinezorgtvoorhetgenereren<strong>van</strong>codevoorhetin-enuitpakken<strong>van</strong>parameters(marshalling)enhetaanroepen(dispatchen)<strong>van</strong>tiecodeteschrijven.Zemoetenalleeninterface-,client-enservermodulesOpdezewijzebehoevenprogrammeursgeengedetailleerdecommunica- gemeenschappelijkeadresruimteuitgaan. pinegaatooknaofdeprogrammeurgeenparametersgebruiktdie<strong>van</strong>eendejuisteprocedurevooreenbinnengekomenaanroep(ziepagina80).Lu[Coulouris]alscentraalmeldpuntvoornetwerkadresbepaling<strong>van</strong>remoteprocedures. HetCedarrpcsysteemgebruiktdeGrapevine<strong>gedistribueerde</strong>database<br />

tietoegepast.Hetrpc-subsysteemimplementeert`light-weightconnection communicatieprotocol Alscommunicatieprotocoliseenspecialevorm<strong>van</strong>datagramcommunica- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 71


3.4.3 <strong>Applicatie</strong>ontwikkeling<br />

Figuur3.3:Stubs[Birrell]<br />

aanroep lokale clientaanroependemachine<br />

-clientstub pakparametersin-subsysteem verzend rpc<br />

terugkeer lokale pakresultaatuit ont<strong>van</strong>g wacht<br />

importeur interface 6exporteur<br />

?<br />

aanroep serverstub metersuitpakpara- subsysteem rpc<br />

geefterug werk<br />

exporteur ? importeur pakresul-<br />

interface 6taatin<br />

aangeroepenmachine<br />

-<br />

6 zaanroep<br />

packet<br />

server ont<strong>van</strong>g ?<br />

- -verzend -zpacket<br />

antwoord<br />

72 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall management'metalsprimairdoeleensnellecommunicatietewaarborgen. 3.4.4<br />

rpc'seenvolgendrpc-berichtalsacknowledge<strong>van</strong>devorigeoptevatten. Delichtgewichtverbindingwordtbereiktdoorbijeensnelleopeenvolging<strong>van</strong> Opdezemanierishetnietnodigdatvoorelkeboodschapeenbevestiging <strong>van</strong>goedeont<strong>van</strong>gstwordtverstuurd.<br />

catieprotocollagen<strong>van</strong>hetoperatingsystemheenomeenzosnelmogelijkeschappelijketoestand<strong>van</strong>deaanroeperdieeenrpcdoetendeserverdiedezeaanroepaccepteert.Hetrpc-subsysteemgaatomdehogerecommuniInditprotocolwordteenverbinding(connection)gezienalsdegemeen- responsteverwerkelijken. ecientie<br />

houden.Eenrpckanzowordenuitgevoerdzonderdatertelkenseenextrasenzijnheavy-weight.Omdurecontextswitchestevoorkomenwordtopelkemachineeenaantalserverprocessendoorhetrpc-subsysteemstand-bygeDetaalMesaondersteuntexceptionsenparallelleprocessen.Dezeproces- deprogrammeur. procesgecreeerdmoetworden.Dezemanier<strong>van</strong>werkenistransparantvoor Grapevinedatabasevooridenticatiedoelenendedesversleutelmethode voorcommunicatie. Voordebeveiliging<strong>van</strong>hetsysteembiedthetCedarrpcsysteemde<br />

isbijhetontwerp<strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkelomgevingeninhet afwegingspeeltnietalleenbijhetontwerp<strong>van</strong>rpc-systemeneenrol,maar isresolvingthetensionbetweenpowerfulsemanticsandeciency."Deze Birrel&Nelsonschrijvenin[Birrell,p.42]:"Animportantissueindesign<br />

dureaanroephoort,naastdeindevorigeparagraafbeschrevenpunten,ookalgemeen<strong>van</strong>belang(x2.3enx3.3).Bijdesemantiek<strong>van</strong>eenlokaleproceprotocolenserverprocesstructuuriseensnelleresponsnagestreefd.<strong>van</strong>eenrpctevereenvoudigen.Methetoptimaliseren<strong>van</strong>communicatie- eensnellerespons.MetdeinterfacecompilerLupineisgetrachthetgebruik<br />

3.4.4Client/server Eenbelangrijkmodelbijapplicatiesdieomreden3en4<strong>van</strong>x2.1.4opgedis-<br />

inabstractezinleentzichgoedtotgebruik<strong>van</strong>determen`client'en`server'. gebruikt[Birrell,Coulouris].Debeschrijving<strong>van</strong><strong>gedistribueerde</strong>systemen debespreking<strong>van</strong>loosely-coupled<strong>gedistribueerde</strong>systemenwordtditvaak tribueerdesystemenwordengemplementeerdishetclient/servermodel.Bij<br />

vijfhoeklinksbovenophetscherm",of"Openbestand`/usr/mail/berg001' als:"Haalallenamenop<strong>van</strong>saldo'sdienegatiefzijn",of"Zeteenzachtrode zoekteenbepaaldetaakvoorhemteverrichten.HetkunnenverzoekenzijnDeclient/serverbenaderinghoudtindateenproceseenanderprocesverprocessorendiedaarhetmeestgeschiktvoorzijn.Bijvoorbeeld:eendatabasemachineisgeschiktvoorbestandsmanipulatie,eneengraschwerksta- voorschrijven",of"Geefdebestezetdiedekoninginope4kandoen". Declient/serverbenaderingis,dattakenmoetenwordentoegekendaan<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 73


3.4.5 tion(ofeenpc)voorinteractiemetdegebruiker.Hetwerkstationstuurt <strong>Applicatie</strong>ontwikkeling<br />

aandegebruiker. alsclientqueriesaandeserver.Declientgeeftdeantwoordengraschweer Gebruik<strong>van</strong>eenclient/serverarchitectuurkanleidentot:18 Minimaliseren<strong>van</strong>denetwerkbelastingdoorecienteverdeling<strong>van</strong> taken.<br />

Ecientgebruik<strong>van</strong>debeschikbareprocessoren. cessoruittevoeren.Eenzosnelmogelijkeresponsdoortakenopdemeestgeschiktepro- Structurering<strong>van</strong>programma's(vergelijkdemonolitischemonitor<strong>van</strong> x2.1.1).<br />

Hetisdebedoelingdatdeboodschappendieuitgewisseldwordenzoklein mogelijkzijnomzohetnetwerk,vaakdetraagstecomponentinhetsysteem, Doorparallelleuitvoeringbetrouwbaarheidofrekensnelheidverhogen.<br />

weinigtebelasten[Coulouris].<br />

deinterfaces(gegevensstromen)tussenverschillendesubsystemen<strong>van</strong>een ing[VanKatwijk].Hierwordtgetrachteenpartitioneringtevindendiesysteemanalyse[DeMarco]en-ontwerp[Page-Jones]ensoftwareengineer- Methodenomtoteengoedepartitioneringtekomenzijnbekenduitde<br />

titioneringvormenbijmonolitischeprogramma'seenproces.Voorgrotere applicatieskandezeaanpaktotbeheersproblemenaanleidinggeven.De programmaminimaliseert.Demodulesdiehetresultaatzijn<strong>van</strong>dezepargroeperen|oververschillendeprocessenteverdelen|wordthetpartitione-<br />

complexiteit<strong>van</strong>deapplicatiewordtondanksdepartitioneringtegroot. Doornumodules<strong>van</strong>eenprogrammainmeerdereautonomeeenhedente<br />

catiegebruikmaken.gemeenschappelijkeglobalevariabelen.Zemoeten<strong>van</strong>explicietecommuni- wordtrelatieflosstaandeeenhedenopgesplitst.Dezeprocessenbezittengeen ringsprincipeopeenhogerniveaunogmaalstoegepast.Hetprogramma<br />

hetzoekennaardebesteverdelingovermogelijkheterogeneprocessoren. Deinterproces-communicatiediehierdoornodigwordtwordtmetbehulp Client/serverpartitioneringlevertmodulesinverschillendeprocessenop. Bijhetpartitionerenvoorclient/serverapplicatiesisdebepalendefactor<br />

valleneenantwoordterugaandeclient.Send-enreceive-primitievenzijn inveel<strong>gedistribueerde</strong>operatingsystems(level3)gemplementeerd.Eris eenserverdieeenbepaaldeserviceaanbiedt.Deserverstuurtinveelge- <strong>van</strong>message-passinggemplementeerd.Declientstuurteenboodschapaan<br />

applicatiesondervindthier<strong>van</strong>hinder[Rochkind]. hetrpcparadigmaveelvuldigtoegepast.Deontwikkeling<strong>van</strong>multiproces geenstandaardvoorinterproces-communicatieoplevel5niveau,alwordt<br />

7418Nadelen<strong>van</strong>hetclient/servermodelzijninx3.4.5beschreven. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall 3.4.5Nadelen<strong>van</strong>hetRPCmodel 3.4.5<br />

bueerdeprogramma'stevereenvoudigen.Helaaszijnsommigeproblemen Hetremoteprocedurecallparadigmawordtinveel<strong>gedistribueerde</strong>systemen<br />

moeizaammetbehulpeenrpcteimplementeren. Hetrpc-modelgeefteenelegantconceptomhetschrijven<strong>van</strong>gedistri- gebruikt.rpcheeftdestatus<strong>van</strong>eenheiligekoegekregen[Tanenbaum4].<br />

circuitmodel<strong>van</strong>osi.Ditstreeftgeentransparantienazoalshetrpc- communicatie|sendenreceive. model.19Hetvirtueelcircuitmodelbestaatuitasynchronepoint-to-point Eenalternatiefvoorhethighlevelrpcmodelishetlowlevelvirtueel<br />

concept(1) modelbeschreven.Onderdevolgendekopjeswordendriesoortenproblemen<strong>van</strong>hetrpc- tegelijkertijdactief.Eenrpciseensynchronecommunicatievorm.Ditlevert voorveeltoepassingenproblemenop.Vaakishetwenselijkdatbijclientof roeptdeserveraanwaaropdeserverantwoordt.Clientenserverzijnnooit Hetrpc-modelgaatuit<strong>van</strong>tweepartijen:declientendeserver.Declient<br />

client.Wanneerdegebruikereenvraaggeformuleerdheeftpleegtdeclienteenapplicatiediebestaatuiteendatabase-servereneengebruikersinterface- servereenbepaaldemate<strong>van</strong>asynchroneverwerkingmogelijkblijft.<br />

eenrpcnaardedatabase.Deserververwerktdequeryengeeftalsresultaat Terillustratie<strong>van</strong>ditprobleemdienentweevoorbeelden.Heteersteis<br />

derecordsdiedegebruikergevraagdheeft.Declientpresenteertdezerecords<br />

wilonderbreken.Inhetrpcmodelishetnietmogelijkdateenclient tijdvraagtkanhetgebeurendatdegebruikerzichbedenktenhetverzoek aandegebruiker.<br />

voorhijantwoordheeftgekregennogactiesonderneemt.VoordezesituWanneerdegebruikereenquerygeformuleerdheeftdieveelverwerkingsdiehettweedeverzoek|hetafbreekverzoek|aandeserverstuurt.Deseratiemoeteenoplossinggezochtwordenzoalsbijvoorbeeldeentweedeclientvermoetdeboodschapaccepterenendeuitvoering<strong>van</strong>devorigerpconderbreken.Hetineersteinstantiehelderemodel|vraag/antwoord|wordt latenverzenden.Degebruikerzaleensnellereresponstijdervaren,hoewel hierdooraanmerkelijkgecompliceerd.<br />

detotaleverwerkingstijdnietbekortis.Omsteedsdeelresultatentekunnen isdataandecriteria<strong>van</strong>declientvoldoetditdoordedatabaseserverte Eenandereoplossingzoukunnenzijnomzogauweenrecordgevonden<br />

zendenmoetvolgenshetrpcmodeldeclientnaont<strong>van</strong>gst<strong>van</strong>elkrecord hetvirtuelecircuitmodelzekerdenkbaar[Tanenbaum4]. eenrpcvooreenvolgendrecordplegen.Ecientereoplossingenzijnmet<br />

oplossingenop.Eenvoorbeeld<strong>van</strong>eenprobleemdathiermeekanworden goritme.Debranch-and-boundmethodebouwteenboom<strong>van</strong>mogelijke 19Hetpoogtniet<strong>van</strong>hetgebruik<strong>van</strong>explicietecommunicatieprimitieventeabstraheren. Hettweedevoorbeeldbetrefteenbranch-and-boundoptimalisatieal-<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 75


3.4.5 opgelostishetTravellingSalesmanProbleem,tsp.Deparallelleversie<strong>van</strong> <strong>Applicatie</strong>ontwikkeling<br />

tevoorkomendatdeclientprocessorennahetplegen<strong>van</strong>eenrpconbenut ditalgoritmezoektdelen<strong>van</strong>deboomparallelaf.Elkeprocessorverwerkt<br />

blijvenmoeternaasthetoorspronkelijkclientprocesvoorelkeserverproces- geschiedtdooreenproceseenrpcnaareenvrijeprocessortelatendoen.Om eendeel<strong>van</strong>deboom.Detoewijzing<strong>van</strong>deelbomenaanserverprocessoren<br />

soreenagentproceszijn.Voordatdeclienteenremoteprocedureaanroept splitsthijeersteenagentprocesafdatderpcpleegtenophetantwoord aanwezigwaar<strong>van</strong>deagentprocessenwachtenopantwoord. blijftwachten.Opdeprocessorzijneenaantalpseudo-parallelleprocessen erbijtspeenglobalekortstepadvariabelemoetwordenbijgewerktdoor deprocessoren.Inhetrpc-modelishetnietmogelijkomdeuitvoering <strong>van</strong>eenrpcteonderbrekenomeennieuwkortstepaddoortegevenaan Naastdezevrijgecompliceerdeclientstructuuriserhetprobleemdat<br />

alleservers.Hierdoorwordterineenrpc-implementatiewatwerkteveel kunnenverhelpen[Bal]. gedaan,desearchoverhead.Eenasynchronemulticastzouditprobleem<br />

iszaldetweederpcmoetenwachtentotdeeersteklaarisindienrpc kanaccepterenterwijleenandererpcwordtuitgevoerd.Nietelkeserver ishiertoeinstaat.Wanneerheteenfifo-engeenmulti-threadedserver Inhetdatabasevoorbeeldwassprake<strong>van</strong>eenserverdieeentweederpc<br />

prestaties(2) problematiekookbesproken. hetenigeinterproces-communicatieparadigmais.Oppagina70wordtdeze<br />

clientopdeserverwachten.Omparallellismetebereikenmoeteenclient zelfeersteenextraprocesopstartendatasynchroonaanderpcuitgevoerd Een<strong>van</strong>debestaansredenen<strong>van</strong><strong>gedistribueerde</strong>systemenissnelleverwerkanworden.Desynchronerpciseeneenvoudig,maarinecientparaking<strong>van</strong>programma's|reden1<strong>van</strong>x2.1.4.Inhetrpcmodelmoetdedigma.Omhogeprestatiestebereikenmoetmeerwerkverrichtworden<br />

danbijhetvirtueelcircuitmodel.Aandeserverkantgeldteensoortgelijke problematiek. structurerenhunprogrammazodatveelkleineproceduresveelgebruikte dietweewaardenomwisseltaantreen.Wanneerzo'nkleine,veelgebruikte takenuitvoeren.Ineensorteermodulekanmenbijvoorbeeldeenprocedure Derpclijktopeengewoneprocedureaanroep.Veelprogrammeurs<br />

procedureperongelukeenremoteprocedurewordtzaldeverwerkingstijd <strong>van</strong>hetprogrammadoordecommunicatieoverheadsterktoenemen.<br />

transparantie(3) tueelcircuitmodeliszo'nvergissingnietmogelijk[Tanenbaum4].Bijhetgebruik<strong>van</strong>eenniet-transparantcommunicatiemodelalshetvir- 76 eigenschappen<strong>van</strong>deshared-memoryprocedureabstractiezijningedistribu- Eenrpcmoettransparantzijnvoordeapplicatieprogrammeur.Sommige <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


RemoteProcedureCall eerdesystemennietofmoeizaamteimplementeren.Ditzijnglobalevaria- 3.4.5<br />

suggereertvolledigetransparantie,terwijldezenietwordtgerealiseerd. belen,pointervariabelen,referenceparameters,typechecking<strong>van</strong>parameters<br />

conclusie enfaal-semantiek.Dezepuntenzijninx3.4.2behandeld.Hetrpc-model<br />

Systemendiealleenderpcalsprimairecommunicatieprimitievenaanbieden passingmoetenvoorhandenblijven.schietenvoorsommigetoepassingentekort.rpcisnietgeschiktalsalgemeencommunicatieparadigma.Alternatievenalspoint-to-pointmessage <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 77


Hoofdstuk4<br />

BeoordelingSunomgeving<br />

Sunbesproken. Indithoofdstukwordtde<strong>gedistribueerde</strong>applicatieontwikkelomgeving<strong>van</strong><br />

4.1 4.1.1Gedistribueerdsysteem Beschrijving<br />

EenSunsysteemisopgebouwduiteenverzamelingwerkstationsdieineen lanmetelkaarverbondenzijn.DeSunwerkstationszijncomputersdie geschiktzijnvoorgraschetoepassingen.Zehebbeneenbeeldschermmet werkstation/servermodel. eenhogeresolutie.Hetoperatingsystempresenteertzichmeteenguiaande gebruiker.Indetypologie<strong>van</strong>x2.3.1valtdeSunomgevingindecategorie<br />

genoegopslagcapaciteitvoorallegebruikersopgenomen.Debestanden<strong>van</strong> Hetzijndisklesswerkplekken.Inhetnetwerkzijneenpaarleserversmet tewerkstationsbinneneenSunsysteembevattengeensecundairgeheugen.AlslanwordtEthernet[Matthijsen,Tanenbaum3]toegepast.Demees- gebruikersenapplicatieprogrammeurslijkthetalsofereengecentraliseerd alleleserverstezamenzijnineenvirtueellesysteemopgenomen.Voor<br />

ratingsystemmetdenaamnfs(NetworkFileSystem).Hetoperating systemheetSunOS.Hetisgebaseerdopunixvariantbsd4.3.Netals lesysteemaanwezigis.<br />

unixkentSunOSalleenheavy-weightprocessen. Dezetransparantiewordtgerealiseerddooreencomponent<strong>van</strong>hetopeprimitievenniettransparant.Hetzijnnos-primitieven.Eventueletranspa-<br />

gedistribueerdoperatingsystem.Ophetgebied<strong>van</strong>bestandsbeheerbiedt nfsgos-primitievenaan.Watbetreftgeheugen-enprocesbeheerzijnde HetSunOSiseencompromistusseneennetwerkoperatingsystemeneen<br />

unix[Rochkind]heeftSunderpctoegevoegd.nfsismetbehulp<strong>van</strong>rpc's geschreven.Erbestaanhulpmiddelenwaarmeeapplicatieprogrammeursde rantiewordthieraandelevel5vertalersovergelaten.<br />

rpc-primitievenvoorhunprogramma'skunnengebruiken. Aandebestaandemechanismenvoorinterproces-communicatie<strong>van</strong>bsd<br />

78


Beschrijving 4.1.2<strong>Applicatie</strong>ontwikkeling 4.1.2<br />

Deontwikkeling<strong>van</strong>toepassingsprogramma'sisgebaseerdopconventionele systeemontwikkelhulpmiddelenvoorsequentieleunixoperatingsystems.De meesteontwikkeltoolszijnopontwikkelinginCgeorienteerd. applicaties(x3.4.4).Ditzijnapplicatiesdieomreden3en4<strong>van</strong>x2.1.4op <strong>gedistribueerde</strong>systemengemplementeerdworden. DeSunomgevingisontworpenvoorhetontwikkelen<strong>van</strong>client/server<br />

UNIX<br />

bestaathetCsyntaxanalyseprogrammalint.VoorCprogramma'sdie pilerkanweinigtypechecksuitvoerenomdatCveelimplicietetypeconversiestoestaat[Kernighan2].Voorhetopsporen<strong>van</strong>dubieuzeconstructiesDebasis<strong>van</strong>unix-applicatieontwikkelingisdeCcompiler,cc.DeCcom- uitmeerderemodulesbestaankandecompilatievolgordebewaaktworden<br />

afhankelijkhedendoordecompilerzelfbewaakt. wel#include-lesof.h-lesgenoemd)opstellen.BijAdawordendeze deprogrammeurafhankelijkhedentussenmodulesendeclaratieles(ook metmake|gescheidencompilatie(pagina67).Vooreenprogrammakan<br />

staathetpakketsccs(SourceCodeControlSystem).Hetachterhalen<strong>van</strong> enxdbgeschieden. semantischefoutenatrun-timekanmetverschillendedebuggersalsadb,sdb Omverschillendeversies<strong>van</strong>programmamodulesecienttebeherenbe-<br />

RPC<br />

wordeninCgeschreven.Hetiseenomgevingvolgensx3.2.1. tievendieviabibliotheekroutineskunnenwordenaangeroepen.<strong>Applicatie</strong>sdaardprogrammeertaalontwikkeld.Hetoperatingsystembevatrpc-primiVoordeontwikkeling<strong>van</strong><strong>gedistribueerde</strong>applicatiesisgeennieuwestandersteuntSunalleenC.Detaalelementen(concepten)diedevirtueleC machinezijngebruikeraanreiktzijnprimairopaansluitingopdelevel3 passinggeschikt[Hoare].Voor<strong>gedistribueerde</strong>applicatieontwikkelingonNietelkeprogrammeertaalisvoorhetprogrammeren<strong>van</strong>elksoorttoe- implementeren<strong>van</strong>sommigetoepassingenkanmenbetervooreenandere machinegerichteprogrammeertaal[Kernighan2,Rochkind,Bal].Voorhet taalkiezen,mochtdezekeuzebestaan. laaggericht.Erwordenweinighighlevelprimitievengeboden.Ciseen<br />

tiesteschrijvendiegegevensuitwisselenmetcomputers<strong>van</strong>andereleveranstandaard,dexdrofExternalDataRepresentation,ishetmogelijkapplicatastructureninheterogene<strong>gedistribueerde</strong>systemen.Metbehulp<strong>van</strong>dezeSunondersteunteenstandaardvoordeuitwisseling<strong>van</strong>complexeda- [Sun1]`lowlevel'genoemd.Vanwegedecomplexiteitwordtafgeradende decvax-en,ibmpc'senCraysupercomputers[Sun1]. ciers.Hetismogelijktecommunicerenmetonderanderesunwerkstations,<br />

rpc-primitievendirecttegebruikenvoorhetschrijven<strong>van</strong>programma's. Programmerenmetrpc-primitievenuitbibliotheekroutineswordtin<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 79


4.1.2NaastdezelowlevelprimitievenbiedtSunOSeenstubgeneratoraan, BeoordelingSunomgeving<br />

rpcgen.Voordezegeneratormoeteeninterfacemodulegeschrevenworden.Dezeinterfacemodulewordtdoorrpcgengebruiktomclient-enser systeem<strong>van</strong>Birrell&Nelson(x3.4.3,[Birrell]).Inguur4.1isconceptueel verstubstegenereren.DestubsvervullendezelfdefunctiesalsinhetCedar deplaats<strong>van</strong>stubsenSunOSweergegeven.Deguurgeeftaanhoeeen applicatieprogrammeurdeverschillendevirtuelemachinesziet.<br />

client Figuur4.1:Sunrpcomgeving<br />

rpcgenclientstub<br />

netwerk SunOS rpcgenserverstub server 6<br />

? netwerk SunOS<br />

- -6<br />

machineA machineB<br />

aanroepen<strong>van</strong>xdr-primitievenwaarmeedeparametermarshallingplaats- proceduresgespeciceerd.Ditgebeurtindexdr-taal.Deinterfacemodule wordtookwel.x-legenoemd.Destubsdierpcgengenereertbevatten Indeinterfacemodulewordendedatatypes<strong>van</strong>parameters<strong>van</strong>remote<br />

aanteroepen. nereertdaarnaasteenheaderlemetdeclaratiesdienodigzijnomdestubsvindt.Zebevattenookdeaanroepen<strong>van</strong>rpc-primitievenvoorverzendingenont<strong>van</strong>gst<strong>van</strong>parameters,enhetdispatchen<strong>van</strong>derpc.rpcgenge- alsgelinktelijstenenbomenmoetengeconverteerdwordenineenvormdie hetoperatingsystemkanverwerken.Bijoverdrachttussenverschillende enhetweeruitpakkendoordeont<strong>van</strong>ger.Gecompliceerdedatastructuren Marshallingishetverzendklaarmaken<strong>van</strong>parametersdoordeverzender<br />

typenoperatingsystemsmoetendegegevensineenstandaardrepresentatie gecodeerdworden.<br />

eendispatcherdieopbasis<strong>van</strong>hetverzoekdegevraagdeprocedureaanroept. unieknummer.Inverzoeken<strong>van</strong>clientaanserverwordtmetditnummer aangegevenwelkeserverprocedureaangeroepenwordt.Serversbestaanuit Dispatchingvindtbijdeserverplaats.Elkeremoteprocedureheefteen<br />

80 grammeurszelfmoetenspecicerensterkteruggedrongen.Doorhetgebruik<strong>van</strong>rpcgenwordthetaantalsystem-callsdatpro- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beschrijving werkwijzeRPCGEN 4.1.2<br />

In[Chin,p.6]issamengevathoeeenrpcgen-applicatiewordtgebouwd: 2.Genereerdestubsmetrpcgen(naam_clnt.cennaam_svc.c). 1.Maakdelemetinterfacedenities(naam.x).<br />

4.Includedeheaderle(naam.h)inclientenserverencompileerbeide 3.Schrijfdeclient-enservermodules.<br />

5.Compileerdeserverstub(naam_svc.c)endelemetdedatatransportroutines(naam_xdr.c).Linkdezemetdeservermodule. gescheiden.<br />

6.Compileerdeclientstub(naam_clnt.c)endelemetdedatatrans-<br />

8.Startdeclientopdeclientmachine. 7.Startdeserveropdeservermachine. portroutines(naam_xdr.c).Linkdezemetdeclientmodule.<br />

Inguur4.2zijndeverschillendelesdiebijditproceseenrolspelen<br />

Declientkantiseengebruikersinterfaceindevorm<strong>van</strong>eenspreadsheet. worden.Deapplicatiebestaatuittwee(sets)les:spreadsheet.cendbms.c. applicatiebeschrevenwelkelesdoorwelkecompilerofgeneratorgebruikt weergegeven.1Indeguurwordtalsvoorbeeldaandehand<strong>van</strong>eenctieve<br />

Aandeserverkantziteendatabaseback-enddatqueriesenupdates<strong>van</strong>de clientuitvoert.<br />

Inditvoorbeeldisuitgegaan<strong>van</strong>eenclienteneenserver.Hetismogelijk ven.rpcgengenereerttweestubleseneendataconversiele.Vervolgens wordentweeuitvoerbareprogramma'sgecompileerd:declientendeserver. Omdezeapplicatietecompilerenwordteerstdeinterfacemodulegeschre-<br />

RPCGEN omcomplexereconguratiesteprogrammeren.Ziebijvoorbeeld[Chin].<br />

parametertypenzijn.Deinterfacedenitieheetbijrpcgeneen.xofxdr meurindeclareertwelkeremoteproceduresdeapplicatiebevatenwatdeDestubgeneratorheefteendenitielenodigwaardeapplicatieprogram- proceduredeclaratieuitgaan.VergelijkdeprototypesdieansiaanCheeft toegevoegd(pagina67). le.Devoornaamstetaakiservoorzorgendatclientenserver<strong>van</strong>dezelfde<br />

terhebben.Wanneerertochmeerdereparametersnodigzijnmoetendezeter<strong>van</strong>derpcgenstubs.Inhetvoorbeeldhiernaheeftfunctie`bereken'ineenstructuregeplaatstworden.Dezestructureisdandeeneparamerpcgenrpc'skunnenmaareeninputparametereneenoutputparame- bereken_uit=bereken(bereken_in);aangeroepenmoetenworden. eeninputstructureeneenoutputstructure.Deremoteprocedurezouals<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 1Uitgezonderddeheaderle. 81


4.1.2 BeoordelingSunomgeving<br />

Figuur4.2:rpcgenles<br />

RPCGEN<br />

<br />

interfaceclnt.c interfacexdr.c ? @@@@@@@@@R <br />

interfacesvc.c<br />

CC @@RCC spreadsheet dbms<br />

BBBBN<br />

spreadsheet.c interface.x ? dbms.c<br />

QQQQs +<br />

? ?<br />

**client-serverapplicatiemet1remoteprocedure /* **interface.x */ **XDRfilemetdeinterfacedefinitie<strong>van</strong>een<br />

/* **Function'bereken'--inputparametertypen */ structbereken_IN_t{ intnb; floatb[10]; intna; XDRintegerdeclaratie XDRarraydeclaratie type<strong>van</strong>deinputparameter<br />

82floata[10]; <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingontwikkelomgeving }; intotaalvierinputparameters 4.2<br />

/* **Function'bereken'--outputparametertypen */ structbereken_UIT_t{ intnc; floatc[10]; intresultaat; returnwaarde<strong>van</strong>deremotefunctie type<strong>van</strong>deoutputparameter<br />

/* **Versionnumbersforprogramandremoteroutines }; intotaaldrieoutputparameters<br />

*/ programPROG{ versionVERS{<br />

}=0x2000076; }=13; bereken_UIT_tbereken(bereken_IN_t)=1; programmanummervolgensSunnorm versienummer<strong>van</strong>hetprogramma volgnummer<strong>van</strong>deprocedure:1<br />

hetsysteemaanwezigis.Dezefunctieheetclnt_create().Deapplicatietiewordenaangeroepen.Dezekijktofhetopgegevenserverprogrammainprogrammeurmoeteventuelefoutcodes<strong>van</strong>defunctiezelfafhandelen.DeVoordateenstubaangeroepenmagwordenmoeteersteeninitialisatiefunc- beslissingofhetprogrammamoetstoppennaeenfoutofhetnogeensmoet<br />

kiezenvoordatagramverkeer.Naeentime-outvolgtretransmission.Deze netwerkprotocoldeboodschappenverzondenmoetenworden.Menkanudp proberenwordtaandeprogrammeurovergelaten.<br />

optieisgeschiktvoorapplicatiesdieidempotentzijn(pagina62).Wanneer Bijdeclnt_create()initialisatiekandeprogrammeuropgevenviawelk<br />

colgebruikt.Dezeoptiebiedtat-most-oncesemantiek.Zijisgeschiktvoorgekozenwordtvoortcpwordteenconnectionorientedcommunicatieproto- applicatiesdieproceduresmetside-eectshebben.<br />

den.Pasnadateropeenrpc-foutgetestismagdeeigenlijkeinterpretatiedezemisschienNULLis.Ditgeeftaandatereenrpcsysteemfoutisopgetre- dezeparametergebruiktmagwordenmoetdeprogrammeureerstkijkenof Declientstubgeefteenpointernaardeoutputparameterterug.Voordat<br />

4.2 <strong>van</strong>hetfunctieresultaatplaatsvinden.<br />

Inhoofdstuk3zijntweegroepencriteriaaangelegd.Deeerstegroep<strong>van</strong> achtcriteriadientvoordebeoordeling<strong>van</strong><strong>gedistribueerde</strong>applicatieontwik- Beoordelingontwikkelomgeving<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 83


4.2.1 kelomgevingeninhetalgemeen.Detweedegroep<strong>van</strong>elfcriteriaisgericht BeoordelingSunomgeving<br />

opspeciekekenmerken<strong>van</strong>systemendieopderemoteprocedurecallzijn gebaseerd.<br />

4.2.1Gedistribueerdheid overeenstemming,envoortwijfelachtig. Hierbijstaat+voorovereenstemmingmetdezepunten,voorredelijke<br />

eerdeprimitievenwordenmetbehulp<strong>van</strong>bibliotheekroutinesaangeroepen. Erbestaateenstub-generatordieanaloogaanx3.4.3hetgebruik<strong>van</strong>de DeSunomgevingkentgeenspeciale<strong>gedistribueerde</strong>taal.Decompilervoor <strong>gedistribueerde</strong>applicatiesisdestandaardunixCcompiler.Gedistribu- bibliotheekroutinesvereenvoudigt. parallellisme(1) Gecentraliseerdesequentieletalenkennenhetprocesalseenheid<strong>van</strong>uitvoecatiemoetmenminstenstweeprogramma'sschrijven.Eenclientprogrammaishetproces.ElkCprogrammavormteenproces.Ineenclient/serverappliring.DeSunomgevingisopC,eensequentiele,procedureletaalgebaseerd.<br />

Deomgevingkentalleenexplicietparallellisme.Deeenheid<strong>van</strong>parallellisme<br />

rpc.Hetrpc-modelisgerichtopprocedures,nietopprocessen.Meerdere processenkunnenmetdestandaardunixforkenexecprimitievenexpliciet eneenserverprogramma.<br />

gecreeerdworden.Voorapplicatieontwikkelingzijnditvrijingewikkelde Processenwordenlokaalimplicietgescheduleddooruitvoering<strong>van</strong>een<br />

primitieven.DeSunomgevingkentalleenheavy-weightprocessen. lingwordtdoordeprogrammeurzelfverzorgtdoorclientenserverexpliciet opeenbepaaldemachineoptestarten.Lokaleschedulingzoumenmet behulp<strong>van</strong>unixsystemcallskunnenbenvloeden. Hetaantalprocessenwordtatcompile-timebepaald.Deglobalescheduschiktvoorhetontwikkelen<strong>van</strong>client/serverapplicaties.Descheduling<br />

laagabstractieniveau|exibiliteittenkoste<strong>van</strong>transparantie.Ditpastbij moetdoordeprogrammeurverrichtworden.DeSunomgevingbiedteen Explicietparallellismemetprocesalseenheid<strong>van</strong>parallellismeisgedigenduitgewerkt:<br />

interproces-communicatie(2) deprogrammeertaalC[Kernighan2,p.1].HetpuntparallellismeisbevreHetSunoperatingsystembiedtmessage-passingintweevormenaan:da-<br />

Ethernetlan's.Point-to-pointmessages-passingmetudpoftcpverloopt ControlProtocoloftcp.Beidemaken|indeSunomgeving|gebruik<strong>van</strong> DataProtocolofudp.HetconnectionorientedprotocolishetTransmission tagramenconnectionoriented.HetdatagramprotocolishetUnreliable<br />

synchroon.<br />

84 is<strong>van</strong>belangvoordefaal-semantiek(ziepagina67).DeSunomgeving Derpc-communicatiekan<strong>van</strong>beideprotocollengebruikmaken.Dit <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingontwikkelomgeving implementeertgeenvormen<strong>van</strong>gemeenschappelijkegegevens.rpcishet 4.2.1<br />

voordenadelenhier<strong>van</strong>). groteverscheidenheidaanprimitievenondersteund:+Helaasisrpchet enigehighlevelcommunicatieparadigma<strong>van</strong>deSunomgeving(ziex3.4.5<br />

enigehighlevelparadigma:+= Hetrpc-paradigmapastbijdevorm<strong>van</strong>parallellisme.Erwordteen<br />

fouttolerantie(3)<br />

foutconditietesignaleren.Deapplicatieprogrammeurmoettelkenswanneer HetSunoperatingsystemnochdetaalCisfouttransparant.Zebiedenook geenbouwstenenalsatomaireobjecten.DetaalCkentgeenexceptions.De bibliotheekroutines<strong>van</strong>derpc-primitievenretournereneenfoutcodeomeen<br />

bestaansredenen<strong>van</strong><strong>gedistribueerde</strong>systemen:parallellismeenfouttoleran- moetzelfdegewenstemate<strong>van</strong>fouttolerantieprogrammeren. eenprocedurewordtaangeroepenhetresultaatopfoutencontroleren.Men<br />

tie(x2.3.3).Oordeel: DeSunomgevinggeefteenslechteondersteuningvooreen<strong>van</strong>detwee<br />

integratiesemantiek(4) DetaalCstaathetgebruik<strong>van</strong>globalevariabelentoe.Erwordtveelgebruikgemaakt<strong>van</strong>pointervariabelen,metnamevoordeoverdracht<strong>van</strong> referenceparameters.Dezemethodeszijnnietbruikbaarin<strong>gedistribueerde</strong><br />

geving:Doordeinterfacecompilerrpcgenwordeneenaantal<strong>van</strong>deze applicaties.Hetismakkelijkomhierfoutenmeetemaken.DeSunomgeving<br />

problemenopgelost(ziepunt5enpuntb).Oordeel:= biedtgeenondersteuningbijhetopsporen<strong>van</strong>ditsoortfouten. DesequentieletaalCisnietzogeschiktvooreen<strong>gedistribueerde</strong>om-<br />

complexiteit(5)<br />

HierdoorkandeprogrammeurvooreenvoudigeapplicatiesdemeestebibliDecombinatie<strong>van</strong>Cenrpc-system-callsiscomplex.Omhetgebruikteverotheekroutinesvermijden.eenvoudigeniseeninterface-compileraanhetontwikkeltrajecttoegevoegd.gendatnietalleenspecialistenmaarookgewoneapplicatieprogrammeurs programma'svoor<strong>gedistribueerde</strong>systemenzoudenkunnenschrijven. HetdoeldatBirrell&Nelsonoppagina8formuleerdenwaservoorzor- Derpcomgevingbestaatuiteengroteverzamelingbibliotheekroutines.<br />

synchronerpcbiedtdeSunomgevingeenslechteondersteuning.Deprimitievenzijnaanwezig2maarhetgebruiker<strong>van</strong>isingewikkeld.DeSun omgevingbiedtbuitenrpcgenslechtslowlevelprimitieven.Dezezijnvoor Voorapplicatiesdieenigszinsandereeisenstellendaneenstandaard<br />

systeemprogrammeurs,nietvoorapplicatieprogrammeurs.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 2Bijvoorbeeldvoorasynchroneclients,asynchroneserversenbroadcastrpc. 85


4.2.1rpcgenverminderddecomplexiteit<strong>van</strong>deC/system-callcombinatie BeoordelingSunomgeving<br />

Oordeel: typesecurity(6) aanmerkelijk,erklevenechterooknadelenaanrpcgen(ziepuntcenf).<br />

omfoutentemaken.Metnamehetgebruik<strong>van</strong>pointersenarraysgeeft aanleidingtotveelfouten. tertype-checksmogelijkgemaakt.DesondankszijnermogelijkhedenteoverCisniettypesecure.Deintroductie<strong>van</strong>prototypesinansiCheeftparame- zelfprogrammeren. correcteconstructiesonderkennen.Run-timechecksmoetdeprogrammeurHetprogrammalintkaneenaantalsyntactischjuistemaarmogelijkin- tussenaanroependenitie<strong>van</strong>remoteprocedures. Cisniettypesecure: Deinterface-compilerrpcgenwaarborgtconsistentie<strong>van</strong>parameters<br />

eengrootaantalsoftwarelagen.Deparameters<strong>van</strong>eenaanroepworden kostrelatiefveeltijd.Bijhetuitvoeren<strong>van</strong>eenrpcdoorlooptdeaanroep ecientie(7)<br />

veelvuldiggekopieerd:<strong>van</strong>clientnaarstub,<strong>van</strong>stubnaarkernelen<strong>van</strong> Hetunixoperatingsystemiseenmonolitischemonitor.Eencontextswitch<br />

kernelnaarnetwerkbuer.Micro-kerneloperatingsystemszijnbetergeschiktvoorsnellecommunicatiedanhetunixoperatingsystem[Coulouris].voudigtegebruikenprimitieve.Inx3.4.5zijneenaantalredenengenoemdblemenindewegstaat.Inuitzonderingsgevallenkanmendelowlevelwaaromhetrpcparadigmaeenecienteimplementatie<strong>van</strong>sommigeproVoordebouw<strong>van</strong>applicatiesbiedtSunOSalleenderpcaanalseen- opgebruiksamenmetdehighlevelprimitieven.IndeSundocumentatie mitieven.Helaaszijndelowlevelcommunicatieprimitievennietafgestemd wordtgeadviseerdomuitsluitenddehighlevelrpcprimitievensamenmet unixsocket-interfacegebruiken.Dezeimplementeertsendenreceivepri-<br />

deinterface-compilertegebruiken. paradigmaiseenredelijkecientcommunicatieparadigma(ziepagina45). Oordeel: Deecientie<strong>van</strong>unixisvooreenrpc-systeemnietoptimaal.Hetrpc-<br />

AbstractSyntaxNotation<strong>van</strong>hetisoosireferentiemodel,x.409.Opdit genenetwerken.Dexdrstandaardisvolgens[Sun1]vrijwelgelijkaandeSunOSondersteuntdexdrstandaardvoorgegevensuitwisselinginhetero- overdraagbaarheid(8)<br />

puntisheteenzogenaamd`opensysteem'.<br />

lerenmoetdeomgevingrpcgenendedoorSungebruikterpc-primitieventrictiedathetplatformeenunixoperatingsystemmoetzijndatudpoftcpalscommunicatieprotocolondersteunt.OmdeapplicatietekunnencompiWatbetreftdeoverdraagbaarheid<strong>van</strong>deprogrammatuurgeldtderes- 86 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingontwikkelomgeving ondersteunen.Doordatsommigeleveranciersditdoenishetmogelijkappli- 4.2.2<br />

opereren. catiesteschrijvendieookopanderesystemendanSunwerkstationskunnen<br />

overdragen<strong>van</strong>eenrpcgen-applicatienaareenomgevingdienietdeSun rpc-primitievenondersteuntzaldeprogrammeurdecommunicatiemodules inverschillende<strong>gedistribueerde</strong>operatingsystems[Coulouris].Voorhet Erbestaateengrotevarieteittussenimplementaties<strong>van</strong>rpc-primitieven<br />

gebied. <strong>van</strong>hetprogrammamoetenaanpassen.Erzijnnoggeenstandaardenopdit<br />

4.2.2RPC DeSunomgevingconformeertzichaanrele<strong>van</strong>testandaarden:+<br />

Indezeparagraafwordenspeciekerpcaspecten<strong>van</strong>deSunapplicatieontwikkelomgevingbeoordeeld.Inx3.4.2zijnperpunteenaantalmogelijkhedenbesproken.Opbasis<strong>van</strong>dezemogelijkhedenwordenhierdekeuzesdie deSunontwerpersgemaakthebbenbesproken.<br />

temen.Probleem:interprocesglobalevariabelenhebbengeenbetekenisinRPCsys- a.globalevariabelen<br />

tweeprocedurestoe.IndeSunomgevingbestaatelkprocesuiteenapart programma.ElkprogrammawordtgescheidengecompileerddoordeCcompiler.Deinterfacecompilercompileertalleende.x-le.Hetprogramma Cstaathetgebruik<strong>van</strong>globalevariabelenvoorcommunicatietussen<br />

lintwerktopeenper-programmabasis.Hetbiedtinditgevalgeenop- eenglobalevariabeleninverschillendeprogramma'snietgesignaleerd.De lossing.Inhetontwikkelproceswordthetgebruik<strong>van</strong>dezelfdenaamvoorplicatiesvooruniprocessorenonderunixdoetzichditprobleemookvoor.<br />

programmeurwordtnietgewaarschuwdtegenditsoortfouten. Programmeursdiemetdeunixomgevingbekendzijnwordennietmeteen onbekendfenomeengeconfronteerd. Bijhetontwikkelen<strong>van</strong>conventionelepseudo-parallellemultiprocesap-<br />

nietonderkend: b.pointervariabelen Pogingentotfoutiefgebruik<strong>van</strong>interprocesglobalevariabelenworden<br />

variabelentedeclareren.Pogingenhiertoewordendoorrpcgennietgeac hebbengeenzin. Probleem:pointervariabelenineenandereadresruimte|eenanderproces|<br />

cepteerd.InCwordenvectoren(arrays)enrecursievedatastructurenmet behulp<strong>van</strong>pointersopgebouwd.Voorhetgebruik<strong>van</strong>onderanderebomen, Hetisnietmogelijkomindexdrtaalindeinterfacedenitiepointerrerenwaarmeedezestructurenontleedkunnenwordenvoorverzendingen<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling gelinktelijstenengrafenalsparameterkanrpcgenmarshalling-codegene- 87


4.2.2 weeropgebouwdbijont<strong>van</strong>gst.Dezecodemaaktdeeluit<strong>van</strong>derpcgen- BeoordelingSunomgeving<br />

stubs.<br />

welonderkend,enrecursievedatastructurenzijnmogelijk:+ nitiegedeclareerdheeftisditprocesverdertransparant. Pogingentotfoutiefgebruik<strong>van</strong>interprocespointervariabelenworden Wanneerdeprogrammeurdedatastructureneenmaalindeinterfacede-<br />

c.parameters Probleem:desemantiek<strong>van</strong>referenceparametersismoeilijkteverwezenlijkeninRPCsystemen.rameterswilgebruikenmoetdezezeinstructures(tuples)groeperen.Zieeneenresultaatwaardeaeveren.Wanneerdeprogrammeurmeerderepa- puntf. Sunremoteprocedureskunnenhooguiteeninputparameteraccepteren<br />

declareren.Sunremoteprocedureszijnopditpuntniettransparantvoor Sunrpc's.Deprogrammeurmoetexplicietderichting<strong>van</strong>deoverdracht tersinput,enwelkeoutputzijn.HetbegripcallbyreferencebestaatnietbijDeprogrammeurspeciceertindeinterfacedenitiezelfwelkeparamedracht<strong>van</strong>rpcgenrpc's: degebruiker.<br />

d.faal-semantiek ParameteroverdrachtinCverschiltfundamenteel<strong>van</strong>parameterover-<br />

uitvallen<strong>van</strong>systeemcomponentenmoeilijkteondersteunen. Probleem:desemantiek<strong>van</strong>lokaleproceduresisvoorremoteproceduresbij<br />

bouwstenenomzero-or-onesemantiekmeeteimplementeren. side-eectshebben.DeSunomgevingisnietfouttransparantenkentgeen lingtothetfunctionele,ziepagina62).ProcessenenprocedureskunnenDeSunomgevingkenthetconventioneleprocesbegrip(integenstelcoltespecicerenenzotussendatagramofconnectionorientedverkeertekiezen.Menmoetspecicerenofhetudpofhettcpgebruiktmoetworden.Oppagina62en67isaangegevendatopdezewijzevoorat-least-onceHetismogelijkomvoorelkeremoteprocedurehetcommunicatieproto- procedure|idempotentofside-eects|kandeprogrammeurdegewenste ofat-most-oncesemantiekgekozenkanworden.Afhankelijk<strong>van</strong>hettype semantiekkiezen.<br />

ditvoorapplicatiesdieeenhogemate<strong>van</strong>fouttolerantievereisenproblebrokenprocedurewordtbijat-most-oncesemantiekaandeprogrammeur overgelaten.Netalsbijdelast-onesemantiek<strong>van</strong>eenlokaleprocedurekan Hetherstel<strong>van</strong>detoestand<strong>van</strong>deomgeving<strong>van</strong>eenhalverwegeondermatischworden.Voordeimplementatie<strong>van</strong>eengedistribueerdvluchtreserveringssysteemofeen<strong>gedistribueerde</strong>banktoepassingisdezevorm<strong>van</strong><br />

semantiekmindergeschikt[Liskov].<br />

88 [Coulouris,Liskov]nodigheeftofineenat-most-onceomgevinggemple- Ofeentoepassingmetside-eectszero-or-oneomgevingenalsArgus <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingontwikkelomgeving menteerdkanwordenkomtneeropeenafwegingtussenfouttolerantieen 4.2.2<br />

at-most-onceofat-least-oncesemantiek<strong>van</strong>eenrpceenwaardevollemoge- ecientie(x3.3.3).<br />

lijkheidvoordeprogrammeur:+plementatie<strong>van</strong>fouttolerantieapplicatiesbiedt(punt3),isdekeuzevoorGegevendehetfeitdatdeSunomgevinggeenfaciliteitenvoordeim- applicatieformuleren? e.foutcode/exceptions Probleem:opwelkewijzemoetdeprogrammeurdefoutafhandelinginde<br />

subsysteemfoutengesignaleerdwordenkanmenhetresultaatgebruiken.elkerpchetresultaatopfoutencontroleren.PaswanneerergeenrpcDaarbijmoetdeprogrammeurzelfdegewenstemate<strong>van</strong>fouttolerantiepro- DetaalCkentgeenexceptions.<strong>Applicatie</strong>programmeursmoetenbij<br />

grammeren. applicaties.DeprogrammeurwordtnietdoordeSunomgevingtothet schrijven<strong>van</strong>dezecodeverplicht.Veelrun-timefoutentredenopdoordatprogrammeursvergetenuitputtendefoutafhandelingscodeteschrijven rpcapplicatiesbevattenmeerfoutafhandelingscodedangecentraliseerde<br />

[Bal]. [Chin].HetfeitdatCniettypesecureis,isookbijgecentraliseerdeapplicatieeenprobleem[Rochkind].Ineen<strong>gedistribueerde</strong>contextisditprobleem groteromdatparallelleapplicatiesvaaknon-deterministischgedragvertonen<br />

me: moetindeSunomgevingveeltijdwordengereserveerd. DeSunomgevingisniettypesecureenkentgeenexception-mechanis- Voordetest-enfoutherstelfaseinhetontwikkelproces<strong>van</strong>eenapplicatie<br />

altijdeenconsistenteprogrammeeromgevingop. Probleem:<strong>gedistribueerde</strong>ensequentieleprimitievensamenleverenniet f.integratieinprogrammeertaal<br />

afgeradenzedirecttegebruiken.Hiertoebiedtmenrpcgenaan.Om aangegevendatgebruik<strong>van</strong>dezeprimitievenergingewikkeldis.Hetwordt Derpc-primitievenwordenviadebibliotheekaangeroepen.In[Sun1]wordt InhetontwikkeltrajectwordtdestandaardunixCcompilergebruikt.<br />

rpcgentegebruikenmoetdeprogrammeureeninterfacedenitieschrijven.<br />

deparametersineenstructureplaatsen.Deserverproceduremoetdeze meterkennen.Voorelkeaanroep<strong>van</strong>eenstubmoetdeprogrammeureerst[Chin].Hetprobleemisdatzemaximaaleeninput-eneenoutputpara- rpcgengenereertstubs.Dezestubszijnomslachtiginhetgebruik<br />

indeoutputstructureplaatsen.Deaanroepermoetdeze,nacontroleop structureweeruitpakkenomdeparameterstekunnengebruiken.Voorhet rpc-systeemfouten,danweeruitpakken. verzenden<strong>van</strong>hetresultaatmoetdeserverproceduredeoutputparameters<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 89


4.2.2Eenbijkomendprobleemisdatbijditprocesgebruikwordtgemaakt BeoordelingSunomgeving<br />

<strong>van</strong>pointersnaarparameters.HetCrun-timesysteemvoertgeenvalidi-<br />

hebbenvrijtegeven[Sun1]. hetjuistemomentgeheugendatxdrrpc-primitievengealloceerdkunnen teitscontrolesuitopdewaarden<strong>van</strong>pointerverwijzingen.Hierwordenveel foutenmeegemaakt[Chin].Verdermoetdeprogrammeureraandenkenop<br />

aanroepveelhandelingenverrichten.Hierbijkunnenveelfoutengemaaktprogrammeurmoetbijeenrpcinvergelijkingmeteenlokaleproceduredigd,hetgebruik<strong>van</strong>destubszelfvereistdenodigevoorzichtigheid.DeHetgebruik<strong>van</strong>rpc-primitievenisdoorderpcgen-stubsvereenvougelsmoetsignalerenishierniettoegepast.worden.[Hoare]'suitgangspuntdateentaalalleafwijkingen<strong>van</strong>detaalre- rpcgen-stubsniettransparantvoordeprogrammeur. rpc-conceptteverhogen.Vanwegedewijze<strong>van</strong>parameteroverdrachtzijn aanroeptevertalenineenlokaleaanroepteneindedetransparantie<strong>van</strong>het Birrell&Nelson(x3.4.3hebbenstubsgentroduceerdomeenremote<br />

g.interfacedenitie Deintegratie<strong>van</strong>rpcgen-stubsenCisslecht:<br />

enservermodulesspeciceren? Probleem:opwelkemaniermoetdeprogrammeurdeinterfacetussenclient<br />

programma,versieenproceduremoetenwordengegeven.Deprogrammeur omgevingwordenindeinterfacedenitieremoteproceduresendedatatypenvoordeparametersgespeciceerd.Ooknummersteridenticatie<strong>van</strong> Veelrpcsystemenkenneneeninterfacecompiler[Coulouris].IndeSun<br />

coordinatiepunt. hetzelfdenummerkiezen.Sunmicrosystemstreedtindezeopalscentraal moetdezezelfkiezen.Hetismogelijkdattweeprogrammeursinhetsysteem<br />

DezelijktsterkopC.Inx5.4.3wordenuitzonderingenbeschreven. Dexdr-syntaxsluitgoedaanopdetaalC:+ Despecicatiesyntaxvoordeparametersinde.x-leisdexdrtaal.<br />

Probleem:(a)hetRPCsysteemmoeteencommunicatieprotocolaanbieden datvoordetoepassinggeschiktis(snelofbetrouwbaar);(b)hetRPCsysteem h.gegevensoverdrachtprotocol<br />

gatievebijkomstigheidisdatdepakketgrootte<strong>van</strong>eenudp-datagramnietpotent|ofconnectionoriented|betrouwbaar/side-eects|kiezen.Eenne moetrepresentatieproblemeninheterogenenetwerkenoplossen.<br />

meerdan8kilobytesmagzijn.VoorvectorenofanderesamengesteldedaBijheteerstepuntkandeprogrammeurzelfvoordatagram|snel/idem- biedthieradequatemogelijkhedentoe. singdegewenstesemantiektekunnenkiezenbeschreven.DeSunomgevingtastructurenkandittekleinzijn.Inpuntdishetbelang<strong>van</strong>demogelijkheidomafhankelijk<strong>van</strong>detoepas- 90 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingontwikkelomgeving Hettweedepuntbetreftgegevensrepresentatie.HetSunrpc-subsysteem 4.2.2<br />

catieprotocollen.Hetmoetrepresentatieproblemenzelfoplossen.Hiertoemaaktgeengebruik<strong>van</strong>volgenshetosi-modelgestructureerdecommuni- meebezigtehouden. stubsmakengebruik<strong>van</strong>dezeprimitieven.Behalvedoorspecicatie<strong>van</strong> parametertypenindeinterfacedenitie,hoeftdeprogrammeurzichhierniet biedtSunOSxdr-primitievenindevorm<strong>van</strong>bibliotheekroutines.rpcgen-<br />

i.netwerkadressering conversiegebruiktSundexdrstandaard:+Deprogrammeurkankiezentussenudpentcp,envoordegegevensProbleem:opwelkewijzewordenaanroeperenremoteprocedureinhetnetmeldtzichaanbijeencentraalpuntdatdeclientbijdeeersterpcraadwerkbekendgemaakt?pleegt.Dezevorm<strong>van</strong>bindingpaartexibiliteitaanecientie[Birrell]. vaststellen<strong>van</strong>netwerkadressen|atrun-timekanplaatsvinden.Deserver Oppagina68iseenmethodebeschrevenwaarmeename-binding|het<br />

centraalpuntdatdenetwerkadressen<strong>van</strong>serversaanclientsdoorgeeft. iseenzogenaamde`portmapper'aanwezig.Dezevervultdefunctie<strong>van</strong> Deportmapper<strong>van</strong>deSunomgevingwerktgoed:+ DeSunomgevingpasteenvergelijkbaremethodetoe.Opelkemachine<br />

j.beveiliging Probleem:biedthetRPCsysteemeenecienteeneectievebeveiliging?<br />

ticatieen(c)DESidenticatie.HetrpcsysteemimplementeertalleendeSunrpcsysteemondersteunt(a)geenbeveiliging,(b)standaardUNIXidengingkiezendiebijclient/servercommunicatiegebruiktmoetworden.HetDeprogrammeurkaninbeperktematedegewenstevorm<strong>van</strong>beveili- <strong>van</strong>hetidenticatieresultaatbesluitenwelkeactiewordtondernomen.Dit identicatie<strong>van</strong>clients.Deprogrammeur<strong>van</strong>deservermoetzelfopbasis kanbijvoorbeeldhetnietuitvoeren<strong>van</strong>derpcenhetterugsturen<strong>van</strong>een statuscodemetdereden<strong>van</strong>weigeringzijn.<br />

versleuteling: berichten. HetSunrpc-subsysteemkentgeenprimitievenvoorversleuteling<strong>van</strong><br />

k.parallellisme DeSunomgevingkentalleenvoorzieningenvooridenticatie,nietvoor<br />

mate<strong>van</strong>parallellismetebereikenineenapplicatie. Probleem:hetismoeilijkmetsynchronecommunicatieprimitieveneenhoge<br />

multi-threadedserversenstand-byprocessenbeschrevenomdemate<strong>van</strong> rpcaankomtbijeenserverterwijldezebezigeenandererpcuittevoeren wordtdelaatsteineenwachtrijgeplaatst.Oppagina70zijntechniekenals DeSunomgevingondersteuntsingle-threadedfifoservers.Wanneereen<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 91


4.2.3 parallellisme<strong>van</strong><strong>gedistribueerde</strong>applicatiesteverhogen.Dezewordenniet BeoordelingSunomgeving<br />

toegepast. operatingsystemisdatalleenheavy-weightprocessenondersteunt.Hetoperatingsystem<strong>van</strong>hetsysteem<strong>van</strong>Birrell&Nelson(x3.4.3)isookeenomgevingmetalleenheavy-weightprocessen.Zijpasseneentechniektoewaarbij EenbelangrijkebeperkingdiehierineenrolspeeltisdatSunOSeenunix<br />

hierzelfvoorcreatie<strong>van</strong>eennieuweserver. eenaantalprocessenstand-bywordengehouden.Hetrpc-subsysteemzorgt<br />

vencreeerdemenvoorelkerpc-transactieeenapartserverproces.Hierplementeerd.Hierbijistwijfelgerezenoverdewenselijkheid<strong>van</strong>parallelleserversindeSunomgeving.MetconnectendisconnectprimitieEenhieraanverwanteoplossingisin[Chin]voordeSunomgevinggemmeewordtextraoverheadgentroduceerdvoorelketransactie.Hetcreerenlastemachineslangteduren.Erzijngeenprestatiemetingenvermeld.Vol<strong>van</strong>eennieuw(heavyweight)serverprocesbleekmetnamebijzwaarbethreadedservers)ondersteunenbetereprestaties.gens[Coulouris]leverenoperatingsystemsdielightweightprocessen(multi 4.2.3Samenvatting DeSunomgevingkentalleenfifoservers:<br />

catieontwikkelomgevingaandebehandeldecriteriavoldoet.IndezetabelHieronderwordtsamengevatinwelkematedeSun<strong>gedistribueerde</strong>appli- wordenveelaspecten<strong>van</strong>eenuitgebreideencomplexeomgevingineenpaar<br />

noemdblijven.Omtevoorkomendateenverkeerdbeeldontstaatmoetde Sunomgevingnooitadequaatbeschrijven.Detabelisnietmeerdaneen geforceerdbeknoptesamenvattingwaarinveelbelangrijkeaspectenonge- symbolensamengevat.Zo'nbeoordelingkandewerkelijkewaarde<strong>van</strong>de<br />

beschrijvingbijdecriteriahiervoornietuithetoogverlorenworden.<br />

overeenstemmingmetdezepunten,voorredelijkeovereenstemming,en voorhetontwikkelen<strong>van</strong>toepassingsprogramma's.Hierbijstaat+voor Sunomgevingsamengevat.Dezeaspectenzijnbeoordeeldopgeschiktheid Allereerstwordtdeovereenstemmingmetdealgemeneaspecten<strong>van</strong>de<br />

voortwijfelachtig.<br />

criterium 1.parallellisme Gedistribueerdeomgeving<br />

2.communicatie 3.fouttolerantie proces,scheduling:compile-time rpcgoed,point-to-pointingewikkeld kern<strong>van</strong>deuitkomst score<br />

4.integratie 5.complexiteit geenbouwstenen Cnietzogeschiktvoorrpc +=<br />

6.typesecurity Cisniettypesecure rpcgenisredelijk = <br />

7.ecientie 8.overdraagbaarheidxdr,unix unixoverhead,alleenrpcparadigma<br />

92 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling<br />

+


Beoordelingontwikkelomgeving Devolgendetabelvatdeovereenkomstvoorderpcaspectensamen. 4.2.3<br />

criterium rpcaspecten<br />

b.pointers a.globalevariabelen geenwaarschuwing kern<strong>van</strong>deuitkomst score<br />

d.faal-semantiek c.parameters eenin,eenuit nietmogelijkalsparameter keuzemogelijk + +<br />

<br />

h.protocol g.interfacedenitie e.foutcode f.integratierpc niettypesecure,geenexceptions rpcgen-stubs:in-enuitpakken xdr,typechecks xdr,keuzeudp/tcp +<br />

k.parallellisme j.beveiliging i.netwerkadressering`portmapper' alleenidenticatie fifo-server +<br />

Uitdebeoordelingkomtnaarvorendatdevolgendepuntenverbeterd <br />

kunnenworden: 1.FouttolerantieBouwstenenvoorhetimplementeren<strong>van</strong>fouttolerante toepassingenontbreken.Hierwordtonderzoeknaarverricht.Camelot<br />

2.IntegratieDeintegratie<strong>van</strong><strong>gedistribueerde</strong>primitievenindesequen- implementeert. [Spector]iseenbibliotheekvoordetaalCdietransactieprimitieven<br />

3.ProgrammeerfoutenDeSunomgevingisniettypesecure.Eenandere voor. tieletaalCismatig.Eenanderetaalishierwellichtbetergeschikt4.TransparantieVerkeerdgebruik<strong>van</strong>globalevariabelenwordtnietonderkent.Eenoplossingzouhetuitbreiden<strong>van</strong>lintvoormultiproces<br />

taaldieweltypesecureiskanditprobleemverhelpen.<br />

5.TransparantieDeparametersemantiek<strong>van</strong>delokaleprocedureabstractiewordtnietondersteund.Deprogrammeurmoetzelfdeparameters programma'szijn.<br />

6.TransparantieDeprogrammeurmoetveelfoutcontrolesprogramme- ininputofoutputgroeperen.<br />

7.TransparantieHetgebruik<strong>van</strong>derpcgen-stubsismoeizaam.De programmeurmoetbijelkerpcparameterin-enuitpakcodeschrijven. ren.Wanneerditwordtvergetensignaleerthetsysteemditniet.<br />

8.ParallellismeDestructuur<strong>van</strong>Sunrpcserversisfifo.Ditisniet Hierbijmaaktmensnelfouteninhetgebruik<strong>van</strong>pointers.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling bevorderlijkvoordemate<strong>van</strong>parallellisme<strong>van</strong>applicaties. 93


4.2.3 Inhetvolgendehoofdstukwordteenverbeteringvoordepunten5,6en7 BeoordelingSunomgeving<br />

gepresenteerd.Eenoplossingvoordezepuntenlijkteenminderingrijpende<br />

wordenishetonderwerp<strong>van</strong>devolgendetweehoofdstukken. Dezedriepuntenhebbenallebetrekkingopdemate<strong>van</strong>transparantie<strong>van</strong> deremoteprocedurecall(probleemstelling).Inhoeverredezeverhoogdkan verandering<strong>van</strong>deSunomgevingtevereisendanbijdeanderepunten.<br />

94 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Hoofdstuk5<br />

Verbeteringen<br />

Indithoofdstukwordtbeschrevenhoehetontwikkelen<strong>van</strong>toepassingsprogramma'svoordeSunomgevingvereenvoudigdkanworden.Hierwordthet 5.1 modelbeschreven,inx6.3enappendixAhetprototype.<br />

schrevencriteriavoor<strong>gedistribueerde</strong>applicatieontwikkelomgevingen.DeDeSunomgevingvoldoetopeenaantalpuntennietaandehiervoorbe- ProblemenSun<br />

systemendiezero-or-onesemantiekbiedenteimplementeren(pagina62). Daarnaastishetrpcparadigmabijsommigetoepassingennietgeschikt applicatiesdieeenhogemate<strong>van</strong>bedrijfszekerheidvereiseneenvoudigerop Sunomgevingisnietvoorallesoortentoepassingenevengeschikt.Zozijn<br />

<strong>van</strong>parallellismeisditgeengoedeoplossing. vooreenecienteimplementatie(x3.4.5).rpc'swordendoorSunrpctimaaldoordeSunomgevingondersteund.Doordecomplexewijze<strong>van</strong>serversinfifovolgordeuitgevoerd.Voorapplicatiesmeteenhogemate<br />

parameteroverdrachtwordenhiersnelfoutenbijgemaakt.Hetgebruik<strong>van</strong> remoteproceduresisniettransparantvoordeprogrammeur. Hetopsporen<strong>van</strong>foutenin<strong>gedistribueerde</strong>programma'swordtnietopdersteuning<strong>van</strong>standaardCprogramma'sgeformuleerd.Uitdebeoordelingomgevingvoordeprogrammeurcentraal.Inx1.3isalsdoelstellingdeon-<br />

<strong>van</strong>deSunomgevingzijnvierpuntennaarvorengekomenwaarbijdeSun Deprobleemstelling<strong>van</strong>ditonderzoeksteltvereenvoudiging<strong>van</strong>deSun<br />

rpcniettransparantisvoordeprogrammeur.Ditzijnoppagina93punt 4,5,6en7.<br />

lintuitbreidenvoor<strong>gedistribueerde</strong>omgevingen.Voorditonderzoekisdit, kanmendefunctionaliteit<strong>van</strong>bestaandesyntax-analysehulpmiddelenals bruik<strong>van</strong>interprocesglobalevariabelennietonderkent.OmditoptelossenInpunt4wordtbeschrevendatdeSunomgevingpogingentothetge- ondanksdeuitgesprokenmening<strong>van</strong>[Hoare]indeze,nietgedaan.Descope <strong>van</strong>globalevariabelenisineensequentieleomgevinghetprogramma.Bijhet ontwikkelen<strong>van</strong>een<strong>gedistribueerde</strong>applicatiemoetdeprogrammeurvoor elkbenodigdproceseenapartprogrammacreeren|elkmetinterneeneigen 95


5.1.1 Verbeteringen<br />

main()procedure.Doordatdeprogrammeurexplicieteenmulti-programma<br />

applicatieschrijftligthetmindervoordehanddatmeneenonjuisteseman-<br />

tiek<strong>van</strong>interprocesglobalevariabelenveronderstelt.In[Chin]isditpunt<br />

nietalsprobleemgenoemd.<br />

5.1.1RPCGEN-stubs<br />

Punt5,6en7zijnproblemendieoptredenbijhetgebruik<strong>van</strong>doorrpcgen<br />

gegenereerdestubs.Dezezijnookin[Chin]genoemd.rpcgen-stubshebben<br />

eeninputeneenoutputparameter.Ommeerdereparameterstegebruiken<br />

moetdeprogrammeurgebruikmaken<strong>van</strong>complexestructures.Deopbouw<br />

<strong>van</strong>dezestructuresmoetvoorafinde.x-legespeciceerdworden.Bijde<br />

aanroep<strong>van</strong>eenremoteprocedure|rpcgen-stub|moetenmeerfoutcon-<br />

troleswordenuitgevoerddanbijeenlokaleprocedureaanroep.<br />

Hetgebruik<strong>van</strong>rpcgen-stubsisniettransparantvoorprogrammeurs.<br />

Hetconcept`stub'isdoorBirrell&Nelsongentroduceerdomnetwerkcom-<br />

municatiedetailsafteschermenvoordeprogrammeur(x3.4.3).Destubs<br />

zijntebeschouwenalseenschilomdedetailsheen.Dezeschilofvertaalslag<br />

biedtalleenhighlevelrpc-communicatieprimitievenaandeprogrammeur<br />

aan.Delow-levelcommunicatieprimitievenzijnnietmeerzichtbaar.<br />

Doornueenextraschilomdegebruiksonvriendelijkerpcgen-stubsheen<br />

teleggenkunnendedetails<strong>van</strong>parameterstructuregebruikvoordeprogram-<br />

meurverhuldworden.Dezeextravertaalslagheefttotdoeleenprocedu-<br />

reabstractietebiedendiemeerovereenkomtmetdeconventionelelokale<br />

procedure-abstractie<strong>van</strong>detaalC.Volgensdeeis<strong>van</strong>transparantiezou<br />

eenstubnetzomoetenkunnenwordenaangeroepenalseengewonelokale<br />

procedure.Deextraschilbestaatuitstubsdieopdegewonewijzeworden<br />

aangeroepenendandegebruiksonvriendelijkerpcgen-stubsaanroepen.<br />

Destubs<strong>van</strong>deSunomgevingwordendooreencodegeneratorgeprodu-<br />

ceerd.Deextrastubs<strong>van</strong>deextraschilwordendooreennieuwecodegene-<br />

ratorgeproduceerd.Ditkandooropbasis<strong>van</strong>standaardCprogramma's<br />

inputlesvoorrpcgentegenereren.Eenprogrammadatditdoetver-<br />

taaltCproceduredeclaratiesnaarderpcgentaal.Hetiseenpreprocessor<br />

voorrpcgen.Dezepreprocessorwordtverder`PreRpcgenProcessor'of<br />

prpgenoemd.Doorprphoeftdeapplicatieprogrammeurzichnietmeerte<br />

bekommerenomSun-speciekedetailsals.x-les,clnt_create()'sofrpc<br />

systeemfoutafhandeling.<br />

Hetprp-modelbeschrijfteenprogrammadateensoftwarelaagtussen<br />

deapplicatiecodeenrpcgengenereert.prpleestinprincipestandaard<br />

C.1Zievooreenbeschrijving<strong>van</strong>C[Kernighan2].2Deoutput<strong>van</strong>prp<br />

wordtdoorrpcgengelezen.Vangrootbelangvoorprpishoedeinput<strong>van</strong><br />

1Inx6.1zijnprp'safwijkingen<strong>van</strong>deCsyntaxbeschreven.<br />

2Hierbijzijaangetekenddatondersteuning<strong>van</strong>ansiChetdoelis,niethetoorspronke-<br />

lijkeK&RC.In[Kernighan2,tweededruk]wordtaangeradenCprogramma's|indiende<br />

compilerditondersteunt|volgensdeansinormteformuleren.DitomdatmetansiCde<br />

compilermeerfoutenkanopsporendanindeoorspronkelijkeCversie.InansiCworden<br />

functiedeclaratiesen-denitiesmetbehulp<strong>van</strong>zogenaamde`prototypes'opconsistentie<br />

gecheckt.Voorheenwasditeenbron<strong>van</strong>veelfouten.<br />

96 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


ProblemenSun rpcgen|deoutput<strong>van</strong>prp|eruitmoetzien.Zievooreenbeschrijving 5.1.2<br />

globaleeisenPRP <strong>van</strong>derpcgensyntax[Sun1]enx4.1.2.<br />

DesyntactischeverschillentussenderpcgeninputenstandaardCzijnde volgende[Kernighan2,Sun1]: Deinterfacetussenclientenservermoetvoorrpcgenineen.x-le<br />

programmacodetevinden. duredeclaratieof-prototypevoldoende.Alleinformatie<strong>van</strong>deparametertypedeclaratiesuitdeinterfacedenitieisookindegewoneCwordengespeciceerd.Bijeenlokaleprocedureaanroepiseenproce- Meerdereparametersmoetengegroepeerdnaarinputofoutputin structureswordengedeclareerd.InCiswordtniethetonderscheidt<br />

Deprogrammeurmoetvoorgebruik<strong>van</strong>eenservereerstcontactmaken schrevenhoecallbyreferenceinrpc-systemenpast.input/outputmaarvalue/referencegehanteerd.Oppagina61isbe- Naterugkomstmoethetresultaat<strong>van</strong>derpcoprpc-systeemfouten Menmoetdenetwerknaam<strong>van</strong>demachinespeciceren. metdeservermachinedoormiddel<strong>van</strong>eenclnt_create()aanroep.<br />

getestwordenvoordatdegebruikelijkefoutcontrole<strong>van</strong>deprocedure<br />

tievoorprpisin[Kernighan2]beschreven.Deoutputspecicatieisopinprpmoeteenvertaalslaggenererenvoordezepunten.Deinputspecica- magplaatsvinden.<br />

[Sun1]beschreven(ziepagina81en149voorvoorbeelden). 5.1.2<strong>Plaat</strong>sbepaling<strong>van</strong>PRP Inguur5.1isdeprp-laagaandesunrpcomgeving(guur4.1)toegevoegd.De`client'ende`server'le|deapplicatieprogrammatuur|zijnhier programmeurindecode<strong>van</strong>clientenserverrpc'sandersbehandelendan lokaleprocedureaanroepen. idealiterstandaardCles.Inderpcgensituatie<strong>van</strong>guur4.1moetde<br />

stubprocedureaanroepen.Daarnaastbevatdeclientstubinitialisatie-en uitstubsbestaat.Delesmetdeextrastubsbevattenvoorelkeremote proceduredevertaling<strong>van</strong>standaardCprocedureaanroepennaarrpcgen- Inguur5.1isaangegevendatdedoorprpgenereerdesoftwarelaag<br />

geven.Indezeguurismetpijlendecontrolow<strong>van</strong>deprocedureaanroep rpc-systeemfoutafhandelingscode.<br />

melingstubs(guur3.3en4.1).DeclientroeptvolgensdestandaardCweergegeven.DezeisgecompliceerderdanineensituatiemeteenverzaInguur5.1wordtconceptueeldeplaats<strong>van</strong>deprpsoftwarelaagweerge- syntaxdeprp-client-stubaan.Deprp-client-stubroeptvolgensderpcgen <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 97


5.1.3 Verbeteringen<br />

Figuur5.1:prpinderpcomgeving<br />

rpcgenclientstub PRPclientstub client<br />

netwerk SunOS rpcgenserverstub PRPserverstub server 6<br />

? netwerk SunOS<br />

- -6<br />

machineA machineB<br />

serverfunctieaan. systeemaanderpcgen-server-stub.Derpcgen-server-stubroeptdeprpserver-stubaan.DezeroeptvolgensdestandaardCsyntaxdegebruikersregelsderpcgen-client-stubaan.Dezeverzendteenopdrachtviahetrpc- doorlopenomderesultatenterugtesturennaardeaanroeper. Alsdeserverfunctieklaariswordtdezeweginomgekeerdevolgorde<br />

mate<strong>van</strong>transparantie<strong>van</strong>eenrpcendecomplexiteit<strong>van</strong>hetsysteemzijn Dezeroepteenprp-stubopdezelfdewijzeaanalseenlokaleprocedure.Met deinternewerking<strong>van</strong>destubsbehoeftmenzichnietbezigtehouden.De Voordeprogrammeurisdezecomplexegang<strong>van</strong>zakennietzichtbaar.<br />

5.1.3Outputles doorhetgebruik<strong>van</strong>deextrastubsvergroot.<br />

Desoftwarelaagdieprpgenereertbestaatnaastdealgenoemde.xleuit:<br />

tweeextrastubles debewerkteapplicatieles(ziex5.2.2)<br />

<strong>gedistribueerde</strong>applicatiebestaat.Erisuitaftelezenhoedesoftware Inguur5.2wordteenvoorbeeldgegeven<strong>van</strong>deleswaaruiteeneenvoudige laagdieprpgenereertpastindecompilatievolgorde<strong>van</strong>rpcgen.Als voorbeeldwordtaandehand<strong>van</strong>eenctieveapplicatiebeschrevenwelke<br />

98 lesdoorwelkeprocessorgebruiktworden.Deapplicatiebestaatuittwee les:spreadsheet.cendbms.c.Declientkantiseengebruikersinterfacein <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Opbouw<strong>van</strong>PRP devorm<strong>van</strong>eenspreadsheet.Aandeserverkantziteendatabaseback-end 5.2.1<br />

datqueriesenupdatesinopdracht<strong>van</strong>declientuitvoert.<br />

staandeparameterin-enuitpak-eninitialisatie-enfoutafhandelingscode bewerkt.prpanalyseertdeparameterdeclaraties<strong>van</strong>clientenserverengenereerteenxdrle(de.x-lePRP_intf.x).Indeclientenserverprp-stub Omdezeapplicatietecompilerenwordendetweeleseerstdoorprp<br />

alseengewonerpcgenapplicatiegecompileerd. ture,derpcgen-stubmaaktzeverzendklaar.Deapplicatiewordtverderdentweemaalgemarshalled:deprp-stubzetzeinderpcgeninputstrucvoorderpcgen-stubs(PRP_c_stub.cenPRP_s_stub.c).Parameterswor- compilatieprocesdoorhetunixcommandomakewordengeautomatiseerd kelomgeving<strong>van</strong>Sunweertegeven,metnamehetverbandmetrpcgen. Bijdedaadwerkelijkeontwikkeling<strong>van</strong><strong>gedistribueerde</strong>applicatieskanhet Ditplaatjeisbedoeldomdeplaats<strong>van</strong>prpbinnendeapplicatieontwik-<br />

zodatdeprogrammeurzichnietmetditsoortdetailshoeftbezigtehouden. 5.2 Hiervoorzijntakenenplaats<strong>van</strong>hetprp-modelglobaalomschreven.De volgendeparagrafengaanoverdewerking<strong>van</strong>prpzelf.Nietoverhoede Opbouw<strong>van</strong>PRP<br />

globaaluiteengezethoedevertaalslagdoorprpgegenereerdwordt.x5.4en appendixAgaanopdedetailsin. stubswerken,maarhoehetgenereren<strong>van</strong>destubswerkt.Eerstwordt<br />

5.2.1SysteemontwerpPRP<br />

blematiekiseengegevensgeorienteerdanalyseprocestoegepast[DeMarco,Deanalyseenhetontwerp<strong>van</strong>hetprpprogrammazijn<strong>van</strong>uitdeoutputdiehetmoetgenererengestart(guur5.3).Doordeaard<strong>van</strong>depro ondersteunen. deoutputspecicatie.Eriseensterkewensomalsinputongewijzigd-Cte Van'tVeld].Deaard<strong>van</strong>deproblematiekis:hetenigedatvastligtis<br />

prp.Bijhetvaststellen<strong>van</strong>deinputbestaatwelenigeruimteomeventuele problemenoptelossen.Indatgevalwordtdeinputsyntaxveranderd.De indeoutputspecicatie<strong>van</strong>hetprogrammaleidentotdisfunctioneren<strong>van</strong> Deoutput<strong>van</strong>prpisgedetailleerdomschrevenin[Sun1].Wijzigingen<br />

x6.1zijndeafwijkingentenopzichte<strong>van</strong>ansiCbeschreven. transparantie<strong>van</strong>hetgeheelwordtdoorelkeafwijking<strong>van</strong>Cminder.In<br />

tegenererencodemetelkaarinverbandwordengebracht(xA.2.2).Ditis ontworpenwaarin(a)deverschillendeparametertypenen(b)decategorieen eenbottom-upbenadering. Opbasis<strong>van</strong>degedetailleerdeoutputspecicatieiseenglobalerschema<br />

eenvoudigemodulestructuur.Laterzijnopbasis<strong>van</strong>dedetailschema's<strong>van</strong> eenvertaalslaggeneratoralsprpmoetbieden(guur5.4).prpkenteen modulesontworpen.Hierwerdeerstglobaalvastgesteldwelkefunctionaliteit Nadatdegegevens(output,inputenglobaalschema)vaststondenzijnde<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 99


5.2.1 Verbeteringen<br />

Figuur5.2:prples<br />

RPCGEN<br />

<br />

prpintfclnt.c prpintfxdr.c ? @@@@@@@@@R <br />

prpintfsvc.c<br />

CC<br />

@@RCC spreadsheet ? dbms ?<br />

BBBBN<br />

spreadsheet.c HHHHHHHHHj<br />

dbms.c<br />

PreRpcgenProcessor<br />

spreadsheetcl.c ) prpintf.x ?<br />

prpcstub.c <br />

@@@@@@@@R<br />

PPPPPPPPPPPPPq <br />

dbmssv.c<br />

? prpsstub.c<br />

QQQQs @@@@R +<br />

<br />

100 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Opbouw<strong>van</strong>PRP 5.2.2<br />

Figuur5.3:Inputenoutput<strong>van</strong>prp ansiC<br />

prp?input<br />

rpcgen ?output VAST!<br />

eentop-downbenadering. xA.2.2enappendixAdemodulesingevuldenuitgeprogrammeerd.Ditis<br />

gegevensanalyseisbottom-upgeweest.Hiernazijndeprogrammamodules ontworpen.Demoduleszijntop-downontworpen. catiebegonnen.Eriseengegevensgerichtanalyseprocestoegepast.DeResumerend:analyseenontwerp<strong>van</strong>prpzijn<strong>van</strong>uitdeoutputspecidigdefunctionaliteitteschrijven.Hetprogrammaisdaarnaviademethode<strong>van</strong>stapsgewijzeverfijningverderontwikkeld.Doorhettoevoegen<strong>van</strong>ondersteuning<strong>van</strong>meertaalelementenzoalscomplexereparametersishetdoelVervolgensisgetrachteenwerkendprogrammametdeminimaalbeno- standaardCalsinputteaccepterensteedsdichterbenaderd(ziex6.3).<br />

Deuitgangspunten<strong>van</strong>hetsysteemontwerpwordengevormddoordeuitvoerdiehetprogrammamoetgenereren.Indezeparagraafwordendever 5.2.2FunctiesPRP-laag<br />

schillendecategorieentegenererencodebeschreven.xA.3.1behandeltde invullinghier<strong>van</strong>endetail.<br />

hieronderpuntsgewijsbehandeld. <strong>van</strong>prpiseen.xle,eentweetallesmetdeprpstubsendeaangepaste applicatieles(zieguur5.2).Defunctiesdiedezeuitvoervervultwordt prpleestdoordeapplicatieprogrammeurgeschrevenlesin.Deuitvoer<br />

De.xlebevatallereerstdeparameterdeclaratiesvoorelkeremote<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling procedure.Daarnaastwordenderemoteproceduresinhetversienummergedeelteopgesomd.Ziepagina82vooreenvoorbeeld. 101


5.2.3Deprp-stubsvervullenmeerderetaken.Elkeremoteprocedureheeft Verbeteringen<br />

declientstubzijnachtereenvolgens: eeneigenstelstubs.Declientstubisdegrootstestub.Defuncties<strong>van</strong><br />

{vulderpcgeninputparameterstructuremetdeeigenlijkepara- {initialiseerhetrpcsysteem:bepaalwaardeserverprocedure zichbevindtenvoerdeclnt_create()aanroepuit.<br />

{roepderpcgen-clientstubaan. {ganaofhetresultaatdeNULL-pointeris.Zoja,geefeenfoutmelmeters. {pakderpcgenoutputparameterstructureuitenvuldeeigenlijke uitvoerparametersalsmededereturnwaarde<strong>van</strong>deprocedure. ding.<br />

Deprp-serverstubiseenvoudiger.Dezekentdevolgendefuncties: {pakderpcgeninputparameterstructureuitenvuldeinputpa- {roepdegebruikersserverprocedureaanvolgensdestandaardC rametervariabelen<strong>van</strong>deserverprocedurediedeprogrammeur syntax. geschrevenheeft.<br />

{vulderpcgenoutputparameterstructuremetdeoutputparatengewijzigdworden.Denamen<strong>van</strong>deoorspronkelijkegebruikersproDeapplicatieprogrammales<strong>van</strong>degebruikermoetenopeenpaarpunmetersendereturnwaarde<strong>van</strong>degebruikersprocedure.ceduresmoetenveranderdwordenindenamen<strong>van</strong>dedesbetreendechinebijeenrpcspeciceren,danmoetdezeaandeprpclientstubprpstubs.Mochtdegebruikerdenetwerknaam<strong>van</strong>eenserverma-<br />

5.2.3StructuurPRP wordendoorgegevenvoordeinitialisatie.<br />

Destructuur<strong>van</strong>prpiseenvoudig(zieguur5.4).Hetprogrammaleest deinvoerengenereertdeuitvoer.DeinvoerisstandaardC.Deuitvoeris eenrpcgenapplicatiediedoorrpcgenendeCcompilerverderverwerkt<br />

deprp-stubsindegebruikerslesgezet.Tenslottewordteenmakefile worden.<br />

gemaakt(zieookpagina79)omdeverzamelinglestoteenapplicatiete wordende.x-leendeprp-stubsgegenereerd.Danwordendenamen<strong>van</strong> Eerstwordendeinputlesgeanalyseerd.Opbasis<strong>van</strong>dezeanalyse<br />

102 compileren. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Opbouw<strong>van</strong>PRP datastructuren 5.2.3<br />

cedureseneenlijstmetparametersdiebijdieremoteprocedureshoren.Inwaardeapplicatieuitbestaat,eenlijstmetdenamen<strong>van</strong>deremoteprostructurenopgeslagen.prpbevatdrielijsten:eenlijstmetdelenamenTijdensdeanalysewordendegegevensoverderemoteproceduresindata- dezelijstenzijnallegegevensopgenomendienodigzijnomdeoutputte <strong>van</strong>tussentijdseversies<strong>van</strong>dele,endeoutputlenaam. genereren. Delelijstbevatvoorelkeinputledeoorspronkelijkelenaam,denaam<br />

routinewaarhijbijhoort,deparameternaamzelf,hettype,hetlevel-of- dereturnwaardeeneeninternvolgnummer. Deparameterlijsttenslottebevatvoorelkeparameterdenaam<strong>van</strong>de Deremoteprocedurelijstbevatvoorelkeroutinedenaam,hettype<strong>van</strong><br />

eventueeldearrayom<strong>van</strong>geneeninternvolgnummer. indirection(isheteenpointer?),ofheteeninputofoutputparameteris, procesgang Deuitvoervolgorde<strong>van</strong>deprogrammamodulenisalsvolgt: Figuur5.4:Structuur<strong>van</strong>hetprpprogramma PRP<br />

lenamenlijst<br />

cpp anal.prototypes gen.xdrle gen.stubs <br />

AAAAAAAAU<br />

@@@@@@@@@@@@R<br />

HHHHHHHHHj<br />

<br />

<br />

gen.makefile<br />

? pasnamenaan<br />

1.Slaindelenaamlijstopuitwelkelesdeapplicatiebestaat.De<br />

2.PreprocessdelesmetdeCPreprocessor(cpp).Erstaannugeen headerleswordennietalsaparteles,maaralsonderdeel<strong>van</strong>de.c<br />

#includeen#definedirectivesmeerindeapplicatieles.Deheader- lesbeschouwd.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling leszijnnudaadwerkelijkonderdeel<strong>van</strong>de.cles. 103


5.33.Analyseerdeprototypes<strong>van</strong>deremoteprocedures.Deprocedurelijst Verbeteringen<br />

endeparameterlijstwordenhiergevuld.Deanalysevindtplaatsmet<br />

5.Genereerdeprp-stubs.Ziex5.2.2vooreenbeschrijving<strong>van</strong>hun 4.Genereerde.x-levoorrpcgen. yacc,deunixparser[Kernighan1].<br />

7.Maakeenmakefile. 6.Pasdegebruikerlesaanaandeveranderdefunctienamen. functionaliteit.<br />

Inguur5.4isdesamenhang<strong>van</strong>deprpprogrammamodulengrasch YACC weergegeven.<br />

tuur<strong>van</strong>zijninvoeranalyseertombepaaldeactiesuittevoeren.Parsing<strong>van</strong>eenrijsymbolen<strong>van</strong>eenbepaaldegrammaticabestaatuithetherkenVaakwordtbijprogrammatuurontwikkelingvoorunixsystemengebruikgenen<strong>van</strong>dezesymbolenenhetsamenstellen<strong>van</strong>desyntaxtreevoordezemaakt<strong>van</strong>formeletaalanalyse.Eenparseriseenprogrammadatdestruc gebruiktworden,bijvoorbeeldomeentaalvooreenlagerevirtuelemachine rijsymbolen[Watt2].Desyntaxtreekandoorderest<strong>van</strong>hetprogramma tegenereren.<br />

tomaatdieeenlr(1)3parsingalgoritmeuitvoert[Sun2,Johnsonbaugh].Backus-NaurForm)ineenverzamelingtabellenvooreeneenvoudigeauserinC[Kernighan1].yaccconverteerteencontext-vrijegrammatica(inHetprogrammayaccgenereertopbasis<strong>van</strong>eengrammaticaeenpar- kandesyntaxanalysemodule<strong>van</strong>eencompilerof<strong>van</strong>eenprogrammaals Dezeautomaat,eenCprocedure,kandeprogrammeurinhetprogramma<br />

lintgegenereerdworden.prpgebruikteenyacc-parseromprocedure-en gebruikenomdesyntax<strong>van</strong>eenprogrammeertaalteanalyseren.<br />

parameterdeclaratiesteontledeneninlijstenopteslaan. In[Kernighan2]isdegrammatica<strong>van</strong>Cgegeven.Metbehulp<strong>van</strong>yacc<br />

5.3 Nadeomgevingenstructuur<strong>van</strong>prpglobaalbehandeldtehebbenwordt hieropdeuitwerking<strong>van</strong>hetraamwerkingegaan.prpisontworpenmetals Ontwerpproblemen<br />

afwijken<strong>van</strong>detaalconstructies<strong>van</strong>sequentieleapplicaties.Eenrpcmoet speciekepunten(punt5,6en7<strong>van</strong>pagina93)teverhogen.Desyntax<strong>van</strong> doeldetransparantievoordeprogrammeur<strong>van</strong>eenSunrpcopeenaantal<br />

netzogeformuleerdkunnenwordenalseenlokaleprocedureaanroep|met programmamodulesvoor<strong>gedistribueerde</strong>applicatiesmoetzominmogelijk<br />

Linksesymbool,produceerhetmeestRechtsesymbool,enlees1symboolteveelvooruit." 1043Eenveelgebruikteklassesyntaxanalyse-algoritmes.lr(1)betekent:"Leeshetmeest <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Ontwerpproblemen evenveelparametersenzonderextrafoutcontrolesofparameterin-enuit- 5.3.1<br />

pakcode. 5.3.1Beperkingentaal DeontwerpproblemendieoptredenkomenvoortuithetdoelstandaardC alsinputsyntaxteondersteunen.Deinitieleeisis:<br />

Desyntaxdieprpaccepteertmoetzoweinigmogelijk<strong>van</strong>ansiCafwijken [Kernighan2]. syntax(rpc)=syntax(lokaleaanroep)<br />

outputsyntaxtevertalen.Derpcgenomgevingstaathetniettoeomde gehelesyntax<strong>van</strong>detaalCteondersteunen.Hierondervolgteenopsomming <strong>van</strong>derestrictiesdieprpdeprogrammeuroplegt.Indevolgendeparagraaf Eenaantalelementen<strong>van</strong>deinputsyntaxzijnnieteenduidignaarde<br />

wordtdeuitwerking<strong>van</strong>onderstaandeproblemenvoorprpgepresenteerd.<br />

clareren.Deprintf(fmt,...);proceduredeclaratieishiereenvoorbeeld variabeleparameterlijst<br />

<strong>van</strong>.Dedriepuntjesgevenaandathetaantalparametersbijelkeaanroepanderskanzijn.Zegevenaandat<strong>van</strong>afdatpunteenatcompile-timeInCishetmogelijkomeenfunctiemeteenvariabelaantalparameterstededen.Erishiergeenmogelijkheidomeenvariabelaantalstructuremembers onbekendaantalparametersdoorgegevengaatworden. tedeclareren.Deparameters<strong>van</strong>rpcgen-stubsstaanatcompile-timevast. Bijgebruik<strong>van</strong>rpcgen(enprp)zijnremoteproceduresmeteenvariabel Voorrpcgenmoetenalleparametersineenstructuregedeclareerdwor-<br />

aantalparametersniettoegestaan. remoteoflokaal<br />

compilatiewetenwelkeprocedurelokaalisenwelkeremote.Alleenvoor roepenworden,vooreenlokaleaanroepniet.Hetsysteemmoettijdensdeprocedureaanroep.Vooreenrpcmoetencommunicatieprimitievenaange- Eenrpcwordtandersbehandelddoorhetoperatingsystemdaneenlokale<br />

Deprogrammeurmoetditspeciceren. deeenofanderemanierwetenwelkeproceduresremotezijnenwelkeniet. remoteproceduresmoetrpcgencodegegenereerdworden.prpmoetop<br />

servernaam<br />

singenkananoniemeadressering|broadcast-rpc|wordentoegepast.Voor Declientzalopeenofanderewijzedeservermoetenidenticerenzodathet communicatiesubsysteemhetverzoekkanversturen.Voorsommigetoepascomplexereapplicatiesdieuitmeerdereserversbestaanmoeteenindividueleservergedenticeerdkunnenworden.Wanneermengeengebruik <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 105


5.3.1 kanmaken<strong>van</strong>broadcast-rpcmoetdenaam<strong>van</strong>deservermachine|het Verbeteringen<br />

callbyvalue/reference netwerkadres|inderpcsyntaxwordenopgenomen.<br />

Eriseenverschilindesemantiek<strong>van</strong>byvalueenbyreferencedoorgegeven<br />

[VanderSluis]. debewerkingen<strong>van</strong>deprocedureopdeactueleparameterzelfuitgevoerd parameters.Eenvalueparameterwordtalleenbijaanroepgebruiktom deformeleparameterteinitialiseren.Bijeenreferenceparameterworden<br />

<strong>van</strong>defunctieteruggegevenaandeactueleparameter.Indeliteratuurwordt ditcallbycopy/restoregenoemd[Tanenbaum3,Coulouris,Watt1](zieook puntcinx3.4.2). Inrpctermenwordtdewaarde<strong>van</strong>eenreferenceparameternaaoop<br />

doordeprogrammeuralsvalueofalsreferencegebruiktworden.Vaneen referenceparametermoetdewaardeteruggegevenwordenaandeaanroeper, bijeenvalueparameterniet. Vooreenrpcsysteemishetnoodzakelijkomtewetenwelkeparameters<br />

Hieronderwordeneenaantalideeengenoemdhoeprpvalue<strong>van</strong>reference kandoordereferencing<strong>van</strong>depointerzodeactueleparameterbereiken. dooreenpointernaardewaardebyvaluedoortegeven.Deprocedure Ckentalleenvalueparameters.CallbyreferencewordtinCuitgevoerd<br />

parameterszoukunnenonderscheiden. hungeheugenadresinplaats<strong>van</strong>hunwaardeaandeproceduredoor tegeven(eenpointernaardewaarde).Somsechterwordenpointers Atrun-timeInCwordenparametersbyreferencedoorgegevendoor ookalsechtevalueparametergebruikt.Hetverschilisdatdewaarde <strong>van</strong>eenvalueparameterkanveranderentijdensdeloop<strong>van</strong>deprocedure.Depointerdiebijeenreferenceparametergebruiktwordtblijft onveranderd. Doortijdensdeuitvoering<strong>van</strong>hetprogrammatekijkenofeenformele parameterverandert,isvasttestellenofeenparameterkennelijkals<br />

Omditatrun-timevasttestellenzouextracodeaanheteinde<strong>van</strong> rpc-systeemaandeaanroeperterugwordengegeven. parameteronveranderdismoetdewaardewaarhijnaarwijstdoorhetvalueofalsreferencegebruiktwordt.Alsdewaarde<strong>van</strong>eenpointer- groter. Dezeoplossingwordtgecompliceerddoorhetfeitdatereenalias<strong>van</strong> overheadgecreeerdwordt.Hetprogrammawordtenigszinstrageren eenproceduremoetenwordenuitgevoerd.Eennadeelisdatermeer<br />

tischeanalysemoetenallealiassen<strong>van</strong>deformeleparametergedenpointervariabeledienaardezelfdegeheugenlokatiewijst.Doorsyntacticeerdworden.Zemoetendanallemaalatrun-timeopverandering deformeleparametergebruiktkanworden.Eenaliasiseennieuwe<br />

106gechecktworden. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Ontwerpproblemen Dezewerkwijzedruistintegenhetgrondbeginsel<strong>van</strong>staticallytyped 5.3.2<br />

wordentypechecksatcompile-timeuitgevoerd.Zowordenfoutenzo vroegmogelijkopgespoord.Erwordtzominmogelijkoverheadat languages[Watt1].Bijdezegroeptalen,waarCdeel<strong>van</strong>uitmaakt, run-timegecreeerd.<br />

pointerparameteronderzoektoferindefunctieookeenwaardeaan gegevenkanmeneensyntactischeanalyseuitvoeren,dievoorelke Atcompile-timeDewaarde<strong>van</strong>eenpointerparameterverandertniet<br />

toegewezenwordt(assignexpressions). alshijalsreferenceparametergebruiktwordt.Uitgaande<strong>van</strong>dit<br />

fungeertzalookdiefunctiegeanalyseerdmoetenworden.Anderskan formeleparameterzelfalsactueleparametervooreenanderefunctie Ookbijdezeoplossingmoetaanaliassengedachtworden.Wanneereen<br />

bibliotheekroutineswaar<strong>van</strong>desourcecodenietbeschikbaaris. wordenofniet. Dezeweglooptdoodwanneerdeprogrammeurgebruikmaakt<strong>van</strong> nietmetzekerheidvastgesteldwordenofdewaardeveranderdkan<br />

resdeprogrammeurtelatenvermeldenofhetomeeninput,output`in'en`out'Eenoplossingisombijdedeclaratie<strong>van</strong>remoteprocedu- ofinput/outputparametergaat. parameteris.IndetaalPascalwordtexplicietsyntactischonderscheid gemaakttussenvalueenreferenceparameters.IndetaalAdawordt SommigeCprogrammeursvermeldeninhetcommentaar<strong>van</strong>hunprogrammabijelkeparameterofheteeninput,outputofinput/output overeenmeteeninput/outputparameter. onderscheidtussen`in'en`out'isindesyntaxdoorgevoerd.Eenvalueparameteriseeninputparameter.Eenreferenceparameterkomt onderscheidgemaakttusseninputenoutputparameters[Watt1].Het<br />

5.3.2Ontwerpkeuzes Hetvoordeel<strong>van</strong>dezeoplossingisdatheteeneenvoudigeenafdoende oplossingis,nadeelisdatwordtafgeweken<strong>van</strong>standaardC.<br />

Bijdehiervoorgenoemdeproblemenzijndevolgendekeuzesgemaakt.4<br />

dedenitieleaangegeven.Elkeremoteproceduremoetdoordeprogram- remoteoflokaal Hetonderscheidtussenremoteenlokaleprocedureswordtbijrpcgenin<br />

proceduredeclaratieindelewaardeprocedurewordtaangeroepen,maar hetkeywordremotewordeningevoerd.Externstaatonderanderevoorde meurindeinterfacedenitielewordenopgesomd.VoordetaalCiseen elegantereoplossingdenkbaar.AnaloogaanhetCkeywordexternkan<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 4InxA.2.2wordtineentweetaltabellendeprp-syntaxgedetailleerdbehandeld. 107


5.3.2 nietgedenieerd.Remoteissyntactischequivalentaanextern,zijhetdat Verbeteringen<br />

externookbijvariabelenmogelijkisenremotealleenbijproceduredeclaraties.duredieeenslagexterneris.Deprocedurebevindtzichnietalleenineen anderemodule,maarineenanderprogrammaopeenanderemachine. Eenremoteprocedureisintutieftebeschouwenalseenexternproceceduresindelewordenaangeroepenofgedenieerd.Remotewordtdoor<br />

prpgebruiktomtesignalerenvoorwelkeproceduredenities(server)en welkeaanroepen(client)codegegenereerdmoetworden. prponderscheidtclient<strong>van</strong>serverlesdoortekijkenofderemotepro-<br />

beterdaneenaparteinterfacedenitie.DewerkwijzesluitaanbijdeinC gebruikelijkemanier<strong>van</strong>werken. Dezeoplossingisuithetoogpunt<strong>van</strong>transparantievoordeprogrammeur<br />

Hetprobleem<strong>van</strong>deserveradresseringheefttweevarianten: servernaam 1.Declientheefteenserverperremoteprocedure.Deidenticatiezou "Alsereenserveractiefisinhetnetwerkmetdegewensteprocedure, doorhetsysteemzelfkunnenwordenuitgevoerdvolgenshetalgoritme: broadcast-callgemplementeerdworden.Broadcastswerkeninver- gebruikdezedan.Zoniet,geefeenfoutmelding."Ditkanmeteen<br />

gemplementeerdworden.Broadcast-callszijngeschiktvoorgebruik een)netwerk|lan[Sun2]. rpc'szullenomredenen<strong>van</strong>performancevaakineenlanomgeving bandmetcongestievraagstukkenalleenophetlokale(gedeelte<strong>van</strong><br />

in<strong>gedistribueerde</strong>applicatiesineenlan.<br />

2.Declientgebruiktmeerdereservers.Alshetnietnodigiseenspeci- Desyntaxwijktopditpuntnietaf<strong>van</strong>eenlokaleaanroep. Bijeenbroadcast-callspeciceertdeprogrammeurgeennetwerknaam.<br />

gebruiken.Deserverdieheteerstdeaanroepbeantwoordwordtdan gebruikt.Voorsommigetoepassingenkanhetnodigzijndatdeprogrammeurperrpcaangeeftwelkeserverderpcmoetuitvoeren.5ekeserverteselecterenvooreenaanroepkanmeneenbroadcast-rpcnenuitzien:Deaanroepenzoudeneralsfunctie(para1,para2)@netwerknaam;kun- bereken(matrix1,matrix2)@argv[1]; bereken(matrix1,matrix2)@"sus.eur.nl";<br />

5Ziebijvoorbeeld[Chin]vooreenbankapplicatiemetmeerderelialen. (broadcast)bereken(matrix1,matrix2);<br />

108 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Ontwerpproblemen Het<strong>van</strong>serverwisselenvooreenprocedureismogelijkdooreenandere 5.4<br />

netwerknaamtespeciceren.6 hetbroadcastmechanisme.Desnelstreagerendeserverwordtgekozen. structiebijdeaanroep<strong>van</strong>eenremoteprocedurehetinwerkingtreden<strong>van</strong>Naaranalogie<strong>van</strong>Argus[Liskov]isvoorhet`at'(@)symboolgekoBijprpbetekenthetafwezigzijn<strong>van</strong>een@netwerknaam-achtigecon- voordetaalC-syntax.Voorproceduresishetconceptplaatsnieuw.@ zen,nietvooreenextraparametervoorderpc.Het@symboolisnieuw<br />

gentroduceerd. extraparameterzougemakkelijkaangezienkunnenwordenvooreenreguliereparameter.Vooreennieuwconceptwordteennieuwsyntaxelement kannietverwardwordenmetbestaandeCconstructiesofconcepten.Een<br />

toevoeging<strong>van</strong>`in'en`out'bijdeproceduredeclaratie.Dezeoplossingle- Omdeparameterrichtingaantegevenisvoordelaatsteoptiegekozen: callbyvalue/reference<br />

input/outputbeschouwdenandereparametersalsinput.Daarcallbyvalue verteenhelderesyntaxopdievoorprogrammeurseenvoudigtebegrijpen<strong>van</strong>pointerparametersineenrpcomgevingzinloosis,iseenondubbelzin-<br />

wanneerdeprogrammeurgeeninofoutvermeldt,pointerparametersals is.OmaantesluitenbijdegangbarewerkwijzeinC[Kernighan2]worden,<br />

nigeinterpretatie<strong>van</strong>pointerdeclaratiesmogelijk.tiedrieiseenvoudigteimplementerenomdatrpcgenookhetonderscheidtusseninput-enoutputparameterkent.Andereprocedureletalen(Ada)makenookonderscheidininputenoutputparameters.EenlaatsteargumentDeandereoptiesbrengenimplementatieproblemenmetzichmee.Op- outputparametersgoedaansluitbijgescheidengeheugen-systemen. isdatimplementatieineenrpcomgeving<strong>van</strong>callbyreferencesemantischeproblemenmetzichmeebrengt,terwijldesemantiek<strong>van</strong>input-en Vooreenvoudigetoepassingenishetmogelijkeen<strong>gedistribueerde</strong>applicatie 5.3.3Nieuwetaalelementen metprpteschrijvenwaarbijdeenigeafwijking<strong>van</strong>standaardChetkeyword remotevoordeprototypes<strong>van</strong>remoteproceduresis. zijninxA.2.2beschreven. <strong>van</strong>parameteroverdrachtwordendedefaultregelsgebruikt.Dedefaultregels Wanneerdeprogrammeurmeercontroleoverserverkeuzeenparame- Dezeapplicatiemaaktdangebruik<strong>van</strong>broadcast-rpcenvoorderichting<br />

gebruiken:`@'en`in'en`out'. teroverdrachtnodigheeftmoetmenbijprpmeernieuwesyntaxelementen<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling tweede@terafsluiting<strong>van</strong>deservernaamgespeciceerdworden.ZieappendixA. 6Inhethuidigeprototypeisditnognietmogelijk.Verdermoetbijhetprototypeeen 109


5.4.2 5.4 DetailsPRP Verbeteringen<br />

Dezeparagraafgaatinopdedetails<strong>van</strong>devertaalslagC!rpcgen.Het<br />

defoutafhandelingzijnerveelminderkeuzemogelijkheden. meestcomplexevraagstuk<strong>van</strong>hetprpontwerpisdegrotediversiteitdie detaalCbiedtvoorhetdeclareren<strong>van</strong>parameters.Bijhetgenereren<strong>van</strong> deinitialisatie<strong>van</strong>derpcgen-stubsmetbroadcastenclnt_create()en<br />

degrammatica<strong>van</strong>Cuit[Kernighan2]uitgevoerd.Nadeanalysemoeten nengenererenmoetprpdedeclaraties<strong>van</strong>remoteproceduresgedetailleerd analyseren.Dezesyntaxanalysewordtdooreenyacc-parseropbasis<strong>van</strong> Omdeparametertypedeclararties<strong>van</strong>de.xleendeprp-stubstekun-<br />

deverschillendeoutputlesgegenereerdworden.Hieronderwordtingegaan generatie. opdeanalyse<strong>van</strong>deproceduredeclaratiesendemogelijkhedenbijdecode<br />

plicatieprogrammamodules<strong>van</strong>hetkeywordremotevoorzien.DesyntaxaDeprogrammeurmoetdeprototypes<strong>van</strong>deremoteproceduresindeap- 5.4.1Analyseprototypes<br />

parser[Kernighan1]dieprototypesop. nalysemodule<strong>van</strong>prpzoektmetbehulp<strong>van</strong>dedooryaccgegenereerde<br />

nodigheeft|zoalstypedefsenstructure-declaraties|omde.x-leende ditprocesgevuld.Uitdeprototypesisalleinformatieafteleidendieprp lyseerd.Deprocedurelijstendeparameterlijst(ziex5.2.3)wordentijdensOpbasis<strong>van</strong>degrammatica<strong>van</strong>detaalCwordendeprototypesgeana- prp-stubstekunnengenereren.Inde.x-lewordenderpcgeninput-en Omteweteninwelkerpcgenparameterstructuredeparametersgedecla- outputstructuregedeclareerd.<br />

wordtofdoordeprogrammeurgespeciceerd,ofuithetlevelofindirecreerdmoetenworden,moetprpderichting<strong>van</strong>deparameterkennen.Deze Voordezedeclaratiemoetprpdedatatypes<strong>van</strong>deparameterskennen.<br />

dedenitie<strong>van</strong>eenprocedurediealeerderalsremotewasgedeclareerd regelsbehandeld,inparagraaf5.3.1en5.3.2detheoretischeachtergrond. tion|aantalsterretjes|indedeclaratieafgeleid.InxA.2.2wordendeze<br />

wordtherkend.Opdatmomentwordtbijdelenaamindelenaamlijst aangetekenddatdezeleeenserverdenitiebevat.Ditwordtgebruiktom Doordeparserwordennietalleenproceduredeclaratiesherkend.Ook<br />

indeplaatskomen<strong>van</strong>degebruikersserverprocedureaanroep.Inserverles verdwijnthetoudeprototype,enmoetereenprototype<strong>van</strong>degebruikers moetenplaatsvinden.Inclientlesmoetdeaanroep<strong>van</strong>deprp-clientstub vasttestellenwelkenaamswijzigingeninderespectievelijkegebruikersles<br />

porteerdworden.ZoblijftdefoutopsporingsfunctiediedeinterfacedenitieserverproceduredoordeCcompileraandeapplicatieprogrammeurgerap- Opdezemanierkunneninconsistentiestussenaanroependenitie<strong>van</strong>de serverproceduregegenereerdwordenopbasis<strong>van</strong>deaanroepindeclientle.<br />

(ziex3.4.3)<strong>van</strong>rpcgenvervultbijprpbehouden. 110 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


DetailsPRP 5.4.2Parameteroverdracht 5.4.3<br />

generatie|deoutput|<strong>van</strong>prpbesproken.Nadeanalyse<strong>van</strong>deproceduredeclaratie|deinput|wordtnudecodetureswordengegroepeerd.Bijdedeclaratie<strong>van</strong>hetremoteprototypemoetgesimuleerd.Deparametersmoetenvoorrpcgenininputenoutputstruc- (mag)deprogrammeuraangevenofhetin,out,ofinoutparametersbetreft. Referenceparameterswordenviaeencallbycopy/restoremechanisme<br />

nismeisgebaseerdop[Kernighan2].Bijarraysenstringsgaat[Kernighan2] altijduit<strong>van</strong>callbyreference,bijanderedatatypeshangtdekeuze<strong>van</strong>het basis<strong>van</strong>datatypeenlevelofindirectionwordtzelfgekozen.Ditmecha- Laatmenditachterwegedantreedteendefaultmechanismeinwerking.Op<br />

daardC,callbyreferenceinplaats<strong>van</strong>callbyvalueaantegeven.Ineen rpcomgevingishetdoorgeven<strong>van</strong>pointersbetekenisloos.Bijeenrpc levelofindirectionaf.<br />

declaratiekaneensterretjenietsandersdan'byreference'aanduiden.De Parameterskunnen<strong>van</strong>eenstervoorzienwordenom,netalsinstanmeterbyvaluebestaatnietmeeromdatinterprocespointersbetekenisloosoorspronkelijke(standaardC)betekenisalsdeclaratie<strong>van</strong>eenpointerpara-<br />

zijnindeSunrpcomgeving.Bijprpduidteenpointerdeclaratieaandat<br />

parameteroverdrachttotindetailbepalen.Bijeeninparameterwordtde kandezedoorhetexplicietaanbrengen<strong>van</strong>in,out,eninoutdeprecieze deactueleparametergewijzigdkanwordendoorderemoteprocedure.<br />

restore<strong>van</strong>decallbycopy/restorenietuitgevoerd.Zokanbijprpeen Wanneerdeprogrammeurnietaccoordgaatmetdedefaultinterpretatie<br />

arraybyvaluewordendoorgeven:deremoteprocedurekanhetorigineel nietwijzigen.DezemogelijkheidisinstandaardCnietaanwezig.Metin, out,eninoutkandeecientie<strong>van</strong>eenrpcverhoogdwordendooronnodige parameteroverdrachttussenprocedurestevoorkomen.InappendixAwordt hieropdieperingegaan.<br />

5.4.3RPCGENdatatypes renceparameterskanmenmetinput/outputparametersbenaderen.DeSunomgevingondersteuntmetrpcgenhetcopymechanism.Refe- Binnenprpwordensimple-,string-,array-enstructure-parametersoorten onderscheiden.Simpletypeszijnintegers,charactersenoats.Stringszijn<br />

dracht<strong>van</strong>gegevenstussenclientenserver.Hetomvormen<strong>van</strong>eenbe beschreven. NULL-terminated-character-arrays.Arraysenstructureszijnin[Kernighan2]<br />

paaldemachine-afhankelijkerepresentatienaarxdrvormwordtserializinggenoemd,hetdecoderenenlokaalopbouwen<strong>van</strong>dedatastructuurdeseriaSunrpcgebruiktdeExternalDataRepresentation(xdr)voordeover- serializen.Deont<strong>van</strong>germoetzedeserializen.rpcgengenereertvoorde rpcgen-stubsdehiervoorbenodigdeaanroepen<strong>van</strong>xdrsystem-calls.Om dejuisteaanroepentekunnengenererenmoetbijingewikkeldedatastruc- lizing.Alsparametersoverhetnetwerkgezondenwordenmoetdezenderze<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 111


5.4.3 tureninde.x-ledeopbouw<strong>van</strong>diedatastructuurgespeciceerdworden. Verbeteringen<br />

worden. menstellendedelen,diedoordexdrbibliotheekroutinesverwerktkunnenrpcgenmaaktdanproceduresdiededatastructuurontledeninzijnsa- typedeclaratiesinde.x-lewordenfoutiefgenterpreteerddoorrpcgen [Sun1].Dedeclaratie<strong>van</strong>eenpointer-to-characterwordtalseenpointer naareenkarakteropgevat.InhetalgemeenzaleenCprogrammeureen Dexdr-datatypessluitenhelaasnietperfectaanopdie<strong>van</strong>C.Sommige<br />

NULL-terminated-stringbedoeldhebben[Kernighan2].rpcgenheeftdit<br />

applicatiemoetgewoonchar*gebruiktworden.Opdezeproblematiek opgelostdoorhetkeywordstringintevoeren.Alsdeprogrammeureen<br />

wordtverderinappendixAingegaan. roependoorderpcgen-stubs.Inderest<strong>van</strong>deCprogramma's<strong>van</strong>devariabelealsstringdeclareertwordtdexdrfunctievoorstringsaange- structurediedeCunionomsluit.Deprogrammeurmoetgoedoplettendat uitdanCunions.Deprogrammeurmagvooreenrpcgenrpcalleende xdrvariantgebruiken.rpcgenvertaalthetvoorCnieuwedatatypeineen Eentweedeverschiltreedtopbijunions.xdrunionszieneranders<br />

Inde.x-lestaat: [Sun1,p.61]: mennietperongelukdeunionopdeCmaniergebruikt.Eenvoorbeeld<br />

case0: default: unionread_resultswitch(interrno){ chardata[1024];<br />

rpcgenvertaaltditvoorderest<strong>van</strong>deapplicatiein: }; void;<br />

structread_result{ interrno;<br />

}; union{ }read_result_u; chardata[1024];<br />

lengte.ConstantelengtearrayskomenmetstatischeCarraysovereen,variabelelengtekunnenvoordynamische|malloc()|arraysgebruiktworden. Variabelelengtearrayswordendoorrpcgenvertaaldnaareenstructure Arrayszijnerinxdrintweesoorten:constantelengteenvariabele<br />

atrun-timegevuldworden.Eenvoorbeeld[Sun1,p.60]: Inde.x-lestaat: meteenextralengtemember.Ditlaatsteveldmoetdoordeprogrammeur<br />

rpcgenvertaaltditvoorderest<strong>van</strong>deapplicatiein: intheights;<br />

112 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


DetailsPRP struct{ 5.4.3<br />

}heights; int*heights_val; unsignedintheights_len;<br />

hetandereplaats. codegegenereerdworden.prpmaaktquadatatypeonderscheidnaarsimple, Detegenererencodeis<strong>van</strong>tweecriteriaafhankelijk.Heteneisdatatype,<br />

string,arrayenstructure.Decodeisquaplaatsverschillendvoor(a)de .x-le,(b)deprp-clientstuben(c)deprp-serverstub. Voordeverschillendegroependatatypesmoetdoorprpverschillende<br />

outputparameter. hetvullen<strong>van</strong>derpcgeninputparameterenhetuitpakken<strong>van</strong>derpcgen Binnendeprp-serverstubverschiltdecodevoordedeclaratie<strong>van</strong>de Binnendeprp-clientstubverschiltdecodevoordeproceduredeclaratie,<br />

outputparameter. lokalevariabelen,hetuitpakken<strong>van</strong>derpcgeninputparameter,hetaanroepen<strong>van</strong>degebruikersserverprocedureenhetvullen<strong>van</strong>derpcgen verschiltusseneenrpcgen-applicatieeneenprpapplicatieteillustreren. hoortbehandeldenmettabellenverduidelijkt.Indeappendiceszijnverdernogtweevoorbeeldprogramma'sopgenomen.Dezezijnbedoeldomhet InappendixAwordtdecodediebijdezeverschillendetypenenplaatsen<br />

wordtbekekeninhoeverredetransparantie<strong>van</strong>deSunomgevingverhoogd isdoorprp. Hetvolgendehoofdstukgeefteenbeoordeling<strong>van</strong>hetprp-model.Hier<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 113


Hoofdstuk6<br />

BeoordelingPRP<br />

6.1 prpmoeteenvertaalslag<strong>van</strong>ansiCnaarrpcgenmaken.Deinterfaceaan deoutputkantwordtgevormddoorrpcgenendeCcompiler.Deoutput Kritiek<br />

Dezeiswelinstaatombijsyntaxwijzigingenteblijvenfunctioneren.De latieprocesdanstokt.Deinputkant<strong>van</strong>prpisdeapplicatieprogrammeur.<strong>van</strong>prpmagnietafwijken<strong>van</strong>desyntaxbeschrijvingenomdathetcompi- syntaxdieprpaccepteertwijktopeenaantalpuntenaf<strong>van</strong>deCsyntax. CorrecteCprogrammales(.c-les)moetenaangepastwordenvoordatprp zekanverwerken. nitieleschrijven.De.c-lesbevattengeennieuwesyntaxelementen.Ze wordendirectdoordeCcompilerverwerktennieteerstdooreenaparte processor|zoalsbijprp.Bijrpcgenapplicatiesgebruiktdeprogrammeur Bijrpcgenapplicatiesmoetdeprogrammeureenaparteinterfacede-<br />

metbestaandesyntaxelementenopeenongebruikelijkemanieraangeroepen geennieuwesyntaxelementenmaarnieuwetaalconstructies.Eenrpcwordt (ziepagina93). menten|opdegebruikelijkemanieraangeroepen. afwijkingen<strong>van</strong>standaardC Bijprpapplicatieswordteenrpc|nadeclaratiemetnieuwesyntaxele-<br />

dezedoelstellingwordtafgeweken. Eendoelstelling<strong>van</strong>hetprp-ontwerpisomgeennieuwesyntaxelementenen geennieuwetaalconstructiesteintroduceren|deinputmoetuitstandaard Clesbestaan.Indevolgendelijstzijndepuntenopgesomdwaarop<strong>van</strong><br />

modulegedenieerdwordt.Remotewordtopdezelfdewijzegebruikt kenthetkeywordexterndataangeeftdateenprocedureineenandere keywordremotedatvoorhetprototypegeplaatstmoetworden.C Remoteprponderkentdetebewerkenproceduresopbasis<strong>van</strong>het<br />

procedurenietineenanderemodulemaarineenanderprogramma| opeenanderemachine|gedenieerdwordt. alsextern.Degedachteachterremoteisdatditaangeeftdateen<br />

114


KritiekInCapplicatieszalvoordedesbetreendeproceduresexterndoor 6.1<br />

geroepenkunnenwordenmoeten<strong>van</strong>eenplaatsaanduidingvoorzien remotemoetenwordenver<strong>van</strong>gen.<br />

worden.Inrpcgenapplicatiesisditeenextraparametervoorderpc. ServernaamRemoteproceduresdienietmeteenbroadcast-callaan-<br />

x5.3.2iseenargumentatiegegevenvoordeintroductie<strong>van</strong>ditnieuwe prpkentinnavolging<strong>van</strong>sommigeanderesystemende@-notatie.In syntaxelement. Wanneerdeprogrammeurdeadresseringsmogelijkheidnietnodigheeft ishetnietnodigde@-notatietegebruiken.Heeftmenvoordetoepassingwelbehoefteaandemogelijkheiddeadresseringtekunnenbeheersen,dankandit.Opditpuntisdeprpoplossingzoweltransparant(indiengewenst)alsexibel(indiengewenst).Ditgaatten koste<strong>van</strong>deecientie:erwordteenextrarpcuitgevoerdomde `in'en`out'Hetdefaultparametercopymechanisme|derichting<strong>van</strong> servernaamtebepalen. deparameters|datprpuitstandaardCconstructiesaeidtisniet altijddegewensteofmeestecienteoplossingvooreenbepaaldetoeHetcopymechanismsluitquaecientiebeteraanopgescheiden-<br />

<strong>van</strong>deapplicatietebeheersen. nieuwesyntaxelementen|in,outeninout|omhetexactegedrag passing.Indezegevallenkandeprogrammeurgebruikmaken<strong>van</strong>geheugenparadigma'sdanhetdenitionalmechanism(pagina61).<br />

Netalsrpcgenvertaaltprpdedenitionalmechanismaspecten<strong>van</strong><br />

genvoordeapplicatieprogrammeurtenopzichte<strong>van</strong>C.rpc'smogengeenNaastnieuwesyntaxelementenintroduceerthetprp-modelmeerbeperkin- C|callbypointervalue|naareencopymechanism.<br />

is,rpcgen,eenconstantaantalparametersveronderstelt. variabelaantalparametershebben.Ditomdatdelaagwaaropprpgebouwd<br />

<strong>van</strong>eenunion,ofhetaantalelementenwaareenpointernaarwijstvastte weaklytypedis.Binnenhetprp-modelishetnietmogelijkhetdatatype stellenopbasis<strong>van</strong>deC-parameterdeclaraties. Inx6.3.2wordtuiteengezetwelkeproblemenzichvoordoenomdatC<br />

ookxA.4).Eenoplossinghiervoorisomhetmaximaleaantalelementen| typewelatcompile-timevast.Hetpointer-probleemheeftmeerfacetten(zie union-parameterdeprogrammeureenstructuregebruikt|daar<strong>van</strong>staathet Hetunion-probleemisoptelossendoorteeisendatinplaats<strong>van</strong>een<br />

Doorhetontbreken<strong>van</strong>eengemeenschappelijkeadresruimteneemtdebruikbaarheid<strong>van</strong>pointervariabelenaf(zieappendixA). gebruik<strong>van</strong>pointersvoorrpc-parameterswordenveelbeperkingengelegd. netalsindexdr-le|tussenscherpehakenaantelatengeven.Ophet<br />

litischeprogramma's<strong>van</strong>zelfspreken.Hetgebruik<strong>van</strong>interprocesglobalegeengebruikmaken<strong>van</strong>bepaaldemogelijkhedendieinconventionelemono- <strong>Applicatie</strong>sdiegebruikmaken<strong>van</strong>hetrpc'sindeSunomgevingkunnen<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 115


6.2.1 variabeleneninterprocesgeheugenreferentiesis<strong>van</strong>wegedeinecientieniet BeoordelingPRP<br />

genalsrpcgenapplicaties.gemplementeerd.prpapplicatieskennenwatditbetreftdezelfdebeperkin- beperkingenopteheenzouprpgemeenschappelijkgeheugenparadigma's vallendezebeperkingenbijprpwellichtmeeropdanbijrpcgen.Omdeze moetenimplementeren.Binnendeindezescriptiebeschrevenopzet<strong>van</strong> Omdatprpeenhogeremate<strong>van</strong>transparantienastreeftdanrpcgen<br />

ecientieproblematiekdieinx3.3.2en46beschrevenis. prpalseenvoudigepreprocessorisditnietmogelijk,nogafgezien<strong>van</strong>de<br />

riavoor<strong>gedistribueerde</strong>applicatieontwikkelomgevingen. 6.2 Hieronderwordthetprp-modelbeoordeeldopdetweeverzamelingencrite- Beoordelingmodel<br />

Sunrpcgenomgeving.prpiseenextrastub-eninterfacedenitiegenera- prpintroduceertgeenspeciale<strong>gedistribueerde</strong>taal.prpbouwtvoortopde 6.2.1Gedistribueerdheid<br />

tor. parallellisme(1) Deeenheid<strong>van</strong>parallellismeendemanier<strong>van</strong>schedulingzijnongewijzigd. Oordeel: interprocescommunicatie(2) prpbouwtvoortoprpcgen.prpapplicatiesmakengebruik<strong>van</strong>hetrpcparadigma.Hetisinprincipemogelijkomdepoint-to-pointmessageswordtdoor[Sun1]ontraden.Hetleidttotcomplexeapplicaties.Bijdeontpassingprimitieven<strong>van</strong>dediepereunixlagentegebruiken.Hetdoorelwikkeling<strong>van</strong>ditsoortapplicatieszullendebeperkingen<strong>van</strong>transparantiekaargebruiken<strong>van</strong>highlevelrpc-primitievenenlowlevelmessage-passing verhogendegereedschappenalsrpcgenenprpdevoordelenovertreen.<br />

fouttolerantie(3) deel:+=prpvergroothetaantalparadigma'sniet(x3.4.5).Onveranderdoordes<strong>van</strong>derpcgen-stubsaf<strong>van</strong>gen.Deprogrammatekst<strong>van</strong>eenapplicatieapplicatiesaandeSunomgevingtoe.Hetaantalfoutcontrolesdatdeprogrammeurmoetuitvoerenwordtverminderddoordatdeprp-stubsfoutco prpvoegtgeenelementenvoorhetverhogen<strong>van</strong>debedrijfszekerheid<strong>van</strong><br />

wordthierdooroverzichtelijker. 116Onveranderdoordeel:<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingmodel integratiesemantiek(4) 6.2.1<br />

andersdaninrpcgenapplicaties.Hierblijfteengrootverschiltussen<strong>gedistribueerde</strong>applicatiesenmonolitischeprogramma's. Hetgebruik<strong>van</strong>globalevariabelenenpointersisinprpapplicatiesniet<br />

diehiermeegemaaktwordenteverbeteren. prpdoetgeenpogingendeondersteuningbijhetopsporen<strong>van</strong>fouten<br />

complexiteit(5) Onveranderdoordeel:=1<br />

Vooreenprpapplicatiehoeftdeprogrammeurgeenaparteinterfacedenitie teschrijven.Hetisnietmeernodigomingewikkeldeparameterstructures samentestellenenuiteenterafelenzoalsbijrpcgenrpc's.Hetaantal<br />

oppagina8formuleerdenwaservoorzorgendatnietalleenspecialistenmaar <strong>van</strong>eenrpcindeSunomgevingisverhoogd.HetdoeldatBirrell&Nelson foutcontrolesdatdeprogrammeurmoetuitvoerenisteruggebracht.<br />

ookgewoneapplicatieprogrammeursprogramma'svoor<strong>gedistribueerde</strong>sys- Decomplexiteit<strong>van</strong>deprogrammacodeisverminderd.Detransparantie<br />

complexergeworden.Vergelijkhiervoordeguren4.2en5.2. temenzoudenkunnenschrijven.Ditdoelwordtmetprpbetergerealiseerd danmetrpcgen.<br />

deSunomgevingeenslechteondersteuning.prpintroduceertgeennieuwe Hetcompilatieprocesisdoordeintroductie<strong>van</strong>eennieuweprocessor<br />

communicatieparadigma's.Ditpuntisongewijzigd. Voorapplicatiesdieandereeisenstellendaneensynchronerpcbiedt<br />

naar+ Decomplexiteit<strong>van</strong>deprogrammacodeisverminderd.Oordeel:<strong>van</strong><br />

Inprpapplicatieshoeftdeprogrammeurgeenpointerstegebruikenom typesecurity(6) parameterwaardentebenaderen.Decodehiervoorwordtdoorprpgegenepilermogelijk.prpvereist<strong>van</strong>deprogrammeurdatdezeprototypesinhetreerd.Hierkanmengeenfoutenmeermeemaken. programmagebruiktvoorremoteprocedures.Deconsistentie-waarborgende functie<strong>van</strong>deinterfacecompilerisdoorprpovergenomen. Prototypes<strong>van</strong>proceduresmakenparametertype-checksdoordecom-<br />

naar= tiesnietuitgevoerd.Run-timechecksomtypesecuritytewaarborgenwordeninprpapplica1Detransparantie<strong>van</strong>eenprprpcisgroterdan<strong>van</strong>eenrpcgenrpc.Ditrpc- Dekansophetmaken<strong>van</strong>foutenisenigszinsafgenomen.Oordeel:<strong>van</strong><br />

beschrijving<strong>van</strong>problemendiedetaalCmetzichmeebrengt. speciekecriteriumisbijpuntfoppagina120beschreven.ZieverderxA.4vooreen <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 117


6.2.2 ecientie(7) BeoordelingPRP<br />

Deecientie<strong>van</strong>operatingsystemenrpc-subsysteemzijnnietgewijzigd.<br />

xdrconversie. applicatie.Dezeoverheadiskleininrelatietotdenetwerkoverheadende Eenprpapplicatiekenteengrotereoverheaddaneenvergelijkbarerpcgen Eenprpapplicatiekenteenextrastublaagbijdeuitvoering<strong>van</strong>eenrpc.<br />

waardoorsommigetoepassingennietecientgemplementeerdkunnenworden.Deecientie<strong>van</strong>hetsysteemisnietwezenlijkgewijzigd.Oordeel: prpbiedtalleenhetrpc-paradigmavoorinterprocescommunicatieaan,<br />

enrpcgenopanderesystemenbeschikbaarzijn.prpismetbehulp<strong>van</strong> Voordeoverdraagbaarheid<strong>van</strong><strong>gedistribueerde</strong>Sunapplicatiesmoetenxdr overdraagbaarheid(8)<br />

programmaiseenvoudignaaranderesystemenovertedragen.Platforms standaardunixgereedschappen(yacc,ccenmake)ontwikkeld.Hetprp dierpcgenapplicatiesondersteunenzijnookgeschiktvoorprpapplicaties.<br />

6.2.2RPC Onveranderdoordeel:+<br />

Indezeparagraafwordendeelfspeciekerpcaspecten<strong>van</strong>deprpapplica- omgevingwordenhierdeverbeteringenbesproken. a.globalevariabelen tieontwikkelomgevingbeoordeeld.Opbasis<strong>van</strong>debeoordeling<strong>van</strong>deSun<br />

Hetprobleemdatinterprocesglobalevariabelennietgesignaleerdworden bestaatookbijprp.Erisnietgepoogdditprobleemoptelossen.<br />

b.pointervariabelen Onveranderdoordeel:<br />

omgeving|zonder(logisch)gemeenschappelijkgeheugen|zijnpointervariabelenzinloos.Ingeenenkeletaalvoorzulkeomgevingenkandezesemantiek onderscheptpogingenomdittochtedoen.Ineenlogisch<strong>gedistribueerde</strong> Pointervariabelentussenverschillendeadresruimteszijnbetekenisloos.xdr<br />

xdr-taalvertaald. InhetprpmodelwordenCtypedeclaratiesuitdeprogrammatekstinde gebodenworden.<br />

Hetpointerprobleemwordtzowelinderpcgenalsindeprpsituatie Recursievedatastructurenwordendoordexdrstandaardondersteund.<br />

adequaatopgelost. 118Onveranderdoordeel:+ <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingmodel c.parameters 6.2.2<br />

rpcgen-stubskennenhooguiteeninputparametereneenresultaatwaarde.<br />

aanroep.Deprogrammeurhoeftgeen.x-lemeerteschrijven.Dekansopmetersyntax<strong>van</strong>eenrpckangelijkzijnaandie<strong>van</strong>eenlokaleprocedure Hetgebruik<strong>van</strong>dezeparametersisingewikkeldenfoutgevoelig.<br />

foutenbijhetgebruik<strong>van</strong>parametersiskleinergeworden. prp-stubszijnopditpunttransparantvoordeprogrammeur.Depara-<br />

nabootsen.prpdoeteenpogingveelgebruiktecallbyreferenceconstructies moetdeprogrammeurzelfcallbyreferencemetinput-enoutputparameters voordeparameteroverdrachtdaneendenitionalmechanism.Bijrpcgen Voor<strong>gedistribueerde</strong>systemeniseencopymechanismbetergeschikt<br />

volgenshetcopymechanismtemodelleren(x5.4.2).Desemantiek<strong>van</strong> (pagina61). callbyreferencekanin<strong>gedistribueerde</strong>systemenslechtsbenaderdworden<br />

d.faal-semantiek Metprpzijnmeerdereparametersmogelijk.Oordeel:<strong>van</strong>naar+<br />

bouwstenenomzero-or-onesemantiekvoorremoteproceduresmeetebouwentoe.Netalsbijrpcgenwordtditaandeprogrammeurovergelaten. prpbiedtdezelfdesemantiek<strong>van</strong>eenrpcalsrpcgen.prpvoegtgeen<br />

meurinprincipevoorat-most-onceofat-least-oncesemantiekkiezen.In prpisditoptcpgexeerd(zieookpunth). Doordespecicatie<strong>van</strong>hetgegevensoverdrachtprotocolkandeprogram-<br />

hetprpmodelwordendefoutcodes<strong>van</strong>derpcgen-stubsdoordeprp-stubs hedenmoetensysteemfoutenaandeprogrammeurgerapporteerdworden.Ineects<strong>van</strong>proceduresbewaken.Voorhetuitvoeren<strong>van</strong>herstelwerkzaamDeprogrammeurmoetbijat-most-oncesemantiekzelfeventueleside- keuzemogelijkheidmeer.Defaal-semantiekisat-most-once.Oordeel:<strong>van</strong> meurdoorgegeven.afge<strong>van</strong>geneneventueelineenglobalevariabeleaandeapplicatieprogram- +naar Detransparantieistoegenomen,deexibiliteitisafgenomen.Erisgeen<br />

e.foutcode/exceptions NetalsrpcgenvoegtprpgeenexceptionstoeaanC.Foutconditieswor-<br />

om.Deapplicatieprogrammeurkandezeraadplegenomzelfdenodigeactie <strong>van</strong>rpcgen-stubsretournerenaf,enzettendezeineenglobalevariabele hieromgevraagdheeft,<strong>van</strong>gendeprp-stubsdefoutcodesdiedeaanroepen dendoorfoutcodes<strong>van</strong>proceduresgesignaleerd.Wanneerdeprogrammeur<br />

<strong>van</strong>eenrpcgenrpcmoetmenfoutcontrolesschrijvendiebijeenlokale teondernemen. 2Hetprp-prototypekentalleendemogelijkheidombijelkefouthetprocestestoppen. Eenalternatiefisombijelkefouthetprocestestoppen.2Bijaanroep<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 119


6.2.2 aanroepnietnodigzijn.Bijaanroep<strong>van</strong>eenprprpczijndezeookafwezig. BeoordelingPRP<br />

stelwerkzaamhedenuittevoeren.Doorhetmechanismemetdeglobale Opditpuntisdetransparantie<strong>van</strong>eenrpcvergroot.<br />

(indiengewenst)enmeertransparantie(indiengewenst). variabelediedefoutcodeweergeeftbiedtprpdezelfdemate<strong>van</strong>exibiliteit Voorbepaaldetoepassingenkanhetwenselijkzijnombijeenfoutherkunnenzijndateensysteemfoutbijeenlokaleprocedureaanroepookafbrenomenwordtisbeeindiging<strong>van</strong>hetproces.Deredenvoordezekeuzezouken<strong>van</strong>hetprocestotgevolgheeft.Desemantiek<strong>van</strong>eenprprpckomtDealternatieveactiediedooreenprp-stubbijeensysteemfoutonder-<br />

opditpuntovereenmetdie<strong>van</strong>eenlokaleaanroep.<br />

proces.Bijidempotenteprocedureskanhetopnieuwverzenden<strong>van</strong>eenrpc hetdoeliszijnsysteemfoutenjuistgeenaanleidingvoorafbreken<strong>van</strong>een wenselijkis.Wanneervergroting<strong>van</strong>debedrijfszekerheiddoorreplicatie Eennadeel<strong>van</strong>dezewerkwijzeisdatditnietvooralletoepassingen<br />

enlokaleproceduresisnietaltijddejuisteoplossing. eenbeterereactieopeensysteemfoutzijn.Identiekesemantiek<strong>van</strong>remote<br />

f.integratieinprogrammeertaal Detransparantieistoegenomen.Oordeel:<strong>van</strong>naar<br />

rpcgen-stubszijningewikkeldinhetgebruikdoorderestrictieophetaantal diehierdoornodigzijnmakendathetgebruik<strong>van</strong>eenrpcgenrpcniet parametersendeextrafoutafhandelingbijelkeaanroep.Detaalconstructies<br />

formulering<strong>van</strong>deaanroep<strong>van</strong>eenremoteproceduregelijkaanhetlokale transparantisvoordeprogrammeur. Metuitzondering<strong>van</strong>dedrieafwijkingen<strong>van</strong>deCsyntax<strong>van</strong>x6.1isde equivalent. prp-stubswordenopdezelfdewijzealseenlokaleprocedureaangeroepen.<br />

taalmoetdaninde<strong>gedistribueerde</strong>omgevingidentiekzijn.Oppagina46 nodigdansyntactischegelijkenis.Degehelesemantiek<strong>van</strong>desequentiele isbeschrevendatdesemantiek<strong>van</strong>globalevariabelenengeheugenreferen- Voorvolledigetransparantie<strong>van</strong>eenrpcvoordeprogrammeurismeer<br />

tiesnietin<strong>gedistribueerde</strong>omgevingenopecientewijzeondersteundkan worden.Volledigetransparantieisnietopecientewijzetebereikenvoor alleelementen<strong>van</strong>detaalC.<br />

g.interfacedenitie Caanroepovereen.Oordeel:<strong>van</strong>naar+ Deaanroepsyntax<strong>van</strong>eenprprpckomtinhogematemeteenlokale<br />

kiezen(ziexA.1.3).Alleanderefuncties<strong>van</strong>deinterfacedenitieworden doorprpuitdeprogrammatekst<strong>van</strong>deapplicatiegegenereerd. catieprogrammeurmoetdoeniseenapplicatienummervoordeapplicatieDeinterfacedenitiewordtdoorprpgegenereerd.Hetenigedatdeappliveranderdoordeel:+ 120Dedenitie<strong>van</strong>deinterfaceistransparantvoordeprogrammeur.On <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Beoordelingmodel h.gegevensoverdrachtprotocol 6.2.3<br />

nismen.Voordegegevensrepresentatiewordtxdrgebruikt.Alscommuni nadeel<strong>van</strong>udpisdatparametersnietgroterdan8kilobytemogenzijn. catieprotocolkandeprogrammeurinprincipeuitudpentcpkiezen.Eenprpmaaktgebruik<strong>van</strong>dedoorrpcgenaangebodencommunicatiemecha- is.Vooridempotenteprocedures|waarat-least-once/udpgeschiktervoor transparantiewordtalsprotocoldoordeprp-stubsaltijdtcpgeselecteerd. Oppagina67isbeschrevendatvoorat-most-oncesemantiektcpgeschikt Geziendenadrukdieinhetprp-modelligtophetverhogen<strong>van</strong>de<br />

omudpalsprotocoltekunnenkiezen. koste<strong>van</strong>deexibiliteit.Voorsommigetoepassingenkanhetwenselijkzijn is|zijndeprp-stubsnietoptimaalgeschikt.<br />

Detransparantieistoegenomen,deexibiliteitisafgenomen.Erisgeen Deprotocolkeuzeistransparantvoordeprogrammeur.Ditgaatten<br />

keuzemogelijkheidmeer.Oordeel:<strong>van</strong>+naar i.netwerkadressering prpmaaktvooradresseringgebruik<strong>van</strong>dedienstendiedeportmapperaan<br />

inditgevalkiezentussengroteretransparantieofgrotereexibiliteit. verhoogtdetransparantieenverlaagtdeexibiliteit.Deprogrammeurkan adresserenkandeprogrammeurdeservernaamweglatenbijeenrpc.Dit rpcgenlevert.Voorapplicatieswaarinhetnietnodigisserversdirectte<br />

j.beveiliging Onveranderdoordeel:+<br />

aandeprogrammeurovergelaten.Hetdoel<strong>van</strong>ditonderzoekistranspa- Hetisaandeprogrammeuromhieralofnietgebruik<strong>van</strong>temaken. DeSunomgevingbiedtbouwstenenvooridenticatie<strong>van</strong>clientaanserver.<br />

rantieverhoging.Detaak<strong>van</strong>prpiseenoplossingvoorpunt5,6en7<strong>van</strong> x4.2.3tebieden.Beveiligingmaakthiergeenonderdeel<strong>van</strong>uit. Deprp-stubsmakengeengebruik<strong>van</strong>identicatieprimitieven.Ditwordt<br />

<strong>van</strong>naar prpmaaktgeengebruik<strong>van</strong>demogelijkhedenvoorbeveiliging.Oordeel:<br />

k.parallellisme<br />

niet.Detaak<strong>van</strong>prpiseenoplossingvoorpunt5,6en7<strong>van</strong>x4.2.3te prpmaaktgebruik<strong>van</strong>standaardSunservers.Vergroting<strong>van</strong>demate<strong>van</strong><br />

<strong>van</strong>uit. bieden.Vergroting<strong>van</strong>demate<strong>van</strong>parallellismemaakthiergeenonderdeel parallellisme<strong>van</strong>rpcgenserversverhoogtdetransparantie<strong>van</strong>eenrpc<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling Onveranderdoordeel: 121


6.3 6.2.3Samenvatting BeoordelingPRP<br />

melingencriteria.Hieronderwordtsamengevatinwelkemateprpvoldoetaandetweeverza- iskorthetverschiltussenprpenrpcgensamengevat. ontwikkelingendeprp-Sunomgevingsamengevat.IndemiddelstekolomAllereerstwordtdeovereenstemmingtussendecriteriavoorapplicatie- criterium 1.parallellismeGedistribueerdeomgeving(prp) 2.communicatie 3.fouttolerantie onveranderd rpceniguitgewerkteparadigma kern<strong>van</strong>deverandering score<br />

4.integratie 5.complexiteit geenelemententoegevoegd onveranderd +=<br />

6.typesecurity prpaccepteertC <br />

7.ecientie watminderpointers(bijparameters) =<br />

8.overdraagbaarheidonveranderd ietstrager + =<br />

Devolgendetabelvatdeovereenkomstvoorderpc-speciekeaspecten +<br />

samen.<br />

criterium rpcaspecten<strong>van</strong>prp<br />

b.pointers a.globalevariabelen onveranderd kern<strong>van</strong>deverandering score<br />

d.faal-semantiek c.parameters onveranderd transparant <br />

e.foutcode syntactischtransparantmaarinexibel +<br />

f.integratierpc meertransparantie transparant +<br />

h.protocol g.interfacedenitie i.netwerkadresseringportmapper,broadcast transparant syntactischtransparant,geenkeuze +<br />

k.parallellisme j.beveiliging ongebruikt onveranderd +<br />

6.3 rpc'smeteenpreprocessoropeenaantalpuntenkanwordenverhoogd.In Hetprpmodelisbedoeldomnategaanofdetransparantie<strong>van</strong>rpcgen Implementatieprototype<br />

x5.2.1isbeschrevendathetontwerp<strong>van</strong>hetprpprogrammavolgensde<br />

122 methode<strong>van</strong>stapsgewijzeverfijningisopgezet.Ditisgedaanomdecomplexiteit<strong>van</strong>hetprogrammaontwerptekunnenbeheersen[Kernighan1].In <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Implementatieprototype dittrajectzijneenaantalfasenteonderscheiden.Defasenlopen<strong>van</strong>be- 6.3.1<br />

perkteondersteuning<strong>van</strong>demogelijkheden<strong>van</strong><strong>gedistribueerde</strong>Capplicaties totuitgebreideondersteuning.Deonderstaandelijstsomtdeverschillende ondersteuningsniveausop. 1.Simpletypes(integers,oatingpointencharacters) 2.Statischeeendimensionalearrays(arrayswaarbijdedimensieinde 3.Strings 4.Broadcast-calls declaratievermeldwordt)<br />

7.Structures,unions,typedefsenenumeratedtypes;recursievedata- 5.Meerdimensionalestatischearrays 6.Genesterpc's(eenserverprocedurediezelfeenrpcuitvoert)<br />

8.Dynamischgealloceerdearrays(arrayswaarbijhetgeheugenatrunstructurenalsgelinktelijsten,bomenengrafen handleidingvoorditprototype. Omhetprp-modelopuitvoerbaarheidteonderzoekenzijnachtereenvolgens fase1,2,3en4gemplementeerdineenprototype.AppendixAbevateen timegealloceerdwordtdooraanroep<strong>van</strong>eenmalloc()-routine)<br />

tweecriteria<strong>van</strong>belang(ziexA.3.1): wordendeapplicatielesgeanalyseerddoordeparser.Bijhetparsenzijn Dewerkwijze<strong>van</strong>prpzieteringrotelijnenalsvolgtuit.Allereerst<br />

is. <strong>Plaat</strong>sOfdeproceduregedeclareerdofgedenieerdwordt. DatatypeOfdeparametereensimple,string,array,ofstructuretype<br />

Wanneernahetparsendeinternetabellengevuldzijn,wordendeoutputles gegenereerd.Bijdecodegeneratiezijnookweertweecriteria<strong>van</strong>belang(zie pagina113):<br />

prp-serverstubgegenereerdmoetworden. <strong>Plaat</strong>sOfdecodevoor(a)de.x-le,(b)deprp-clientstub,of(c)de DatatypeOfhetsimple,string,array,ofstructureszijn.<br />

Hieronderwordendeprobemenbijhetuitwerken<strong>van</strong>fase1{4inhetprpprototypebeschreven. 6.3.1Ervaringen Bijhetverhogen<strong>van</strong>detransparantiebinnende<strong>gedistribueerde</strong>Sunom-<br />

mateeensequentieletaal. chanisme<strong>van</strong>Cabstraheertniet<strong>van</strong>lowlevelpointers.DetaalCisinhogemetadressenbinneneenlogischeadresruimte.HetparameteroverdrachtmegevingishetfundamenteleprobleemdatCsterkgerichtisopmanipulaties <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 123


6.3.1 defaultregelsvoorparameteroverdracht BeoordelingPRP<br />

dekeuzeomeencharacterarrayalsstringteinterpreteren.Dekeywordsin, deabstractere(hogere)bedoelingen<strong>van</strong>deapplicatieprogrammeurteachterhalen.Ditishetgevalbijdedefaultregelsvoorparameteroverdracht,en prpprobeertopbasis<strong>van</strong>bepaaldeconstructiesmetlowlevelCprimitieven<br />

broadcast-calls groveinterpretatiekancorrigeren.Ditgaattenkoste<strong>van</strong>detransparantie. outeninoutzijneensoortnoodoplossingzodatdeprogrammeurdezevrij<br />

geenadresheeftgespeciceerd,hetnetwerkadres<strong>van</strong>eenservermodulete bepalen.Deserverroutineshebbenhiertoeeenkleinehulproutinedietot taakheefteenbroadcastcalltebeantwoorden(ziexC.2).Deprimitieven Deprp-stubsmakengebruik<strong>van</strong>broadcast-callsom,indiendeprogrammeur<br />

primitievenschermendeimplementatiemetbehulp<strong>van</strong>socketsnietaf.Hetiseeningewikkeldeenmatiggedocumenteerdematerie.DeSunrpc- voorbroadcast-callsbehorenvolgens[Sun1]totdelowlevelprimitieven.<br />

stractieniveauop:3deprp-stubsbieden(indiengewenst)locatietransparantie.EencomplexeimplementatieleverthierprimitievenmeteenhoogabHetveelvuldigkopieren<strong>van</strong>om<strong>van</strong>grijkeparametersisnadeligvoordeef- arrays<br />

client-stubisditbijhetuitpakken<strong>van</strong>derpcgen-parameterstructureniet mogelijk. voorkeurnietdewaardenzelf,maarpointersernaardoorgeven.Indeprpcientie<strong>van</strong>hetsysteem.Bijarray-parametersmoetendeprp-stubsbij op.Dithoudtindathetadreswaardezevariabelenaarwijstnietgewijzigd raykannietgevuldwordendoordezepointervariabelenaareengeheugenkanworden.4Eendoordeapplicatieprogrammeurgedeclareerdstatischar- InCleverteenstatisch-arraydeclaratieeenconstantepointervariabele<br />

blokmetdenieuwewaardentelatenwijzen.Dewaardenmoetendoor deprp-stubeenvooreen<strong>van</strong>derpcgen-stubnaardegebruikersvariabele<br />

stubnaargebruikersmodulekanhierecienterplaatsvindendoornietde gekopieerdworden(zieookxA.3.1).<br />

waardenzelf,maarhetbeginadreser<strong>van</strong>,doortegeven. beleop|eenvarieerbarevariabele.Deoverdracht<strong>van</strong>waarden<strong>van</strong>rpcgenEendynamisch-arraydeclaratieleverteengewone(volatile)pointervaria- resultaten Voorhettesten<strong>van</strong>implementatiefase4isdevoorbeeldapplicatieuitappendixCgebruikt.Dezetestdeimplementatie<strong>van</strong>desyntaxanalysevolgens Welcorrectis:inta[10];int*p;p=a; 4Hetvolgendeisincorrect:inta[10];int*p;a=p; 3Zieookguur2.5.<br />

124 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Implementatieprototype xA.2.2endecodegeneratievolgensxA.3.1.Deapplicatiemaaktgebruik 6.3.2<br />

<strong>van</strong>simpletypes,statischearrays,strings,enbroadcast-rpc.Demogelijke combinaties<strong>van</strong>datatypesenplaats|aldannietvolgensdedefaultregels|<br />

leiden. testworden.WelkecombinatiesditzijnisuittabellenalsinxA.2.2aftewanneerfase8gemplementeerdis|moetenallemogelijkecombinatiesge- wordennietuitputtendgetest.Voordatprpserieusgebruiktkanworden|<br />

danlokaleprocedureaanroepen.Alleenalomredenen<strong>van</strong>transparantie moeteenrpczosnelmogelijkzijn.Hetprp-programmatotenmetfase4 isnietopsnelheidgetest. Naastcorrectheidstestszijnsnelheidstestsbelangrijk.rpc'szijntrager<br />

parameterstructuresgekopieerd.Vanarraysenstringswordtinprincipekopieren<strong>van</strong>parameters[Tanenbaum5].Inhetprp-modelwordenparametersbijhetin-enuitpakkendoordeprp-stubs<strong>van</strong>ennaarderpcgen Eenpuntdatdesnelheid<strong>van</strong>eenrpc-systeemsterkbenvloedtishet<br />

komen.doorhetgebruik<strong>van</strong>dekeywordsinenoutoverbodigecommunicatievoorblokkenwordtzoveelmogelijkvermeden.5Deapplicatieprogrammeurkanalleenhetbeginadresgekopieerd.Hetkopieren<strong>van</strong>om<strong>van</strong>grijkegeheugen- tusseninternebuers<strong>van</strong>hetoperatingsystem,ennetwerkoverheadnemen maximaal10procent<strong>van</strong>deoverdrachttijdkost.Contextswitches,kopieren datparametermarshallingindestubsopdemeestesystemenwaarschijnlijk Uiteentest,diein[Tanenbaum5,p.439]isbeschreven,isafteleiden<br />

derest<strong>van</strong>detijdinbeslag.<br />

deecientie.Hetveelvuldiggebruik<strong>van</strong>grotestatischearraysalsrpc- transparantieverhogingleidtvermoedelijkniettoteengroteafname<strong>van</strong> formance<strong>van</strong>applicatieswaarschijnlijknietexcessiefdoenafnemen.prp'sHetkopieren<strong>van</strong>enkelvoudigewaardenofgeheugenadressenzaldeperparameterzouhieropeenuitzonderingkunnenzijn.metingenwordenvastgesteld. 6.3.2UitbreidingPRP-prototype Deeventuelejuistheid<strong>van</strong>dezevermoedenskanalleendoorsnelheids-<br />

nietgewijzigdteworden. uitgebreidworden.Destructuur<strong>van</strong>hetprp-modelzelfbehoefthiervoor Voordeimplementatie<strong>van</strong>fase5{8moetdeinvulling<strong>van</strong>hetprp-model<br />

parser Doordegrammatica<strong>van</strong>deparseruittebreidenvolgens[Kernighan2]kan prpdeclaraties<strong>van</strong>structures,unions,typedefs,enumeratedtypesenmeerdimensionalearraysherkennen.DaardeCdeclaratiesyntaxhiervoorvast ligtishetparsen<strong>van</strong>dezedatatypengeenprobleem.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling clientstubhieropeenuitzonderingvormt.5Hiervoorisbeschrevenwaaromhetuitpakken<strong>van</strong>eenstatischarrayindeprp- 125


6.3.2Echter,derpcgen-syntax|deoutput<strong>van</strong>prp|komthieralleenwat BeoordelingPRP<br />

betreftstructuresentypedefsmeeovereen.Unions,enumeratedtypesen<br />

rpcgen-typesvertaalt,endeprp-serverstubmoetconversiecodebevatten vatten,deprp-clientstubmoetconversiecodebevattendiedeCtypesnaardievoorrpcgengeschiktzijn.De.x-lemoethetrpcgen-equivalentbe- meerdimensionalearraysmoetendoorprpvertaaldwordeninconstructies<br />

eenarray-dimensiewordensamengesteld.Deprp-clientstubconverteerthet dierpcgen-typesnaarCvertaalt.<br />

meerdimensionalearraynaareenstructurediebestaatuitsub-structures Enumeratedtypeskomenmetint'sovereen.6Dezeconversieistriviaal.<br />

metelkeenarray-dimensie.Dexdr-routines<strong>van</strong>derpcgen-clientstub Meerdimensionalearrayskunnendoorhetnesten<strong>van</strong>structuresmet<br />

serializendezestructurezodathetrpc-subsysteemdezekanverzenden.<br />

characterstring.rpcgen-unionshebbenhieromeenmemberdathettypebyte-integermoetwellichtandersgeconverteerdwordendaneen4-bytekanwijzigen.Bijhetserializenmoethetdatatypebekendzijn|een4- BijCunionsdoetzichhetprobleemvoordathettypeatrun-time<br />

aangeeft(ziepagina112).Cunionshebbendatniet,waardooronduidelijk iswelkexdr-conversieroutinesgebruiktmoetenworden. manierisomderpcgen-declaratiesyntaxovertenemen.Ditbetekenteen nieuweafwijking<strong>van</strong>deCsyntax.Eenanderemogelijkheidisomnietde declaratietewijzigen,maardeapplicatieprogrammeurteverplichtenbij Erzijnverschillendemogelijkhedenomditprobleemoptelossen.Een<br />

singenzijnniettransparantvoordeprogrammeur.Eenoplossingdieweldeaanroep<strong>van</strong>deprp-clientstubhettypetespeciceren.Beideoplosstandaardendevoordelen<strong>van</strong>`opensystemen'.Eenvierdemogelijkheidis destruisvogelvariant.Ditwerktalleenwanneerclientenserverdezelfde gegevensrepresentatiehebben.Dezeoplossingdoetafbreukaandexdr- transparantis,isomdeunionalsongewijzigdebytestringovertezenden|<br />

omunionsalsrpc-parameterteverbiedenendeprogrammeurtedwingen dynamischegeheugenallocatie voorrpc-parameteroverdrachtalternatievenalsstructurestegebruiken.<br />

hiergeeninformatieover.Tijdensdemarshalling<strong>van</strong>parametersishetniet Ciseenweaklytypedlanguage.Ditbetekentdatalleendeapplicatiepro- mogelijkomdeom<strong>van</strong>gofhettype<strong>van</strong>eenparametermetzekerheidvast grammeurweetwathettype<strong>van</strong>sommigevariabelenis.Decompilerheeftraysproblemenop.Teneersteisuiteenpointerdeclaratienietafteleidentypesecurityenunion-overdracht|ookbijdeoverdracht<strong>van</strong>dynamischear-<br />

testellen[Tanenbaum5](zieookxA.4.1).<br />

ofheteenpointernaareenenkelvoudigedatastructuuris,ofdatheteen Hetontbreken<strong>van</strong>type-informatieinClevert|naastdeproblemenbij<br />

wijzegesimuleerd. lenmoeteennieuwsyntaxelementwordeningevoerd|bijvoorbeeldscherpepointernaarhetbeginwaarde<strong>van</strong>eenarrayis.Omdittekunnenvaststel- 1266InK&RC(deeerstedruk<strong>van</strong>[Kernighan2])werdenenumeratedtypesookopdeze <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Implementatieprototype haken,netalsindexdr-taal[Sun1]. 6.3.2<br />

time)declaratie8deactueleom<strong>van</strong>gafteleiden.Alleendoorgebruiktemaken<strong>van</strong>implementatie-speciekeeigenschappen<strong>van</strong>hetC-run-timesysdynamischarray7niet.Hetisvoorprpnietmogelijkomuitde(compile- Tentweedekentdecompilerdeom<strong>van</strong>g<strong>van</strong>eenatrun-timegealloceerd<br />

altijdoverdraagbaarnaarandereontwikkelomgevingen. bibliotheken<strong>van</strong>Ccompilersbevattenroutineswaarmeeditmogelijkis. Dezeoplossingistransparantvoordeapplicatieprogrammeur,maarniet teemisdeom<strong>van</strong>g<strong>van</strong>hetgeheugenbloksomsteachterhalen.Sommige<br />

eenvoorprpbereikbarelocatieopslaan.Dezever<strong>van</strong>genderoutinesmoeten realloc()enfree()|dievoorelkgealloceerdegeheugenblokdeom<strong>van</strong>gop voorallegeheugenallocatieroutinesschrijven|zoalsmalloc(),calloc(), Wanneerdezemogelijkhedenontbrekenkanmenver<strong>van</strong>genderoutines<br />

eenanderenaamhebbendandeoorspronkelijkeroutines.Deprogrammeur moetdezever<strong>van</strong>genderoutinesgebruikenindeprogrammacode.<br />

gealloceerdblokkopieren,voordatzekunnenwordenovergezonden.Deze nietisvasttestellen.Deprogrammeurmoetdegegevensdannaareenzelf codenietbeschikbaaris,kanhetvoorkomendatopdezewijzedeom<strong>van</strong>gWanneereenapplicatiegebruikmaakt<strong>van</strong>modules,waar<strong>van</strong>desource- laatsteoplossingenzijnniettransparantvoordeapplicatieprogrammeur.<br />

speciceren. latengeven|zoalsbijunionsdeprogrammeurhetactueletypezoumoeten <strong>van</strong>g<strong>van</strong>hetgeheugenblokbijdeaanroep<strong>van</strong>deremoteprocedureopteEenandereniet-transparanteoplossingisomdeprogrammeurdeom- Ditpuntheeftbetrekkingopdeplaats<strong>van</strong>detegenererencode. genesteRPC's Devoorgaandepuntenhebbenbetrekkingophetdatatype<strong>van</strong>parameters.<br />

clientroutinesdieeenserverroutineaanroepen,waarnadeserverweerterugkeertnaardeclient.Destructuur<strong>van</strong>deapplicatiekanookcomplexerwor servermodules.DevoorbeeldapplicatieuitappendixBenCbestaatuit Een<strong>gedistribueerde</strong>rpc-applicatieissamengestelduitclientmodulesen<br />

cedureeenclientstubeneenanderelemetvoorelkeremoteprocedureeen rpcpleegtnaareenandereserver.Ditiseengenesterpc[Spector,Weihl2]. den.Hetkanzijndateenremoteprocedureineenservermodulezelfweereen<br />

serverstub.Deeerstelewordtmetdeclientmodulesgelinkt,endetweede lemetdeservermodules.prpgaatuit<strong>van</strong>modulesdiepuurclientofpuur prpgenereerttotimplementatiefase5eenlemetvoorelkeremotepro-<br />

eenrpcwordt|zijnzonietmogelijk. serverzijn.Genesterpc's|waarbijeenserverprocedurezelfdeclient<strong>van</strong><br />

dienodigzijn.Ditkunnenzowelclient-alsserverstubszijn. plicatiemoduleeenapartestub-moduletegenererenmetdevoordiemodule benodigdestubs.Opdezewijzebevatelkexecutableimagepreciesdiestubs Eenoplossingisompermoduledestubstegroeperenenvoorelkeap-<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 7Bijvoorbeeld:p=(int*)malloc(aantal*sizeof(int)); 8Bijvoorbeeld:int*p; 127


6.3.2AlsbijvoorbeeldserverprocedureBdoorprocedureAaangeroepenis, BeoordelingPRP<br />

serverstubvoorBendeclientstubvoordeaanroep<strong>van</strong>C. enzelfeen(geneste)rpcnaarprocedureCdoet,danbevatmoduleBde<br />

128 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Hoofdstuk7<br />

Bevindingen<br />

sche)adresruimtenmoetmengebruikmaken<strong>van</strong>interproces-communicatietoepassingsprogramma'svoordezeomgevingen.Doordeverschillende(logi- `gescheidengeheugen'.Ditheeftgroteconsequentiesvoorhetschrijven<strong>van</strong> Centraalindearchitectuur<strong>van</strong><strong>gedistribueerde</strong>systemenstaathetconcept<br />

[Tanenbaum5].Omgebruiktemaken<strong>van</strong>devoordelen<strong>van</strong><strong>gedistribueerde</strong><br />

teem:deprocessorenhebbenelkeeneigengeheugen,encommunicerenmet herzien. omgevingen(ziex2.1.4)moetdestructuur<strong>van</strong>veeltoepassingenworden<br />

elkaarviaeennetwerk.Communicatieviaeennetwerkisaanmerkelijktrager danviagemeenschappelijkgeheugen.ToepassingendiefrequentcommuniEengedistribueerdsysteemisgedenieerdalseenlooselycoupledsys- gemplemeneteerd.Toepassingendieinfrequentcommuniceren|applicaties metlargegrainparallellisme|zijngeschiktvoor<strong>gedistribueerde</strong>systemen. cerenkunnenbeteropsystemenmetgemeenschappelijkgeheugenworden<br />

geschikt(ziepagina39). coupledsystemenzijnhetprocesofhetobjectalseenheid<strong>van</strong>parallellisme Omteveelcommunicatietevoorkomenmoetdeeenheid<strong>van</strong>parallellisme <strong>van</strong>deprogrammeertaalvoldoendegrootwordengekozen.Voorloosely<br />

wikkeldheid)<strong>van</strong>hetgeheelgroot.Omzo'nsysteembruikbaartemaken gelijkvormigecomponenten,bijvoorbeeldwerkstations.Doordeintegratie <strong>van</strong>meerderecomplexebouwstenenisdecomplexiteit(indezin<strong>van</strong>inge- Eengedistribueerdsysteemisopgebouwduitmeerdereminofmeer<br />

wordtgestreefdnaartransparantie<strong>van</strong>degedistribueerdheid.Dithoudtin dathetsysteemvoordegebruikerofdeapplicatieprogrammeureenvirtuele uniprocessoris. abstractie<br />

moetdegebruikernietgedwongenwordenomzelfdeplaatser<strong>van</strong>tekennen. Doordeingewikkelderstructuur<strong>van</strong>eengedistribueerdsysteemmoetmet evenhoogzijnals<strong>van</strong>eenconventioneelsysteem|bijhetopenen<strong>van</strong>eenle Hetabstractieniveau<strong>van</strong>deconcepten<strong>van</strong>eengedistribueerdsysteemmoet<br />

<strong>van</strong>primitievenhangtsamenmetdeecientie<strong>van</strong>hunimplementatie:het deprimitieveneengroteresemanticgapoverbrugdworden.Desemantiek 129


7isingewikkeldommetlowlevelprimitievenkrachtigehighlevelconcepten Bevindingen<br />

ecientteimplementeren. tie.Omtransparantieaanapplicatieprogrammeurstekunnenbiedenmoet zijn.Eengoedeapplicatieontwikkelomgevingbiedthighlevelprimitievenals desemantiek<strong>van</strong>interproces-communicatieprimitievenzokrachtigmogelijk Gedistribueerdeapplicatiesmakengebruik<strong>van</strong>interproces-communicarpcoflogischgemeenschappelijkgeheugenaan,inplaats<strong>van</strong>lowlevelpri-<br />

basis<strong>van</strong>eenhighlevelspecicatiegegenereerd.Dezespecicatiewordt voordeapplicatieprogrammeurtransparantgemaakt.Destubswordenop deingewikkeldelowlevelcommunicatiemetbehulp<strong>van</strong>eenstubgenerator mitievenalspoint-to-pointmessagepassing.Bijveelrpc-omgevingenwordt<br />

fouten `interfacedenitie'genoemd[Birrell].<br />

Eenvolledigtransparanteapplicatieontwikkelomgevingisophetgebied<strong>van</strong><br />

transparant,maarhebbeneenbredertoepassingsgebied.Metprimitieven vingendiedeprogrammeurfouttoleranteprimitievenbiedenzijnmindermeestetoepassingenomeconomischeredenennietecient[Bal].Omge- beschikbaarheid<strong>van</strong>systemenenbetrouwbaarheid<strong>van</strong>gegevensvoorde<br />

geschiktemate<strong>van</strong>fouttolerantieimplementeren. vooratomairetransactieskandeprogrammeurzelfdevooreenapplicatie<br />

eenserverprocedureofinhungeheeloptreden,of(bijuitval<strong>van</strong>eencomponent)geenenkeleecthebbenopdetoestand<strong>van</strong>hetsysteem.Bijzerotiek<strong>van</strong>eenrpc.Zero-or-onesemantiekgarandeertdatdeside-eects<strong>van</strong>Fout-transparantieheeftbijrpc-systementemakenmetdefaal-semanor-onesemantiekwordtvoordeuitvoering<strong>van</strong>eenrpcdesysteemtoestand plaats(ziepagina62). idempotenteprocedures|ishetvastleggen<strong>van</strong>detoestandnietnodig:bij at-least-oncesemantiekvindtnaeentime-outbijdeclienthertransmissie vastgelegdopsecundairgeheugen.Voorprocedureszonderside-eects|<br />

lendeadresruimtes.Veelconceptenuitsequentieleprogrammeertalengaanuit<strong>van</strong>eenaaneengeslotenadresruimte.Desemantiek<strong>van</strong>globalevariabelen,pointervariabelenenparameteroverdrachtbyreferenceisnietecientEen<strong>gedistribueerde</strong>applicatieisopgebouwduitprocessenmetverschil- zijn.Eenprprpclijktopeengewoneaanroep,maarishetniet.Het ineengescheiden-geheugenomgevingteimplementeren(ziepagina46).De<br />

doel<strong>van</strong>Birrell&Nelson<strong>van</strong>pagina8isdatmengeenexperthoefttezijn schappelijkgeheugennietmeerdaneensurrogaatprocedureaanroepkanprogrammeurmoetzichrealiserendateenrpczonder(logisch)gemeen- hoefttezijn,moetmenzichweldegelijkbewustzijn<strong>van</strong>degevolgendiehet ontbreken<strong>van</strong>eengemeenschappelijkeadresruimtetussenprocessenheeft. om<strong>gedistribueerde</strong>applicatiesteschrijven.Zomendangeenexpertmeer<br />

moeilijkerdanineenvergelijkbaresequentieleapplicatie.Omdetestfaseefliseerdsysteemishetopsporen<strong>van</strong>foutenineen<strong>gedistribueerde</strong>applicatiecienttelatenverlopenishet<strong>van</strong>belangdatcompilerenrun-timesysteemOmdateengedistribueerdsysteemgecompliceerderisdaneengecentra- 130 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Bevindingen <strong>van</strong>eentaalalleafwijkingen<strong>van</strong>deregels<strong>van</strong>detaal|verkeerdearray7<br />

wordtditvaakachterwegegelaten. ren<strong>van</strong>run-timecheckstenkostegaat<strong>van</strong>deecientie<strong>van</strong>eenprogrammaindices,ongenitialiseerdepointers|signaleren[Hoare].Omdathetuitvoe Sun Uitdeliteratuurzijncriteriaafgeleiddiebruikbaarzijnvoordebeoordeling<br />

beschreven|deeleen<strong>van</strong>deprobleemstelling.Deuitkomsten<strong>van</strong>debe- debeoordeling<strong>van</strong>deSunomgevingeenlijstmetspeciekerpc-criteria eenlijstmetalgemenecriteriavoor<strong>gedistribueerde</strong>omgevingenisvoor <strong>van</strong>applicatieontwikkelomgevingenvoor<strong>gedistribueerde</strong>systemen.Naast<br />

oordeling<strong>van</strong>deSunomgeving|deeltwee<strong>van</strong>deprobleemstelling|komen overeenmetdebeschrijvingen<strong>van</strong>[Chin,Coulouris].<br />

deontwikkeling<strong>van</strong>client/server-applicatiesontworpen(x3.4.4,[Sun1]). tion/servermodel.Deapplicatieontwikkelomgevingisontworpenrondhet procesalsexplicieteeenheid<strong>van</strong>parallellisme.DeSunsystemenzijnvoor DeSunomgevingiseenlooselycoupledomgevingvolgenshetwerksta-<br />

speciekefunctionaliteitteverdelenis|reden3uitx2.1.4.Hiervooriseen omgevingwaarinmenexplicietparallellemoduleskanspecicerengeschikt. Dezecategorieapplicatieskenteenstructuurdiegoedinmodulesmeteen DeSunomgevingheeftgeenvoorzieningenvoorfouttolerantie.Voordeimnavolging<strong>van</strong>[Birrell]eencodegenerator(rpcgen)istoegevoegd.Desyn-<br />

zalextraprogrammatuurmoetenwordengekochtofgeschreven. plementatie<strong>van</strong>applicatiesdieeenhogemate<strong>van</strong>bedrijfszekerheidvereisentax<strong>van</strong>deprogrammamodulesisstandaardC;zewordendirectdoorde<br />

Ccompilerverwerkt.Hetgebruik<strong>van</strong>derpcgen-stubproceduresisniet DeSunontwikkelomgevingvolgtdestructuur<strong>van</strong>x3.2.1,waaraanin<br />

menmoetextrainitialisatie-enfoutafhandelingscodeschrijven. enfoutgevoeligemaniermetstructuresenpointerswordenovergezonden,en transparantvoordeprogrammeur.Parametersmoetenopeengekunstelde<br />

PRP prpisontworpenomdrie<strong>van</strong>deachtzwakkepunten<strong>van</strong>deSunomgeving teverbeteren|deeldrie<strong>van</strong>deprobleemstelling,ziepagina93.prpiseen preprocessordieeenextrastub-laagomderpcgen-stubsheenproduceert. Hetgebruik<strong>van</strong>derpcgen-stubswordtzoveelmogelijktransparantgemaakt.Deprogrammeurbehoeftgeeninterfacedenitiemeerteschrijven,hetspeciceren<strong>van</strong>deservernaamisvereenvoudigd,deextrafoutcontroleszijnweggevallen,enparameterskunnenopdeinCgebruikelijkewijze wordengespeciceerd.Desyntaxensemantiek<strong>van</strong>deparameteroverdracht <strong>van</strong>prprpc'sbenadertdie<strong>van</strong>lokaleCprocedures.Terillustratie<strong>van</strong><br />

dendoorprp,eenpreprocessor,bewerktvoorzedoordeCcompilerworden zonderenmetprpopgenomen. detransparantieverhogingisinappendixBenCeenvoorbeeldapplicatie<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling Hetprp-modelisvolgensx3.2.2opgezet.Deprogrammamoduleswor- 131


7gecompileerd.prpgenereertcodevoordeinterfacedenitievoorrpcgen, Bevindingen<br />

deaanroepen<strong>van</strong>system-callsendeaanroepen<strong>van</strong>rpcgen-stubs.Desyntax<strong>van</strong>programmamodulesvoorprpisnietstandaardC,maar`extended striktansiC.InxA.4isbeschrevenopwelkepuntenproblemenoptreden mogelijkvreemdetaalconstructieszoalsrpcgen.Welzijnerdrienieuwe syntaxelementengentroduceerd(x6.1).Detaaldieprpaccepteertisniet C'.prpprogrammamodulesbevattenmethetoogoptransparantiezomin<br />

verderonderzoek bijdeintegratie<strong>van</strong>Cineen<strong>gedistribueerde</strong>omgeving.<br />

deling<strong>van</strong>ditsoortomgevingenmoetenanderecriteriaopgesteldworden.meenschappelijkevariabelen|gebaseerdzijn.Vooreengedetailleerdebeoorgendieopeenanderinterproces-communicatieparadigma|zoalslogischgeDerpc-speciekebeoordelingscriteriazijnnietbruikbaarvooromgevin- Delijstalgemenecriteriakanhiertoeeenaanzetvormen.<br />

extraoverheadinverhoudingtotdenetwerkoverheadwaarschijnlijkrelatief meterdeoverdrachtrichting(input,outputofbeide)opgeven.Omdatdeparametersnietonnodigovertezendenkandeprogrammeurbijelkepara- Deintroductie<strong>van</strong>extrastubsvergrootdeoverhead<strong>van</strong>eenrpc.Om<br />

geengrotevertragingzalveroorzaken.Inhoeverredetransparantieverho- alleendoorsnelheidstestswordenuitgewezen. ging<strong>van</strong>prpuiteindelijkgepaardgaatmetafname<strong>van</strong>deecientiekan kleinzalzijnbestaathetvermoedendatditbijdemeesteparametertypen<br />

Voordeondersteuning<strong>van</strong>allemogelijkheden<strong>van</strong>detaalCmoetditook voordeoverigefasengebeuren.Wanneerditisgebeurdmoetendesnelheidsencorrectheidstestenplaatsvinden.Voorhetontwerpen<strong>van</strong>eentestpro Hetprp-modelistotenmetfase4<strong>van</strong>pagina122gemplementeerd.<br />

grammakangebruikgemaaktworden<strong>van</strong>deontwerpschema'svoordecodegeneratie.Dezegeveneenuitputtendebeschrijving<strong>van</strong>dedoorprpte producerencode.<br />

verdereverbeteringen<strong>van</strong>deSunomgevingmogelijk(ziepagina93).De Voordeanderepunten,ophetgebied<strong>van</strong>fouttolerantie(zero-or-onesemantiek),interprocesglobalevariabelen,enparallellisme<strong>van</strong>deserverzijn prpbiedteenoplossingvoordriezwakkepunten<strong>van</strong>deSunomgeving.<br />

alsconcreetuitgangspuntdienenvoorverderonderzoek(ziehoofdstuk3). beschrijvingen<strong>van</strong>decriteriawaaropdezepuntenbeoordeeldzijnkunnen<br />

(parallelliserendecompilers)wordtnogveelonderzoekverricht[Bal].Deze problemenvereiseneenandersoortoplossingdaneenpreprocessorvoor boekt.Naarparallelleserverstructuren,enooknaarimplicietparallellismeOphetgebied<strong>van</strong>fouttolerantiezijnalveelonderzoeksresultatengevereisenisdestandaardSunapplicatieontwikkelomgevingnietdemeestge- p.1].Voorapplicatiesdieimplicietparallellismeofatomairetransacties rpcgenkanbieden.<br />

schiktekeuze.EenanderetaaldanC,ofeenandercommunicatieparadigma Ciseenprocedureletaalmeteenlaagabstractieniveau[Kernighan2,<br />

danrpc,kanvoorbepaaldetoepassingenbetergeschiktzijn|bijvoordeeld 132 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Bevindingen eenfouttoleranteomgevingalsArgusofCamelot,eenfunctioneletaalals 7<br />

geheugenkent,ishetdevraagofCwelzogeschiktisvoorhetprogrammeren welhaastfundamenteel.Aangezieneen<strong>gedistribueerde</strong>omgevinggescheiden ParAl,ofeengemeenschappelijkevariabele-taalalsLindaofOrca.<br />

<strong>van</strong><strong>gedistribueerde</strong>applicaties(ziexA.4). DaarnaastiseenconceptueelaaneengeslotenadresruimtevoordetaalC<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 133


Hoofdstuk8<br />

Samenvatting<br />

gedistribueerdheid<br />

<strong>van</strong>deSunremoteprocedurecalltevergroten.HiervooriseenliteratuurIndezescriptiewordtonderzochthoehetschrijven<strong>van</strong>toepassingsprogramma'svoorde<strong>gedistribueerde</strong>omgeving<strong>van</strong>Sunzogoedmogelijkonder voor<strong>gedistribueerde</strong>programma'skanstellen.Opbasis<strong>van</strong>dezeeisenis steundkanworden.Omdittebereikenwordtgeprobeerddetransparantie<br />

eenprogrammageschrevenmetalsdoeldeprogrammatuurontwikkelingte studieverrichtnaardeeisendiemenaaneenapplicatieontwikkelomgeving vereenvoudigen. omgevinginhetbijzonderadequaatkanondersteunen. catiesvoor<strong>gedistribueerde</strong>computersystemeninhetalgemeenendeSun Eengedistribueerdsysteembestaatuitcomputersdieineennetwerk Hetonderwerp<strong>van</strong>dezescriptieishoemendeontwikkeling<strong>van</strong>appli-<br />

tragerisdanviagemeenschappelijkgeheugen.Hetvoordeelisdatcomputers hetnetwerk.Hetnadeel<strong>van</strong>communicatieviaeennetwerkis,dathet geheugen,zecommunicerenmetelkaardoormiddel<strong>van</strong>boodschappenvia metelkaarzijnverbonden.Deprocessorenhebbengeengemeenschappelijk<br />

geograschverspreidkunnenwordenopgesteld,enzopotentieeleengrotere<br />

teemteimplementeren: eengedistribueerdmodelishetwerkstation/server-model. betrouwbaarheidhebbendangecentraliseerdesystemen.Eenvoorbeeld<strong>van</strong><br />

1.Eenkorteredoorlooptijdvooreenenkeleberekening. Erzijnvierredenenomapplicatiesopeengedistribueerdcomputersys3.Demogelijkheidbepaaldedelen<strong>van</strong>hetsysteemtegebruikenomspe-<br />

2.Toegenomenbetrouwbaarheidenbeschikbaarheid.<br />

4.Demogelijkheidinherentegedistribueerdheid<strong>van</strong>eenapplicatietebeciekefunctionaliteitecientaantekunnenbieden. gemplementeerdwordenvaakvolgenshetclient/server-modelopgezet.Een serveriseencomputerdieeenbepaaldedienstaandeclientsaanbiedt. <strong>Applicatie</strong>sdieomreden3of4opeengedistribueerdsysteemworden nutten.<br />

134


Samenvatting Eengedistribueerdsysteemheeftdriefundamenteleeigenschappen:fout8<br />

uitval<strong>van</strong>eencomputerkanhetsysteemdetakenverdelenoverdeovergeblevencomputersenzoeenapplicatieblijvenuitvoeren|fouttolerantie.Doortolerantie,parallellisme,entransparantie. eenprobleeminmeerderedelentesplitsenkunnenverschillendecomputers Eengedistribueerdsysteemisopgebouwduitmeerderecomputers.Bijde<br />

ergelijktijdigaanrekenen|parallellisme.Hetverschiltusseneennetwerk operatingsystemeneengedistribueerdoperatingsystemistransparantie.<br />

teemishetverschiltussendecomputersonzichtbaarvoordegebruiker|hetlendecomponenten,enmoetdenamener<strong>van</strong>kennenombijvoorbeeldeenprogrammaeldersopeencomputeroptestarten.IneengedistribueerdsysIneennetwerkoperatingsystemisdegebruikerzichbewust<strong>van</strong>deverschil- iseenvirtueleuniprocessor. parantiemoeilijkteverwezenlijken.Inveelgevallengaattransparantietenveelcompromissen.Dezekeuzeszijn<strong>van</strong>invloedopdecategorietoepassin- koste<strong>van</strong>deecientie<strong>van</strong>eensysteem.Eengedistribueerdsysteembevat Vanwegedegrotecomplexiteit<strong>van</strong>eengedistribueerdsysteemistransmeurmoetzelfeenapplicatieinparallellemodulesverdelen.Verderkent<br />

deSunomgevinggeenondersteuningvoorfouttolerantie.Doordezetwee genwaarhetsysteemgeschiktvooris.<br />

eigenschappenisdeSunomgevingmetnamegeschiktvoorapplicatiesdie DeSunomgevingkentgeenparallelliserendecompilers.Deprogram-<br />

omreden3en4opeengedistribueerdsysteemwordengemplementeerd,en nietomreden1en2.Ditzijnniet-fouttoleranteclient/serverapplicaties. probleemstelling Deprobleemstellingluidtalsvolgt: Aanwelkecriteriamoeteengoedeontwikkelomgevingvoor<strong>gedistribueerde</strong>applicatiesvoldoen?voudigdworden?OpwelkewijzekanhetprogrammerenvoordeSunomgevingvereen- InhoeverrevoldoetdeSunontwikkelomgevingaandezecriteria?<br />

rpceeninterproces-procedureaanroep. catie.Integenstellingtoteengewoneintraproces-procedureaanroepiseenprocedurecall(rpc)iseenveelgebruiktevorm<strong>van</strong>interproces-communi- DeSunomgevingisgebaseerdopderemoteprocedurecall.Eenremote<br />

callsdoorhetoperatingsystemaangeboden.Dezesystem-callshebbeneen zwakkesemantiek.Hetschrijven<strong>van</strong>eenapplicatieprogrammametdeze system-callsisergingewikkeld.Naaranalogie<strong>van</strong>hetsysteem<strong>van</strong>Birrell rpc-primitievenwordenindeSunomgevingindevorm<strong>van</strong>system-<br />

&NelsonkentdeSunomgevingdaaromeenstubgenerator.Denaam<strong>van</strong><br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling dezecodegeneratorisrpcgen.Opbasis<strong>van</strong>eenlemetdedeclaraties<strong>van</strong> deremoteprocedures|deinterfacedenitie|genereertrpcgeneenaantal 135


8Cmodulesdiedestubsbevatten.1Eenstubiseenlokaleprocedurediede Samenvatting<br />

programmeur.details<strong>van</strong>hetgebruik<strong>van</strong>rpc-system-callsafschermt<strong>van</strong>deapplicatiemoetdeprogrammeurveelfoutcontrolesschrijven.Erzijnveelmogelijkhe- overtezendenmoetdeprogrammeurzeinstructuresgroeperen.Daarnaast maaleeninput-eneenoutputparameterhebben.OmmeerdereparametersDezestubszijningewikkeldtegebruiken.Eenrpcgenrpckanmaxi- deeleen<strong>van</strong>deprobleemstelling.Indebeoordelingwordteenaantalsterke basis<strong>van</strong>deliteratuurinhoofdstuk3eenaantalcriteriageformuleerd| denombijhetgebruik<strong>van</strong>rpcgen-stubsfoutentemaken.<br />

enzwakkepunten<strong>van</strong>deSunomgevinggedenticeerd|deeltwee<strong>van</strong>de Omdeapplicatieontwikkelomgeving<strong>van</strong>Suntebeoordelenwordtop<br />

probleemstelling. PRP<br />

ophetlagetransparantieniveaudatderpcgen-stubsbieden|hetingewik- staatvoorPreRpcgenProcessor.Dezezwakkepuntenhebbenbetrekking teringvoorgesteld:hetprp-model|deeldrie<strong>van</strong>deprobleemstelling.prpVooreenaantal<strong>van</strong>dezwakkepuntenuitdebeoordelingwordteenverbe- <strong>van</strong>eenapplicatiedeinput<strong>van</strong>eenrpcgen-programmategenereren:een interfacedenitie,eeninput-eneenoutputparameterperrpc,enintialisatiekeldegebruiker<strong>van</strong>.codeenfoutcontroles.Eriseenprogrammageschrevenomteonderzoekenof Hetdoel<strong>van</strong>prpisomopbasis<strong>van</strong>destandaardprogrammamodules<br />

meurafgeschermddoorextraprp-stubs.Deaanroepwijze<strong>van</strong>prp-stubs komtmeermetdie<strong>van</strong>lokaleproceduresovereendandeaanroepwijze<strong>van</strong> hetprp-modelwerkt.Decomplexerpcgen-stubsworden<strong>van</strong>deprogram- rpcgen-stubs. outputuitsluitendopbasis<strong>van</strong>ansiCtegenereren.Erzijndriefundamenteleelementenaandeinputsyntaxtoegevoegd:eenaanduidingwelkeproceduresmeteenrpcaangeroepenworden,eenplaatsaanduiding(net- Hetbleeknietmogelijkommeteeneenvoudigepreprocessordegewenste<br />

werkadres)voordezeremoteprocedures,eneenrichtingsaanduidingom<br />

<strong>van</strong>Cineen<strong>gedistribueerde</strong>omgeving. beschrevenopwelkeverderepuntenerproblemenoptredenbijdeintegratie onduidelijkhedenbijdeparameteroverdrachtwegtenemenendeecientie er<strong>van</strong>teverhogen.Inx5.3.2enx6.1wordtditbeschreven.InxA.4is<br />

metersgebruiken,menhoeftgeenextrainitialisatie-offoutcontrolecodeterpcteverhogen.Deprogrammeurkanbijeenprp-stubmeerdereparastuk3isnaarvorengekomendathetmogelijkisdetransparantie<strong>van</strong>eenUitdebeoordeling<strong>van</strong>hetprp-modelopbasis<strong>van</strong>decriteria<strong>van</strong>hoofd- schrijven,enbijeenvoudigeapplicatiesishetmogelijkdeplaatsaanduiding roepwordtdichtbenaderd.<strong>van</strong>eenrpcwegtelaten.Deaanroepsyntax<strong>van</strong>eenlokaleprocedureaan- 1361DeSunapplicatieontwikkelomgevingisgebaseerdopunixendetaalC. <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Hetprp-modelgaatnetalsrpcgenuit<strong>van</strong>processenmetgescheiden Samenvatting<br />

bepaaldesituatiesverschiltdesemantiek<strong>van</strong>eenrpceneenlokaleprocedureaanroephierdoor(ziepagina61).Ookdefaal-semantiek<strong>van</strong>proceduresnis.Callbyreferencewordtmetkopieeren<strong>van</strong>parametersgesimuleerd.Ingeheugen.Geheugenreferentieshebbenineenanderprocesgeenbeteke- metside-eectsisverschillend(ziepagina62). mogelijkverhoogd.Eenaantalmeerfundamenteleproblemenvormteen beletselvoorvolledigetransparantie.Deapplicatieprogrammeurmoetzich steedsrealiserendateenrpcslechtseensurrogaatprocedureaanroepis,en Detransparantieismeteenvoudigemiddelen|eenpreprocessor|zoveel<br />

genkent,ishetdevraagofCwelzogeschiktisvoorhetprogrammeren<strong>van</strong>fundamenteel.Aangezieneen<strong>gedistribueerde</strong>omgevinggescheidengeheu- deprocessengeengemeenschappelijkeadresruimtehebben.<br />

<strong>gedistribueerde</strong>applicaties. EenconceptueelaaneengeslotenadresruimteisvoordetaalCwelhaast<br />

vermoedenjuistisdatdezeoverheadacceptabelis. Deprp-stubsintroducerenenigeextraoverheadbijdeoverdracht<strong>van</strong>parameters.Metsnelheidstestszalmoetenwordenvastgesteldinhoeverrehet aanbevelingen<br />

fasenuithetontwerpgemplementeerd.Wanneerallefasengemplementeerdzijn,endeprp-implementatieallemogelijkheden<strong>van</strong><strong>gedistribueerde</strong> Capplicatiesondersteunt,moetencorrectsheids-ensnelheidstestsworden Omhetprp-modelopuitvoerbaarheidteonderzoekenzijneenaantal<br />

procesglobalevariabelen,enserverparallellismezijnverdereverbeteringenverbeteren.Ophetgebied<strong>van</strong>fouttolerantie(zero-or-onesemantiek),inter- uitgevoerd.<br />

<strong>van</strong>deSunomgevingmogelijk.Dezeproblemenzijnteom<strong>van</strong>grijkombin- Hetprp-modelprobeertdriezwakkepunten<strong>van</strong>deSunomgevingte<br />

lossen. nenhetkader<strong>van</strong>eeneenvoudigepreprocessorvoorrpcgenoptekunnen uitgangspuntdienenvoorverderonderzoeknaardeoverigevijfpunten<strong>van</strong> pagina93. Debeschrijvingen<strong>van</strong>decriteriainhoofdstuk3kunnenalsconcreet<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 137


AppendixA<br />

Handleidingprototype<br />

slechtseendeel<strong>van</strong>hetmodelimplementeert.(Inx6.3isbehandeldwelk <strong>van</strong>hetprp-prototypezoalshethierbesprokenwordt,omdatditprototype prototype<strong>van</strong>belangzijn.Hetprp-modelverschiltopeenaantalpuntenIndezeappendixwordenpuntenbesprokendievoorhetgebruik<strong>van</strong>hetprpimplementeertbedoeld. deel<strong>van</strong>hetmodelinhetprototypegemplementeerdwordt.) Indezeappendixwordtmet`prp'hetprogramma-dat-het-prototype-<br />

A.1.1Decompileergang A.1 Eenvoorbeeld<br />

Hetmaken<strong>van</strong>een<strong>gedistribueerde</strong>applicatiemetprpbestaatuitdevolgendestappen: 1.Bepaaluitwelkemodulesdeapplicatiemoetbestaanenschrijfdeze. 2.Genereerdeprp-stubles,dexdr-le(.x-le)endemakefilemet prp|hetprp-programma. Ditzijnde.c-les(metdebijbehorende.h-les).<br />

3.Laatrpcgenopbasis<strong>van</strong>de.x-ledexdr-conversieroutinesende 4.MaakmetdeCcompilerdeverschillendeexecutableimages|demodulesuitdeeerstestap,diedeprocessen<strong>van</strong>deapplicatiegaanvor rpcgen-stubsgenereren.<br />

5.Startdeserverprocessenopdejuistemachinesop,enlaatdegebruiker wetendatdeclientprocessenklaarvoorgebruikzijn. men.<br />

onoverzichtelijkeindrukgeven.Doormetmakedemakefileuitstap2te Stap3en4bestaanuitvrijveelles(zieguurC.1)diewellichteenwat gebruiken,wordeninstap3en4automatischdejuistelesverwerkt. 138


Eenvoorbeeld A.1.2Deapplicatie(1) A.1.3<br />

InappendixCisdesourcecode<strong>van</strong>eenvoorbeeldapplicatieopgenomen.In prp-applicatiegecompileerdenuitgevoerdkanworden. dezeparagraafwordtaandehand<strong>van</strong>dezeapplicatiebesprokenhoeeen<br />

deproduktvector<strong>van</strong>tweeinput-vectorenuit,endeanderedrukteenvec- iseenclient-moduleenerzijntweeserver-modules.Deeneserverrekent torophetscherm<strong>van</strong>deserveraf.Hetclient-procesleestwaardenvoor Deapplicatiebestaatuitdriemodules,diedrieprocessenvormen.Er<br />

tweevectorenuiteenle,enroeptvervolgensderekenserverendeaf- rekenserver|wordthetserveradresnietgespeciceerd(broadcast).Bijde tweederpc|naardeafdrukserver|wordtdeserverdiedegebruikerheeft drukserverdoormiddel<strong>van</strong>tweerpc'saan.Bijdeeersterpc|naarde opgegevengeselecteerd.Wanneerdegebruikerdeclientopstart,moetdeze tweeargumentenmeegeven:denaam<strong>van</strong>deafdrukserverendenaam<strong>van</strong><br />

seninhetsysteemactiefzijn.Deprogrammeurmoetdereken-enafdrukser delemetdewaarden<strong>van</strong>detweevectoren.Declientzoubijvoorbeeldals $calcsus.eur.nlvectoren.datkunnenwordenopgestart. versrespectievelijkopeenstationopgestarthebbendatinde/etc/hostsle<strong>van</strong>declientvoorkomt,1enopallestationsdieeengebruikereventueelVooreensuccesvolleuitvoering<strong>van</strong>deapplicatiemoetendeserverprocescalc_pr.cdeprintserver.Eriseenheaderle(calc.h)metglobalecon- indrie.c-les:calc.cbevatdeclient,calc_ber.cderekenserveren voordeafdrukserverzoumogenspeciceren.<br />

stantenenderemote-prototypes<strong>van</strong>detweeserverprocedures. Deapplicatiebestaatuitdriemodules;desource-codebevindtzich<br />

A.1.3PRP(2)<br />

wordendevolgendelesgegenereerd: tenuittevoeren|prpcalc.ccalc_pr.ccalc_ber.c,ofzelfsprp*.c|Doornuhetprogrammaprpmetdelenamen<strong>van</strong>deapplicatiealsargumen- conversieroutinesvoorderpc-parameters. deserverprocedures.rpcgengenereertaandehand<strong>van</strong>dezelede Eenxdr-le,PRP_intf.x,metdedeclaraties<strong>van</strong>deparameters<strong>van</strong><br />

deprogramma-enversienummerskenthetprp-modeleenapartele, PRP_x.h.Indezelekandeprogrammeurtweewaardenopgevenvoor clareren<strong>van</strong>serverproceduresenprogramma-enversienummers.VoorEentweedefunctie<strong>van</strong>dexdr-le|deinterfacedenitie|ishetdecreeerd.HetprogrammanummermoetbijSunMicrosystemswordendelenietbestaat,wordtdeze,voorzien<strong>van</strong>standaardwaarden,ge- deidenticatie<strong>van</strong>deapplicatiebinnendeSun-omgeving.Wanneer<br />

1Bijeenbroadcast-callwordenallestationsuitde/etc/hosts-lebenaderd. applicatiedoorprpverhoogd.InxC.2iseenvoorbeeld<strong>van</strong>PRP_x.h aangevraagd[Sun1];hetversienummerwordtbijelkewijziging<strong>van</strong>de tevinden.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 139


A.1.4Tweeles,PRP_c_stub.cenPRP_s_stub.c,dierespectievelijkde Handleidingprototype<br />

Dewerking<strong>van</strong>deprp-stubswordtinxA.3beschreven.Denaam afgegaandoor_PRP_STUB_.Deprp-clientstubbevatdeaanroep<strong>van</strong><strong>van</strong>declientstubsbestaatuitdenaam<strong>van</strong>deserverprocedurevoor- prp-client-endeprp-serverstubs<strong>van</strong>deserverproceduresbevatten.<br />

serverfunctieaandiedeprogrammeurgeschrevenheeft.Denaam<strong>van</strong> serverstubaanroept.Deprp-serverstubroeptvervolgensdeoriginelevervolgensderpcgen-serverstubinhetserverprocesaan,diedeprp- derpcgen-clientstub.Hetrpc-subsysteemaandeserverkantroept<br />

Deoorspronkelijkeapplicatiemodulesuitstap1wordenenigszinsgeconictenmetderpcgen-stubs.dezelaatsteisvoorzien<strong>van</strong>_PRP_PROC_,tervoorkoming<strong>van</strong>naamswijzigd.Omtebeginnenmoetendefunctienameninaanroependeniduresgegenereerdteneindedeconsistentiecontroleopparametertypenworden.Daarnaastwordeneransi-prototypes<strong>van</strong>deserverproce- <strong>van</strong>ansiCtewaarborgen.DoordezeprototypessignaleertdeC tie<strong>van</strong>deserverprocedures<strong>van</strong>_PRP_STUB_en_PRP_PROC_voorzien<br />

denitieindeapplicatiecodezelf. compilerinconsistentiestussenhetremote-prototypeenaanroepen<br />

denieerd_sv.<strong>Applicatie</strong>modulesdieeenserverprocedureaanroepenkrijgen_clachOmtevoorkomendataldezelesmetdehandmoetenwordengeterhunnaam,enmoduleswaarineeneenserverprocedurewordtge Demakefiledieditprototypegenereertisrelatiefeenvoudig,enniet eencommandokunnenwordenuitgevoerd. geschiktvoorcomplexeclient/serverconguratiesalsgenesterpc's compileerdwordteenmakefilegegenereerd,waarmeestap3en4met<br />

Voordevoorbeeldapplicatiewordendoorprpdevolgendelesgegenereerd: moetmenzelfeengea<strong>van</strong>ceerderemakefileschrijven. enmeerdereverschillendeclientsperserver.Voorditsoortapplicaties<br />

prpintf.x:deinterfacedenitievoorrpcgen(eventueelookprpx.h);<br />

prpsstub.c:delemetdeprp-serverstubs; prpcstub.c:delemetdeprp-clientstubsvoordeserverprocedures;<br />

calccl.c:debijgewerkteapplicatiemodule(client); calcbersv.c:debijgewerkteapplicatiemodule(rekenserver);<br />

makele.prp:demakefilevoorstap3en4. calcprsv.c:debijgewerkteapplicatiemodule(afdrukserver);<br />

140 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Eenvoorbeeld A.1.4RPCGENendeCcompiler(3&4) A.1.5<br />

Deinterfacedenitiewordtdoorrpcgenverwerkt.rpcgengenereertvier lesopbasis<strong>van</strong>PRP_intf.x:eenlemetdexdr-conversieroutines,twee lesmetderpcgen-stubs,eneenheaderlemetparameterdeclaraties.<br />

wordenmeegelinkt. voorhetmarshallen.Dexdr-routinesmoetenmetbeidestubles meters.Dezeroutineswordendoorbeiderpcgen-stubsaangeroepenprpintfxdr.cbevatdecodevoorhet(de)serializen<strong>van</strong>derpc-paraprpintfclnt.cbevatderpcgen-clientstubs<strong>van</strong>deremote-proceduprpintf.hbevatCdeclaraties<strong>van</strong>deindexdr-legedeclareerderpcres.parameters,alsmedeprototypes<strong>van</strong>derpcgen-stubs.Dezelewordt prpintfsvc.cbevatderpcgen-serverstubs.<br />

modules,deverschillendestublesendexdr-routinestotexecutableimages compileren. Nadatderpcgen-stubsgeproduceerdzijn,kandeCcompilerdeapplicatie- ge-#includeindeprp-stubles.<br />

ineenle|PRP_s_stub.c.Devoorbeeldapplicatiekenttweeserverles| calc_ber.cencalc_pr.c.Deserverstublemoetmetbeideserver-images meegelinktwordenopdatdeserverstubsdeserverprocedureskunnenaan- Alleprp-serverstubsdiedoorditprototypewordengegenereerdzitten<br />

roepen.Omtevoorkomendatdestubsaanproceduresrefererendietijdens hetlinkennietaanwezigzijn,moetenookbeideapplicatie-serverlesmet deenestublewordenmeegelinkt.Opdezewijzeontstaateenexecutable executableimagesgeproduceerdworden:eenclient-image,eneen(gecom- serverimagedatzowelalsrekenserveralsalsafdrukserveroptreedt. bineerd)server-image.Declientwordtgevormddoordevolgendelesuit stap2:calccl.c:declient-applicatiele<br />

Bijhetcompileren<strong>van</strong>devoorbeeldapplicatiemoetenzodoendetwee<br />

prpintfclnt.c:derpcgen-clientstubs prpcstub.c:deprp-clientstubs<br />

Deserverwordtgevormddoordezeles: prpintfxdr.c:dexdr-conversieroutines<br />

calcprsv.c:deafdruk-applicatiele prpsstub.c:deprp-serverstubs calcbersv.c:derekenserver-applicatiele,en<br />

prpintfxdr.c:dexdr-conversieroutines prpintfsvc.c:derpcgen-serverstubs<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 141


A.2.1 A.1.5Opstarten<strong>van</strong>demodules(5) Handleidingprototype<br />

actiefzijnopdestationswaardeclienteenrpcnaarzoukunnen(mogen) gaandoen. Delaatstestapishetopstarten<strong>van</strong>deapplicatie.Hiertoemoetendeservers<br />

voudig<strong>van</strong>uitde(remote)shell'swordenopgestartalsachtergrond-processen.Isditniethetgeval,danmoetendeexecutableimagesnaarhetandere lesysteemwordengekopieerd,en<strong>van</strong>daaropgestartworden. Wanneerdestationshetzelfdelesysteemdelenkunnendeserverseen-<br />

inrichting<strong>van</strong>hetsysteemwaaropmenzichbevindt.Devolgendetwee voorbeeldenzulleninhetalgemeenwelwerken. Eriseenveelheidaanmanierenomdittebereiken,afhankelijk<strong>van</strong>de<br />

slc10enipc04moetdraaien,endeclient<strong>van</strong>uitslc09. slc09%ls Steldatslc09,slc10enipc04dezelfdeleserverdelen,endeserverop<br />

ipc04%rshslc10 ipc04%calc_sv& calc slc09%rshipc04 calc_sv vectoren.dat<br />

slc10%calc_sv& maakeenremoteshellopipc04<br />

slc10%rshslc09 startdeserverookhierop startdeserverindeachtergrondop<br />

slc09%calcslc10vectoren.datdeclientwordtopgestart<br />

maarsus.eur.nldeoutputmoetafdrukken,endatdezelaatsteeeneigen lesysteemheeft,endatderemoteshellenrloginnietwerken. Eenanderemogelijkheidisomftptegebruiken.Steldatnietslc10,<br />

slc09%ls<br />

ipc04%ftpsus.eur.nl slc09%rshipc04 calc ipc04%calc_sv& calc_sv vectoren.dat<br />

nainloggenopsus.eur.nl: ftp>binary executableszijngeenASCII-les startdeserverindeachtergrondop<br />

ftp>putcalc_sv ftp>bye ipc04%telnetsus.eur.nl nainloggenopsus.eur.nl: maakcontactmetservermachine kopieerdeserver<br />

nainloggenopslc09: slc09%calcsus.eur.nlvectoren.datdeclientwordtopgestart eursus%telnetslc09.cs.few.eur.nl eursus%calc_sv& gaterugvoordeclient startserverop<br />

142 modulestevinden. In[Sun1]ismeerinformatieoverhetopstarten<strong>van</strong>deverschillende <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Cextensies A.2 Cextensies A.2.1<br />

puntenopgesomd.Allereerstwordendepuntengenoemddievoorelkeprp- prp-Cwijktopeenaantalpuntenaf<strong>van</strong>ansiC.Hieronderwordendeze A.2.1VerschilPRP-CenANSIC<br />

volgenseigeninzichtkantoepassen. applicatieafwijken.DaarnawordenpuntenbeschrevendiedeprogrammeurRemoteVoorelkeC-functiediedooreenfunctieuiteenanderprocesaangeroepenmoetkunnenwordenmoetmeneenansiprototype2 voorzien<strong>van</strong>hetkeywordremoteindesourcecodeopnemen.De<br />

DeinCgebruikelijkemanierisomprototypesvoorinde.c-leofin functienamenindegebruikerslesaangepastworden(zieguur5.4). langomdatprpdeapplicatiecodeinzijngeheelanalyseert,voordatdeplaatsindeapplicatiecode<strong>van</strong>dezeremote-prototypesisniet<strong>van</strong>betiesuiteenverschillendproceskanmennietgebruikmaken<strong>van</strong>globaleGeenglobalevariabelenVoorhetdelen<strong>van</strong>gegevenstussentweefunc- eenheaderleoptenemen.<br />

variabelen.Pogingenhiertoewordenhelaasnietgesignaleerd(zieook ansiC. xA.4).<br />

PointersInterproces-geheugenreferentieszijninverbandmetdeef- Desemantiek<strong>van</strong>intraprocesglobalevariabelenisinprp-Cgelijkaan<br />

steundwanneerditinCgebruikelijkis.Ditishetgevalbijreferenceparametersenbijstringsenarrays.(DynamischgealloceerdepointersvoorparametersineenrpcwordtdoorprpalleenondercientienietgemplementeerdindeSun-omgeving.Hetgebruik<strong>van</strong> datastructurenenrecursievedatastructurenzijninditprototypeniet VariabelaantalparametersZoalsoppagina105isbeschreven,moe- gemplementeerd.)<br />

printf(fmt,...);isnietmogelijk. DatatypenDitprototypeondersteundalsparameter<strong>van</strong>eenprprpc tenprp-serverprocedureseenvastaantalparametershebben.Ietsals<br />

devolgendedatatypen: {degebruikelijkecombinaties<strong>van</strong>int,signed,unsigned,long {degebruikelijkecombinaties<strong>van</strong>char,unsignedensigned.Bijvoorbeeld:char,unsignedchar; enshort.Bijvoorbeeld:int,unsigned,unsignedlong,long, signedshortint;<br />

2Vergelijkbaarmetdeforward-declaratieinPascal. {float,doubleenlongdouble;<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 143


A.2.2 {statischgedeclareerdearrays<strong>van</strong>simple(bovenstaande)typeszo- Handleidingprototype<br />

{`strings':inditprp-prototypewordtderpc-parameter-declaraals:inta[10],longa[600]enchar[6];tiechar*sinhetxdr-typestringvertaald.Dithoudtindat alleelementenwordenovergezondentotdateenelementNULLis. Eenpointernaareenenkelvoudigereferenceparameter<strong>van</strong>het typecharmoetinditprototypealsint*cwordengedeclareerd.<br />

Zoalsinx6.3isbeschreven,wordenstructures,unionsendynamiden(zieookxA.4.1).Ditkanineenheterogeneomgevingtotconversieproblemenleischegeheugenallocatiedoorditprototypenietondersteundvoorrpc parameters(outeninout).Indirectiebijeenvalueparameter(in: zinvolisineen<strong>gedistribueerde</strong>omgeving,endoorditprototypeniet wordttoegestaan.Enkelvoudigeindirectiekomtvoorbijreference parameters.Daarbijkomtdatmeervoudigeindirectie(int**n)niet<br />

Voorveeltoepassingenzalmen<strong>van</strong>devolgendeextensiesgebruikmoeten maken:@-notatieWanneermeneenspeciekeserverwilselecteren,kanmen<br />

inint*n)wordtnietondersteund.<br />

hetnetwerkadres<strong>van</strong>deservertussentwee@-symbolenspeciceren. Deidentierwordtbijdeeersterpcdoordeprp-stubsgeevalueerd, voorzien.Ditzoumenkunnenoplossendoorderpcaandeclient-kant waarnaallevolgenderpc's<strong>van</strong>dezeprocedurenaardezeserverzullen gaan.(Inditprototypeisnietindemogelijkheid<strong>van</strong>servertewisselen ineencase-statementoptenemen.)<br />

bruikt.onsuit/etc/hosts|alle`lokale'stations|gedaan,enwordtdeeerstreagerendeservervoorallevolgenderpc'snaardezeproceduregeLaatmendeservernaamweg,danwordteenbroadcastnaarallestati- `Richting'Tervoorkoming<strong>van</strong>onnodigkopieeren<strong>van</strong>parameters,of omprp'sdefaultvertaling<strong>van</strong>C'sparametermechanismenaarhet copymechanism<strong>van</strong>rpcgen(ziepuntc,pagina61)tevoorkomen,<br />

A.2.2Parametertypen kandeprogrammeurin,outofinoutvoordeeigenlijkeparameterdeclaratiezetten. <strong>van</strong>ansiCenprp-Cbehandeld. array|isinCalsinonderstaandetabel.prpmoetzichhieraanhouden. Hieronderwordtdeparameterdeclaratiesyntaxendeinterpretatiedaar<strong>van</strong><br />

Ditiseenbelangrijkeeisvoortransparantie. Deinterpretatie<strong>van</strong>dedriegroepenparametertypen|simple,string,<br />

144 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Cextensies Cvalue/reference A.2.2<br />

type simple string array overdracht reference value<br />

C'scallbyvalueoverdrachtisineenrpcomgevingcallbycopy.C's<br />

bycopy).Outputparametersinrpcgen'sout-structure.Input/output copy/restore.Zieookpagina61. callbyreference(eigenlijkcallbypointervalue)isinrpccontextcallby<br />

parameterswordeninbeideovergezonden(callbycopy/restore). Inputparameterswordeninrpcgen'sin-structureovergezonden(call<br />

Devolgendetweetabellenbeschrijvendeinputdieprpmoetinterpreteren. schema'sPRPinput Eenremoteprocedureprototypezouerbijvoorbeeldzouitkunnenzien: remoteintbereken(infloata[10],inintna,<br />

Hetwoordremotegeeftaandathetomeenrpcdeclaratiegaat.Dewoor- outfloatc[10],outint*nc); infloatb[10],inintnb,<br />

deninenoutgevenderichtingaan<strong>van</strong>deparameters.Dezeprocedure voorbeeldis10voordearraydimensiegekozen. zouvolgensprp'sdefaultregelsookwerken,zonderdeinsenouts.Als<br />

afgedrukt. gegenereerdzoudenmoetenworden.Oppagina82isdebijbehorende.x-le Detabelhierondergeeftdeinterpretatiediehetprp-prototypegeeftaan InxA.3.1wordendeprp-stubsbeschrevendieopbasis<strong>van</strong>ditprototype<br />

destandaardCdeclaratiesyntax.<br />

type value prpdefault<br />

simpleintn(geenster) in intn(welster) reference<br />

stringchars array charc inta[10] in in/outchars in/outinta[10] charc in/out { in/out<br />

Hetuitgangspuntisdateensterretjeslechtsbyreference(in/out)kanbete- chars[10]in/outchars[10]in/out in/out<br />

byreference.Ookbijcharbetekenenrechtehakenarray,eencharc[] kenen.chariseenuitzondering,daarbetekenteensterretjeNULL-terminated string,ookbyreference.Rechtehakenduideneenarrayaan,eveneensaltijd<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling hoeftnietNULL-terminatedtezijn. 145


A.3Ondankshetfeitdatstringsenarrayswanneerzezonderstergedecla Handleidingprototype<br />

defaultregelsnietbyvaluewordenovergedragen.Indevolgendetabelis eendeclaratie,opwelofgeenster.Stringsenarrayskunnenvolgensprp's opgenomen.Indezetabelligtdenadrukopdesyntactischeaspecten<strong>van</strong> reerdzijninCbyreferencewordenovergedragenzijnzeindevaluekolom<br />

beschrevenhoedatwelmogelijkis.<br />

Devolgendetabelgeeft<strong>van</strong>uithetgezichtspunt<strong>van</strong>deapplicatieprogram- bycopy,restoreofcopy/restore)tebereiken. meuraanwatmenmoetdeclarerenomdegewensteoverzendrichting(call<br />

type copy prpdeclaraties<br />

simpleintnvalue in restore out copy/restore<br />

inintn intn reference in/out<br />

inintn outintn inoutintn PRPextensie standaardC<br />

stringcharc incharc chars PRPextensie standaardC ontraden<br />

array inchars outchars chars inoutchars PRPextensie ontraden<br />

ininta[10] inta[10] standaardC ontraden<br />

ininta[10]outinta[10]inoutinta[10] outinta[10] inoutinta[10] PRPextensie ontraden<br />

A.3 Werkingstubs ontraden<br />

Hetdoel<strong>van</strong>deprp-stubsisomderpcendelokaleprocedureaanroep<strong>van</strong>C quasyntaxensemantiekgelijktelatenzijn.Zoalshetvoorbeeldprogramma inappendixCaangeeftlijktditopheteerstegezichtaardigtelukken.De prp-stub-aanroeplijktquauiterlijkmeeropeenlokaleCfunctieaanroepdan<br />

werking<strong>van</strong>deprp-stubszoalszedoorhetprp-prototypewordengegenestubs,enzehebbentemakenmetdezelfdeproblemen.eenrpcgen-stub-aanroep.Internmakenprp-stubsgebruik<strong>van</strong>rpcgenreerd. Deprp-clientstubbevatdeaanroep<strong>van</strong>derpcgen-clientstub.Deze DezeproblemenwordeninxA.4beschreven;hierwordtingegaanopde<br />

146 zorgtervoordathetrpc-subsysteemaandeserver-kantderpcgen-serverstubinhetserverprocesaanroept,dieopzijnbeurtdeprp-serverstub <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Werkingstubs aanroept.Deprp-serverstubroeptvervolgensdeorigineleserverfunctieaan A.3.1<br />

diedeprogrammeurgeschrevenheeft. Decode<strong>van</strong>deprp-clientstubzieterglobaalalsvolgtuit:<br />

vindtvoorelkeserverprocedureeenmaligplaats.Hetismetdestubs dieditprototypegenereertnietmogelijk<strong>van</strong>servertewisselentussen bevindtenvoerdeclnt_create()aanroepuit.Dezeinitialisatie initialiseerhetrpcsysteem:bepaalwaardeserverprocedurezich<br />

roepderpcgen-clientstubaan.Ditisde`eigenlijke'rpc.Hetseria- vulderpcgeninputparameterstructuremetdeeigenlijkeparameters. tweerpc'snaardezelfdeprocedure.<br />

ganaofhetresultaatdeNULL-pointeris.Zoja,geefeenfoutmelding. (Hetprp-prototypestopthetprocesbijeenrpc-systeemfout;volgens lizen<strong>van</strong>parametersvindtinderpcgen-stubsplaats.pakderpcgen-outputparameter-structureuitenvuldeeigenlijkeuit-<br />

moetenworden.) hetprp-modelzoudefoutcodeineenglobalevariabelegesignaleerd<br />

Deprp-serverstubiseenvoudiger.Dezekentdevolgendefuncties: voerparametersalsmededereturnwaarde<strong>van</strong>deprocedure.ter-variabelen<strong>van</strong>deserverprocedurediedeprogrammeurgeschrevenpakderpcgen-inputparameter-structureuitenvuldeinputparame-<br />

vulderpcgenoutputparameter-structuremetdeoutputparameters heeft.<br />

endereturnwaarde<strong>van</strong>degebruikersprocedure.Decontrolegaatnu roepdegebruikersserverprocedureaanvolgensdestandaardCsyntax.<br />

A.3.1Schema'sPRP-stubs terugnaarderpcgen-stub,diedeparametersgaatserializen.<br />

Indenuvolgendetabellenwordtbesprokenwelkeoutputprpvoordestubs moetgenereren.Dedatatypesdiewordenonderscheidenzijn:simple,string enstatischarray.<br />

/* Deprp-client-stubzieterbijvoorbeeldglobaalalsvolgtuit: Inx5.2.2zijndeachtergronden<strong>van</strong>detegenererencodebehandeld.<br />

**declaratie */ intPRP_STUB_bereken(floata[10],intna,<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling floatb[10],intnb, floatc[10],int*nc) 147


A.3.1 {/*<br />

Handleidingprototype<br />

**declaratie<strong>van</strong>deRPCGENparameters */ bereken_IN_tbereken_IN; bereken_UIT_t*bereken_UIT; /* **initialisatie */<br />

if(adresnotok) if(geen@servernaam@) adres=clnt_create(servernaam,PROG,VERS,"tcp"); error("RPC:Initialisatieerror!!!"); servernaam=clnt_broadcast(PROG,VERS,procedurenummer);<br />

/* **vuldeRPCGENinputstructure */ bereken_IN.a.a_val=a; bereken_IN.a.a_len=10; bereken_IN.na=na; bereken_IN.b.b_val=b; bereken_IN.b.b_len=10; bereken_IN.nb=nb;<br />

*/ bereken_UIT=bereken_13(&bereken_IN,adres); /* **roepdeRPCGENstubaan-ditisdeeigenlijkeRPC!<br />

/* **foutafhandeling<strong>van</strong>RPCerrors */ if(bereken_UIT==NULL) /* **pakdeRPCGENoutputstructureuit error("RPC:systeemfout!!!");<br />

*/ *nc=bereken_UIT->nc;<br />

}148<br />

memcpy(c,bereken_UIT->c.c_val,10*sizeof(float)); return(bereken_UIT->resultaat);<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Werkingstubs Inditvoorbeeldligtdenadrukopdeveranderlijkecode.Datisdecodedie A.3.1<br />

zijnverkortweergegevenomredenen<strong>van</strong>overzichtelijkheid. parametersbewerkt.Devastecode,deinitialisatieendefoutafhandeling deprp-clientstub. Detabelhieronderbeschrijftdedeclaratiedieprpmoetgenererenvoor<br />

type simpleintn prp-clientstubdeclaratie<br />

stringchars array in inta[10]inta[10]inta[10] out intn chars in/out intn chars<br />

alsvoorbeeldvoordecardinaliteit10gekozen. clientstubzodatderpcgeninputstructuregevuldwordt.BijarrayswordtDevolgendetabelbeschrijftdecodedieprpmoetgenererenvoordeprp- type simpleIN.n=n prp-clientstubin-structurevullen<br />

stringIN.s=s array in IN.a.aval=a { outin/out<br />

IN.a.alen=10{ { IN.n=n IN.s=s IN.a.aval=a<br />

Detabelhiernabeschrijftdecodedieprpmoetgenererenvoordeprp- IN.a.alen=10<br />

gebruikerparametersgevuldworden. clientstubzodatderpcgenoutputstructureuitgepaktwordtendeactuele<br />

type simple{ inout prp-clientstubuit-structureuitpakken<br />

string{s=UIT!s array { memcpy(a,UIT!a.aval,memcpy(a,UIT!a.aval, n=UIT!n in/out<br />

10sizeof(int)); s=UIT!s 10sizeof(int)); n=UIT!n<br />

hetarraymagnietgewijzigdworden[Kernighan2].Eenassignment<strong>van</strong>de waarde<strong>van</strong>eenarrayisnamelijkeenconstpointer.Dezebeginwaarde<strong>van</strong> Arrayswordenhiermetmemcpy()gekopieerd.Depointernaardeeerste variabelezelf(depointernaardedatastructuur)alsbijstringsishierdoor<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling kopieren. nietmogelijk.Erzitnietsandersopdandedatastructuurinzijngeheelte 149


A.3.1 PRP-server-stub Handleidingprototype<br />

indeprp-client-stub. moetenzien.Dedeclaratiemoetaansluitenbijdeaanroep<strong>van</strong>dezefunctie bijdeclient-stubeenvoorbeeldhoedetegenererencodeerglobaaluitzou Devolgendetabellengaanoverdeprp-serverstub.Hieronderzietunetals<br />

/* **declaratieserverstub */ bereken_UIT_t*bereken_13(bereken_IN_t*bereken_IN) {staticbereken_UIT_tbereken_UIT; /* **declaratie<strong>van</strong>delokalevariabelen */ float*a; intna; float*b; intnb; float*c; intnc; /* **vuldeparametersuitdeRPCGENinputstructure */ a=bereken_IN->a.a_val; na=bereken_IN->na; b=bereken_IN->b.b_val; nb=bereken_IN->nb; /* **roepdegebruikersserverfunctieaan */ bereken_UIT.resultaat=PRP_PROC_bereken(a,na,<br />

/* b,nb,<br />

**vuldeRPCGENoutputstructure c,&nc);<br />

*/ bereken_UIT.c.c_val=c;<br />

150bereken_UIT.c.c_len=10; bereken_UIT.nc=nc; <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Werkingstubs A.3.1<br />

}Onderstaandetabelbeschrijftdecodedieprpmoetgenererenvoordeprp-<br />

return(&bereken_UIT);<br />

serverstubomdelokalevariabelentedeclarerendiealsparametersaande gebruikersserverfunctiezullenwordenmeegegeven. prp-serverstubvariabelen-declaratie type simpleintn stringcharscharschars array in inta out intn inta in/out intn<br />

Devolgendetabelbeschrijftdecodedieprpmoetgenererenvoordeprp- inta<br />

server-stubzodatderpcgeninputstructureuitgepaktwordtendeactuele gebruikerparametersgevuldworden.<br />

type simplen=IN!n prp-serverstubin-structureuitpakken<br />

strings=IN!s array in a=IN!a.aval{ outin/out { n=IN!n s=IN!s<br />

Hieronderzietudecodedieprpmoetgenererenvoordeprp-server-stub a=IN!a.aval<br />

omdegebruikers-serverfunctieopdejuistewijzeaanteroepen.<br />

type simple prp-serverstubaanroep<br />

string array inoutin/out<br />

structurernsa &n&n sa&r&r sa<br />

Delaatstetabelbeschrijftdecodedieprpmoetgenererenvoordeprp-<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling kerparametersdieteruggezondenmoetenworden.server-stubzodatderpcgen-outputstructurewordtgevuldmetdegebrui 151


A.4.1 prp-serverstubuit-structureinpakken Handleidingprototype<br />

type simple{ string{UIT.s=s array inout { UIT.n=n in/out<br />

{ UIT.a.aval=a UIT.a.alen=10UIT.a.alen=10 UIT.n=n UIT.s=s UIT.a.aval=a<br />

InCkandesemantiek<strong>van</strong>eenoutputparameterviahetreturn-statement enhetreturntype<strong>van</strong>defunctiebereiktworden.prpondersteuntditdoor<br />

A.4 eenreturnwaardealseenoutputparametertebehandelen.<br />

Hierwordenmogelijkeproblemendiezichkunnenvoordoenbijhetschrijven <strong>van</strong>eenprp-applicatiebesproken.Dezeproblemenzijnterugtevoerenop Problemen<br />

A.4.1Cineen<strong>gedistribueerde</strong>omgeving de<strong>gedistribueerde</strong>Sunomgeving(zieookx3.2). deslechteintegreerbaarheid<strong>van</strong>desequentieleconceptenuitdetaalCmet<br />

adresruimte InSun'sgescheiden-geheugenomgevingzijngeheugenreferentiestussenvergendeconcepten<strong>van</strong>Cwordenhierdoorbenvloed:schillendeprocessoren<strong>van</strong>wegeinecientienietgemplementeerd.Devolsengeengemeenschappelijkeglobalevariabelenbezitten.DeredenGlobalevariabelenIneenprp-applicatiekunnenverschillendeprocesremote-variabelennaastextern-variabelenvermoeden.Dezevariabe- hiervoorisbijpuntainx3.4.2besproken.Demogelijkheid<strong>van</strong> remote-functiesnaastextern-functiesdoetwellichthetbestaan<strong>van</strong><br />

variabeleistotdeprocedurebeperkt,endescope<strong>van</strong>een`globale' lokalevariabeleneenbeperktescopehebben.Descope<strong>van</strong>eenlokale lenzijnechternietmogelijkbijprp.<br />

variabeletothetproces. Deprogrammeurmoeterzelfoplettendatglobalevariabelen,netals<br />

copy/restoreverschiltopeenpaarsubtielepunten<strong>van</strong>desemantiek CopymechanismversusdenitionalmechanismEenprprpcpast<br />

<strong>van</strong>callbyreference.Eenvoorbeeld<strong>van</strong>deonverwachteproblemendie hetcopymechanismvoorparameteroverdrachttoe.Deredenisef-<br />

ditkanveroorzakenisoppagina61tevinden.Ditsoortfoutenzullen cientie(ziehiervoorpuntcinx3.4.2).Desemantiek<strong>van</strong>callby<br />

152waarschijnlijknietfrequentvoorkomen.Alszevoorkomenzullenze, omdatmenzenietverwacht,moeilijktetracerenzijn.Eengoedbegrip <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Problemen <strong>van</strong>hetverschiltussendetweeparameteroverdracht-mechanismenis A.4.1<br />

hieronontbeerlijk. Deparameteroverdrachtisookbijprp-applicatiesnietvolledigtrans-<br />

processorenzijnomredenen<strong>van</strong>ecientienietgemplementeerd.Bij parant. PointersenRPC-parametersGeheugenreferentiestussenverschillende parameteroverdrachtvolgenshetcopymechanism|bijrpc's|worden de(onderliggende)waarden<strong>van</strong>variabelenovergebracht,gegevensover delokatieer<strong>van</strong>zijnalleenzinvolomdeonderliggendewaardetebereiken.Inprincipekanmenalsrpc-parametereenpointervariabeleken,endestubaandeserverkantkandereeksverwijzingenweeroppointeraftelopenkandeclientstubdeonderliggendewaardeberei- speciceren|bijvoorbeeldint***ninplaats<strong>van</strong>intn.Doorde bouwen.(Opdezewijzevindthetserializenendeserializen<strong>van</strong>lijsten rpcwaarookdewaardezelfgespeciceerdzoukunnenworden|zoals enbomenplaats.) Echter,hetspeciceren<strong>van</strong>eenpointervariabelealsparameterineen bijeenenkeleinteger|isoverbodig.Bijenkelvoudigedatatypenvindt<br />

typing deoverdrachtminderecientplaats,enhetkanverwarrendwerken ofduidenopeendenkfoutbijdeprogrammeur.<br />

DetaalCisweaklytyped.Dithoudtindathettype<strong>van</strong>eenvariabeletijdens hetverloop<strong>van</strong>eenprogrammakanveranderen.Hetisinprincipemogelijk typecast.Zekerbijpointervariabelenkomtditvrijvaakvoor.Ookkomt dathetactueletype<strong>van</strong>eenvariabeleophetmoment<strong>van</strong>aanroep<strong>van</strong>een<br />

wordt,alspointer-naar-double(ofnogietsanders)gebruiktwordt. hetnogaleensvoordateenvariabelediealspointer-naar-chargedeclareerd remote-procedureafwijkt<strong>van</strong>hetgedeclareerdetype,bijvoorbeelddooreen<br />

leennaarditremote-prototypegekeken,atcompiletime.Deprogrammeurhetremote-prototype.3Voordeconversiecode<strong>van</strong>parameterswordtalnereertxdr-conversiecodeopbasis<strong>van</strong>dedeclaratiediewordtafgeleiduitDezehandelwijzenlopenspaakbijparameters<strong>van</strong>prprpc's.prpge- moetervoorzorgendathetactueletypebijderpcovereenkomtmethet gedeclareerdetypeuithetremote-prototype.<br />

declaratieisafteleiden,endataandedeclaratie<strong>van</strong>eenpointerniette typeatrun-timelevertmeerproblemenvoorhetprp-modelop.Inx6.3.2 isaandeordegeweestdathetactueledatatype<strong>van</strong>eenC-unionnietuitde Hetfeitdathetgedeclareerdetypenietaltijduitsluitselgeeftoverhet<br />

zienisofdepointernaareenenkelvoudigedatastructuurwijst,ofnaarde beginwaarde<strong>van</strong>eenarray.Hetisnietmogelijkomvasttestellenhoeveel<br />

wordenmeteenwaarschuwing. geanalyseerd.Dezeinconsistentiezaldoordemeestecompilersopzijnminstgesignaleerd type,wordendezedoorprpgenegeerd|deserverfunctie-denitiewordtnietdoorprp3Alsdeparametertypenindeserverfunctie-denitieafwijken<strong>van</strong>die<strong>van</strong>hetproto- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 153


A.4.2 gegevenselementendestubsmoetenoverzenden.Cmoethiertoemetnog Handleidingprototype<br />

meersyntaxelementenwordenuitgebreid. engrafenschietdetaaldenitie<strong>van</strong>Ctekortomfoutvrijerpc-parameteroverdrachttegaranderen.Uitdedeclaratie<strong>van</strong>dezedatatypenisdeom<strong>van</strong>g nietatcompile-timeafteleiden.Hetontbreektookaaneenbetrouwbare Ookbijstringsenrecursievedatastructuren4alsbomen,gelinktelijsten<br />

zichaandezeconventiehoudt. zodatdeconventiebestaatdathetlaatsteelementdewaardeNULLbevat. Dexdr-routinesdierpcgengenereertgaaner<strong>van</strong>uitdatdeprogrammeur methodeomatrun-timedeom<strong>van</strong>g(cardinaliteit)vasttestellen.Welishet<br />

plementeerdteworden;sommigealgoritmeszijninherentsequentieel.VanNietelkegebruikerstoepassingisgeschiktomopeenparallelsysteemgem- relatievetraagheid<br />

toepassingenmetlargegrainparallellismeishetzinvolimplementatieop deklassetoepassingenwaarvoorparallelleimplementatiewelzinvolis,kent <strong>gedistribueerde</strong>hardwareteoverwegen(ziex2.1.4). eengedeeltenegrainparallellisme,eneengedeeltelargegrain.Alleen<strong>van</strong><br />

merkelijktragerdaneenintraproces-procedureaanroep.Naarmateerminder frequentwordtgecommuniceerd|`grote'procedures|zaldezeoverheadeen omgevingrelatieftraagis.Eenrpcisdoordecommunicatieoverheadaan- Deredenhiervoorisdatdecommunicatieineengescheiden-geheugen<br />

kleinerprobleemworden.<br />

bijrpc-implementatievaakwordtnagestreefdookproblemenmetzichmee. x3.4.5eninpuntfoppagina66isopgemerktbrengtdetransparantiedie rekeningmoetwordengehoudenmetdetraagheid<strong>van</strong>eenrpc.Zoalsin Ditimpliceertdatbijdepartitioneringinmodulestijdensdeontwerpfase<br />

Hetzoukunnenzijndatdeillusieontstaatdateenrpcnetzoeenvoudig moeteenRPCmetmate|<strong>van</strong>wegedetraagheid|enzorgvuldig|<strong>van</strong>wegede subtielesemantischeverschillen|gebruiken. ennetzovaakalseenlokaleprocedureaanroepkanwordengedaan.Men<br />

denmetdevolgendetekortkomingen<strong>van</strong>dehuidigeversie:Bijhetgebruik<strong>van</strong>hetprp-prototypemoetdeprogrammeurrekeninghou- A.4.2Tekortkomingen<strong>van</strong>hetPRP-prototype<br />

NetwerkadresWanneervooreenbepaalderemote-procedureeenmaal<br />

hetgeheleprogramma. netwerknaamdiedeeerstekeerisopgegevenblijftgeldiggedurende naardezelfderemote-procedureteverwisselenvooreenandere.De eenserverisvastgesteld,ishetnietmogelijkdezebijeenvolgenderpc<br />

genoemd. deproblematiekdezelfdeachtergrondheeft|Cisweaklytyped|wordenzehiertoch 4Recursievedatastructurenzijnnietinhetprp-prptotypegemplementeerd.Omdat<br />

154 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


Problemen Ditzoumenkunnenoplossendoorvoordeverschillendeserverseven- A.4.3<br />

Achterdenetwerknaammoeteentweede@-symboolgeplaatsworstatementteplaatsen.zoveelverschillenderpc'stemaken,endeaanroeper<strong>van</strong>ineencasederebije-mailgebruikelijkis|user@node. DiepeindirectieWanneermenonnodig5veelpointerverwijzingenvoor den|proc@node@|integenstellingtotdeadresseringdieonderan<br />

minimum:geenpointersbijcallbyvalue,eneenpointerbijcallby eenrpc-parameterspeciceert|int**ninplaats<strong>van</strong>intn|negeertprpdeoverbodigeindirectieniveaus,enbrengtzeterugtothettersenRPC-parameters,kanderigideafwijzing<strong>van</strong>mogelijkcorrecteHoeweldezehandelwijzeinovereenstemmingismetxA.4.1:Poin- programmatuurtotveelonnodigwerkbijdeapplicatieprogrammeur reference.prpgenereerthierovereenmededeling.<br />

waarschuwing,entochdegespeciceerdepointerverwijzingendoorde leiden.Eenvriendelijkerwerkwijzeiswellichthetgenereren<strong>van</strong>een<br />

RPCsysteemfoutenBijhetoptreden<strong>van</strong>eenrpcsysteemfoutstopt deprp-stubdeverwerking.Hetiswenselijkomdezereactiewatte prp-stubstelatenaopenennabouwen.<br />

prp-stubkanopzijnbeurtookdoormiddel<strong>van</strong>eenglobalevariabele globalevariabelenhetgedrag<strong>van</strong>deprp-stubtebenvloeden.De eenfoutcodeaanderest<strong>van</strong>hetprogrammadoorgeven. kunnennuanceren.Eenalternatieveoplossingisomdoormiddel<strong>van</strong><br />

Stringprpkentgeenexplicietstringdatatype.Eenparameterdieals char*sgedeclareerdwordt,wordtalsstringbehandeld.Hetismet ditprototypenietmogelijkeenenkelvoudigkarakteralsreferenceparametertespeciceren. Eenoplossingvoorditprobleemisdeinvoering|netalsbijrpcgen| ditgevalalseenenkelvoudigkarakteralsreferenceparameterworden opgevat. <strong>van</strong>hetexplicietedatatype`string'.Eenchar*s-parameterzouin<br />

prototypenoggeenstructures,meerdimensionalearrays,endynamisch gealloceerdearraysalsparametertype. DatatypenZoalsindelijstoppagina122isbeschrevenondersteuntdit<br />

A.4.3Afsluiting Eenverschiltussenhetprogrammeren<strong>van</strong>eenrpcgen-applicatieeneen ven<strong>van</strong>eenprp-applicatiekostwelminderwerk,maarnietminderkennisprp-applicatieisdatmenbijrpcgenmeercodemoetschrijven.Hetschrij- <strong>van</strong>C,rpcgenengedistribueerdprogrammeren.<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling geven. 5Datwilzeggen:onnodigomhetverschiltussenvalue-enreferenceparameteraante 155


A.4.3 DedoorvelengeroemdevrijheiddiedetaalChaargebruikerslaatbe- Handleidingprototype<br />

tekentookdatdeverantwoordelijkheidvoordecorrectheid<strong>van</strong>hetprosecurity'oppagina53|moetmeninCineen<strong>gedistribueerde</strong>omgevingveel<br />

deconsequenties<strong>van</strong>bepaalde`details'zijn.Waarmendoorderegels<strong>van</strong> grammameerbijdeprogrammeurligt:dezemoetzichgoedrealiserenwat<br />

kennisovereencomplexeverzamelingfeiteneneigenaardighedenhebben| zoalshetcopy/restoremechanisme,hetdeclaratie-type<strong>van</strong>eenpointer,de sommigeanderetalenvoorhetmaken<strong>van</strong>foutenwordtbehoed|zie`type-<br />

consequenties<strong>van</strong>eenongenitialiseerdepointer,endescope<strong>van</strong>globale variabelen.<br />

maakt[Kernighan2].Pointervariabelenbevattengeheugenadressen;Cprorentegebruikenenhet(b)zeerecienteuniprocesprogramma'smogelijkdeenigemogelijkheidisomreferenceparametersenrecursievedatastructu- IndetaalCwordenpointervariabelenveelvuldiggebruiktomdathet(a)<br />

grammeursmoetenveelvuldigmetgeheugenadressenmanipuleren.DeescatiesinCvereist|medeomdatCniettypesecureisenfoutennietdoorverschillendewaardenwijzen.Hetprogrammeren<strong>van</strong><strong>gedistribueerde</strong>appli-<br />

waaringeheugenadresseninverschillendedelen<strong>van</strong>eenprogrammanaar sentie<strong>van</strong><strong>gedistribueerde</strong>systemenisjuistgescheidengeheugen(x2.3.1),zicht.Voorhetprogrammeren<strong>van</strong>hoogniveau<strong>gedistribueerde</strong>toepassingsdetaalgesignaleerdworden|denodigevoorzichtigheidenhetnodigeinprogrammatuur(integenstellingtotsysteemprogrammatuur)isCminder<br />

geschikt.<br />

156 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


AppendixB<br />

Voorbeeldprogramma RPCGEN<br />

Dezevoorbeeldapplicatiebestaatuiteenclient-entweeservermodules.Declient moduleleesttweearraysuiteenlein.Deeneserverberekentdeproduktvector <strong>van</strong>dezetweearrays.Deandereserverdruktderesultaatvectorafopdestdoutput <strong>van</strong>dieserver.Dezeversieisgeschiktvoorverwerkingdoorrpcgen. Deleszijnachtereenvolgens: calc.h<br />

calcpr.c calcber.c interface.x<br />

headerle Onderstaandeheaderlebevatdeglobaledenities. calc.c<br />

/* **calc.h */ #defineOK0<br />

#defineREKENSERVER"slc09.cs.few.eur.nl" #defineERR-1 #defineOMVANG10<br />

interfacedenitie Deinterfacedenitiediedoorrpcgengecompileerdwordt:<br />

157


B VoorbeeldprogrammaRPCGEN<br />

/*<br />

**interface.x<br />

**interfacedefinitieRPCGENillustratie<br />

*/<br />

/*<br />

**Function'druk_af'--inputparameters<br />

*/<br />

structIN_druk_af_t{<br />

stringantws;<br />

intn;<br />

floatvector;<br />

};<br />

/*<br />

**Function'druk_af'--outputparameters<br />

*/<br />

structUIT_druk_af_t{<br />

stringRES_resultaat;<br />

};<br />

/*<br />

**Function'bereken'--inputparameters<br />

*/<br />

structIN_bereken_t{<br />

floatc;<br />

intnb;<br />

floatb;<br />

intna;<br />

floata;<br />

};<br />

/*<br />

**Function'bereken'--outputparameters<br />

*/<br />

structUIT_bereken_t{<br />

intRES_resultaat;<br />

intnc;<br />

floatc;<br />

};<br />

/*<br />

**Versionnumbersforprogramandremoteroutines<br />

*/<br />

programPROG{<br />

versionVERS{<br />

UIT_druk_af_tdruk_af(IN_druk_af_t)=2;<br />

UIT_bereken_tbereken(IN_bereken_t)=1;<br />

}=13; /*ditisversiedertien*/<br />

}=0x2000076;<br />

158 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


VoorbeeldprogrammaRPCGEN B<br />

rekenserver /* **calc_ber.c **RPCGENversie<strong>van</strong>rekenserver */ #include"calc.h" #include #include #include"interface.h"/*doorRPCGENgegenereerd*/ /*verplichtvoorRPCGENprogramma's*/<br />

/* **Function'bereken'--prpserverstub */ UIT_bereken_t*bereken_13(IN_bereken_t*IN_bereken) {staticUIT_bereken_tUIT_bereken;<br />

intna; intnb; float*b; intnc;<br />

float*a; float*c;<br />

inti;<br />

a=IN_bereken->a.a_val; na=IN_bereken->na; c=IN_bereken->c.c_val;1 b=IN_bereken->b.b_val; nb=IN_bereken->nb;<br />

for(i=0;inb)?na:nb; c[i]=((i


Breturn(&UIT_bereken); VoorbeeldprogrammaRPCGEN<br />

}<br />

afdrukserver /* **calc_pr.c **RPCGENversie<strong>van</strong>printserver */<br />

/* #include #include"interface.h" #include /*doorRPCGENgegenereerd*/ /*verplichtvoorRPCGENprogramma's*/<br />

**Function'druk_af'--prpserverstub */ UIT_druk_af_t*druk_af_13(IN_druk_af_t*IN_druk_af) {staticUIT_druk_af_tUIT_druk_af; intn, char*antws;<br />

antws=IN_druk_af->antws; float*vector; i,<br />

n resultaat;<br />

/*serializengealloceerdis.(ZieSunmanual)*/ /*GeefgeheugenvrijdatdoordeRPCGEN-stubsvoorhet*/ vector=IN_druk_af->vector.vector_val; =IN_druk_af->n;<br />

for(i=0; xdr_free(xdr_UIT_druk_af_t,&UIT_druk_af); printf("Hetresultaat<strong>van</strong>deberekening(%s)is:\n",antws);<br />

if(i!=n||resultaat


VoorbeeldprogrammaRPCGEN B<br />

client /* **Calc.c **I/Omodule<strong>van</strong>eenprgdathetvolgendedoet: **1.leestweearraysin **2.roepeen(remote)routineaandiehetproductberekenten ** */ ** RPCGENversie<strong>van</strong>declient alseenvectorterugstuurt.<br />

/* **werkwijze<strong>van</strong>main:<br />

**4.bereken;resultaatinvector3(c) **3.vulvectoren1en2 **1.bepaaldimensies **2.alloceergeheugenvoorvectoren **roepaanmetparameterfilenaam.<br />

**5.drukafopstdout */<br />

#include"interface.h" #include"calc.h"<br />

/*lokaleprototypes*/ #include<br />

staticintlees_om<strong>van</strong>g(int*na, #include /*doorRPCGENgegenereerd*/ /*verplichtvoorRPCGENprogramma's*/<br />

staticintlees_vector(floatvector[], int*nb, FILE*datafp); intn,<br />

{floata[OMVANG],b[OMVANG],c[OMVANG]; intmain(intargc,char*argv[]) FILE*datafp);<br />

FILE*datafp; intantw; char*str; intna,nb,nc;<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling /*RPCstructures*/ 161


BstaticCLIENT*CL; VoorbeeldprogrammaRPCGEN<br />

IN_bereken_t UIT_bereken_t*UIT_bereken; IN_druk_af_t UIT_druk_af_t*UIT_druk_af; IN_bereken;<br />

if(argc!=3){ IN_druk_af;<br />

}if((datafp=fopen(argv[2],"r"))==0){ exit(1); fprintf(stderr,"Usage:%sservernamedatafile\n",argv[0]);<br />

}if(lees_om<strong>van</strong>g(&na,&nb,datafp)!=0 fprintf(stderr,"%s:cannotopendatafile%s\n",argv[0],argv[2]); exit(7);<br />

}if(lees_vector(a,na,datafp)!=0){ exit(2); fprintf(stderr,"%s:corruptdimensionindatafile%s\n",argv[0],argv[2]); ||na>OMVANG||nb>OMVANG){<br />

}if(lees_vector(b,nb,datafp)!=0){ exit(3); fprintf(stderr,"%s:corruptvector1dataindatafile%s\n",argv[0],argv[2]);<br />

}fclose(datafp); exit(4); fprintf(stderr,"%s:corruptvector2dataindatafile%s\n",argv[0],argv[2]);<br />

*/ if((CL=clnt_create(REKENSERVER,PROG,VERS,"tcp"))==NULL){2 /* **InitialisationofRPCsystembyservername<br />

}/*vulparameterstructure*/<br />

fprintf(stderr,"ERROR1,(%s:%d):Cannotfindserver. clnt_pcreateerror(REKENSERVER); exit(99);/*foutcodeteronderscheiding<strong>van</strong>RPCfouten*/ Contactyoursystemadministrator.\n",__FILE__,__LINE__); /*RPCGENfout-routine*/<br />

IN_bereken.nb=nb; IN_bereken.c.c_len=OMVANG; IN_bereken.b.b_val=b; IN_bereken.c.c_val=c;<br />

deserverprocedureidempotent. 1622Hierisvoortcpgekozeninverbandmetmaximumpakketom<strong>van</strong>gbijudp,ookalis <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


VoorbeeldprogrammaRPCGEN IN_bereken.b.b_len=OMVANG; B<br />

/*aanroep<strong>van</strong>deRPCGEN-stub;deRPC*/ IN_bereken.a.a_len=OMVANG; IN_bereken.a.a_val=a; IN_bereken.na=na;<br />

/* **RPCdefaulterrormechanism */ UIT_bereken=bereken_13(&IN_bereken,CL);<br />

if(UIT_bereken==NULL){<br />

}/*uitpakken<strong>van</strong>deoutputparameters*/ clnt_perror(CL,REKENSERVER); exit(98); fprintf(stderr,"ERROR2,(%s:%d):RPCSystemError. Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

nc=UIT_bereken->nc; antw=UIT_bereken->RES_resultaat; memcpy(c,UIT_bereken->c.c_val,OMVANG*sizeof(float));<br />

}/*RPCnaarprintserver*/<br />

if(antw!=0){ exit(5); fprintf(stderr,"%s:calculationfailed\n",argv[0]);<br />

*/ if((CL=clnt_create(argv[1],PROG,VERS,"tcp"))==NULL){ /* **InitialisationofRPCsystembyservername<br />

}/*inpakkenvamparameters*/ clnt_pcreateerror(argv[1]); exit(99); fprintf(stderr,"ERROR1,(%s:%d):Cannotfindserver. Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

IN_druk_af.vector.vector_val=c; IN_druk_af.n=OMVANG; IN_druk_af.antws="calcversie3"; IN_druk_af.vector.vector_len=OMVANG;<br />

/* **RPCdefaulterrormechanism UIT_druk_af=druk_af_13(&IN_druk_af,CL); /*detweedeRPC*/<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling */ if(UIT_druk_af==NULL){ 163


B fprintf(stderr,"ERROR2,(%s:%d):RPCSystemError. VoorbeeldprogrammaRPCGEN<br />

}str=UIT_druk_af->RES_resultaat; clnt_perror(CL,argv[1]); exit(98); Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

if(str==NULL){ }printf("druk_af:%s.\n",str); fprintf(stderr,"%s:cannotprintresults\n",argv[0]); exit(6);<br />

}/* return(0);<br />

*/ staticintlees_om<strong>van</strong>g(int*na, **geeffoutterugbiji/oerror **leesdetweearraygrenzenin<br />

{if(fscanf(datafp,"om<strong>van</strong>g:%d%d",na,nb)


VoorbeeldprogrammaRPCGEN ; B<br />

if(i!=n||resultaat


AppendixC<br />

VoorbeeldprogrammaPRP<br />

Dezevoorbeeldapplicatieheeftdezelfdefunctionaliteitalshetvorigeprogramma. Dezeversieisvoorprpgeschikt.InxC.1wordendesourceles<strong>van</strong>deapplicatieprogrammeurgegeven.Nadatdezedoorprpverwerktzijn,resulteertdeoutput vooreenapplicatiemeteenserver. <strong>van</strong>xC.2.InguurC.1wordtditprocesnogeensglobaalweergegeven|maardan<br />

spread.c HHHHHj<br />

FiguurC.1:prples dbms.c<br />

xC.2 spreadcl.c ) prpcstub.c prpintf.x ?<br />

@@@@@R PPPPPPPPq dbmssv.c<br />

prpintfclnt.cprpintfxdr.c RPCGENprpsstub.c<br />

QQQs @@Rspread CC ?@@@@R prpintfsvc.c @RBBBN dbms CC+<br />

<br />

xC.1 PRP<br />

? ?<br />

166


PRP-applicatiecode C.1 PRP-applicatiecode C.1<br />

applicatieles,waarbijookeenmakelevoordeverderecompilatieganggegenereerd Hetcommandoprpcalc.ccalc_ber.ccalc_pr.cstartdeverwerking<strong>van</strong>de wordt. Deleszijnachtereenvolgens:<br />

calcpr.c calc.h<br />

calc.c calcber.c<br />

headerle Onderstaandeheaderlebevatdeprototypes<strong>van</strong>deapplicatie.Zowelclientals serversincludendezele.<br />

** /* **calc.h **Dezefilebevatdeglobaleprototypes */ #defineOK0 #defineERR-1<strong>van</strong>de"remote"functies<br />

remoteintbereken(infloata[OMVANG], #defineOMVANG10/*hetzijnSTATISCHEarrays*/ infloatb[OMVANG], inintna, inunsignedshortnb,/*in*/ outfloatc[OMVANG], /*in*/<br />

/*in*/<br />

remotechar*druk_af(infloatvector[OMVANG],/*in*/ outint*nc); intn, /*uit*/<br />

inchar*antws); /*in*/<br />

rekenserver /* **Calc_ber.c **rekenmodule<strong>van</strong>dePRPillustratie. **Dezemoduledraaitopdeserver. */<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling #include"calc.h" 167


C.1 VoorbeeldprogrammaPRP<br />

/* **berekenderesultaatvector. **c[i]=a[i]*b[i] */ intbereken(floata[OMVANG], floatc[OMVANG], intnb, floatb[OMVANG], intna, /*uit,dusref(array)*/ /*in*/<br />

{inti; *nc=(na>nb)?na:nb; int*nc) /*ncismax(na,nb)*/ /*uit*/<br />

for(i=0;i


PRP-applicatiecode i0; C.1<br />

if(i!=n||resultaat


C.1 intmain(intargc,char*argv[]) VoorbeeldprogrammaPRP<br />

{floata[OMVANG],b[OMVANG],c[OMVANG]; char*str; FILE*datafp; intantw; intna,nb,nc;<br />

}if((datafp=fopen(argv[2],"r"))==NULL){<br />

if(argc!=3){ exit(1); fprintf(stderr,"Usage:%sservernamedatafile\n",argv[0]);<br />

}if(lees_om<strong>van</strong>g(&na,&nb,datafp)!=OK fprintf(stderr,"%s:cannotopendatafile%s\n",argv[0],argv[2]); exit(7);<br />

}if(lees_vector(a,na,datafp)!=OK){ exit(2); fprintf(stderr,"%s:corruptdimensionindatafile%s\n",argv[0],argv[2]); ||na>OMVANG||nb>OMVANG){<br />

}if(lees_vector(b,nb,datafp)!=OK){ exit(3); fprintf(stderr,"%s:corruptvector1dataindatafile%s\n",argv[0],argv[2]);<br />

}fclose(datafp); exit(4); fprintf(stderr,"%s:corruptvector2dataindatafile%s\n",argv[0],argv[2]);<br />

if(antw!=OK){ antw=bereken(a,na,b,nb,c,&nc); fprintf(stderr,"%s:calculationfailed\n",argv[0]); /*RPC;broadcast*/<br />

} exit(5);<br />

} if((str=druk_af(c,nc,"calcversie3")@argv[1]@)==NULL){ fprintf(stderr,"%s:cannotprintresults\n",argv[0]); exit(6);/*functiedruk_afgeeftnooitNULLterug*/ /*geadresseerdeRPC*/<br />

printf("druk_af:%s.\n",str); return(0); /*testisbijdezevorm<strong>van</strong>druk_afnietnodig*/<br />

170 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


PRP-output }/*<br />

C.2<br />

*/ staticintlees_om<strong>van</strong>g(int*na, **leesdetweearraygrenzenin **geeffoutterugbiji/oerror<br />

{if(fscanf(datafp,"om<strong>van</strong>g:%d%d",na,nb)


C.2prpsstub.c VoorbeeldprogrammaPRP<br />

calcprsv.c prpcstub.c calcbersv.c<br />

interfacedenitie calccl.c<br />

*/ **ItwasgeneratedbyPRP,PreRPCGENPreprocessor /* **PRP_intf.x<br />

#include"PRP_x.h" **Donotmodifythisfile<br />

/* **Function'druk_af'--inputparameters */ struct_PRP_IN_druk_af_t{ }; stringantws;<br />

/* intn;<br />

**Function'druk_af'--outputparameters floatvector;<br />

*/ struct_PRP_UIT_druk_af_t{ }; /* **Function'bereken'--inputparameters string_PRP_RES_resultaat;<br />

*/ struct_PRP_IN_bereken_t{ intna; floatb; floata; unsignedshortnb; floatc;<br />

}; /* **Function'bereken'--outputparameters */ struct_PRP_UIT_bereken_t{ int_PRP_RES_resultaat;<br />

172intnc; floatc; <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


PRP-output }; C.2<br />

/* **Versionnumbersforprogramandremoteroutines */ program_PRP_PROG{ version_PRP_VERS{ _PRP_UIT_druk_af_tdruk_af(_PRP_IN_druk_af_t)=3;<br />

}=_PRP_VORIG_PROG; }=_PRP_VORIG_VERS; _PRP_UIT_bereken_tbereken(_PRP_IN_bereken_t)=1; void_PRP_UDP_druk_af(void)=4; void_PRP_UDP_bereken(void)=2;<br />

hiereenmaligwaardeninop.Hetversienummerwordtdoorprptelkensverhoogd. /* **PRP_x.h Onderstaandeledenieertdeversienummers.Deapplicatieprogrammeurgeeft<br />

*/ #define_PRP_VORIG_PROG0x2000076 **ThisfilewillbeoverwrittenateachrunofPRP! **PRP/RPCGENversionnumbers;editfreely.<br />

#define_PRP_VORIG_VERS16<br />

PRP-server-stubs<br />

/* **PRP_s_stub.c Dezelebevatdeprp-stub<strong>van</strong>elkeremoteserverprocedure.Elkestubheefteen<br />

**Donotmodifythisfile hulp-stubdieeventuelebroadcast-callsbeantwoordt.<br />

**ItwasgeneratedbyPRP,PreRPCGENPreprocessor */ #include #include #include"PRP_intf.h" externchar*_PRP_PROC_druk_af(<br />

/* floatvector[10], intn, char*antws); /*input*/<br />

**Function'druk_af'--prpudpbroadcastcompanion /*input*/<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 173


C.2 */ VoorbeeldprogrammaPRP<br />

void*_prp_udp_druk_af_16(void)<br />

}/*<br />

{/*justansweranon-nullvalue*/ charnotnull;<br />

**Function'druk_af'--prpserverstub return((void*)&notnull);<br />

{static_PRP_UIT_druk_af_t_PRP_UIT_druk_af; */ _PRP_UIT_druk_af_t*druk_af_16(_PRP_IN_druk_af_t*_PRP_IN_druk_af)<br />

antws=_PRP_IN_druk_af->antws; intn; float*vector; char*antws;<br />

vector=_PRP_IN_druk_af->vector.vector_val; xdr_free(xdr__PRP_UIT_druk_af_t,&_PRP_UIT_druk_af); n=_PRP_IN_druk_af->n;<br />

}externint_PRP_PROC_bereken(<br />

_PRP_UIT_druk_af._PRP_RES_resultaat=_PRP_PROC_druk_af(vector,n,antws); return(&_PRP_UIT_druk_af); floata[10], intna, floatb[10], unsignedshortnb, /*input*/<br />

/* floatc[10], int*nc); /*output*/ /*input*/<br />

**Function'bereken'--prpudpbroadcastcompanion /*output*/<br />

*/ void*_prp_udp_bereken_16(void)<br />

}/*<br />

{/*justansweranon-nullvalue*/ charnotnull;<br />

**Function'bereken'--prpserverstub return((void*)&notnull);<br />

{static_PRP_UIT_bereken_t_PRP_UIT_bereken; */ _PRP_UIT_bereken_t*bereken_16(_PRP_IN_bereken_t*_PRP_IN_bereken) intnc;<br />

174float*c; <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


PRP-output unsignedshortnb; C.2<br />

c=_PRP_IN_bereken->c.c_val; intna; float*a; float*b;<br />

b=_PRP_IN_bereken->b.b_val; a=_PRP_IN_bereken->a.a_val; nb=_PRP_IN_bereken->nb; na=_PRP_IN_bereken->na;<br />

_PRP_UIT_bereken._PRP_RES_resultaat=_PRP_PROC_bereken(a,na,b,nb,c,&nc); xdr_free(xdr__PRP_UIT_bereken_t,&_PRP_UIT_bereken); _PRP_UIT_bereken.nc=nc;<br />

} _PRP_UIT_bereken.c.c_val=c; _PRP_UIT_bereken.c.c_len=10; return(&_PRP_UIT_bereken);<br />

rekenserver Ditisderekenserver,calc_ber_sv.c.Dezeleisdoorcppberwerktwaardoorer Daarisnu_PRP_PROC_voorgezet. int_PRP_PROC_bereken(floata[10], geencommentaarinstaat.Dewezenlijkeveranderingisdenaam<strong>van</strong>deprocedure.<br />

intna,<br />

{inti;<br />

floatb[10], intnb, floatc[10],<br />

*nc=(na>nb)?na:nb; int*nc)<br />

for(i=0;i


C.2 afdrukserver VoorbeeldprogrammaPRP<br />

wezenlijkeveranderingisdenaam<strong>van</strong>deprocedure.Daaris_PRP_PROC_voorgezet. Ditisdeafdrukserver,calc_pr_sv.c.Dezeleisookdoorcppberwerkt.De Dedoordecpptoegevoegdelestdio.hbevatgeeninformatiedievoorhetprpmodelrele<strong>van</strong>tis.Vanwegedeom<strong>van</strong>gzijndedesbetreenderegelsnietinde onderstaandeleopgenomen.<br />

{inti, char*_PRP_PROC_druk_af(floatvector[10],<br />

resultaat; intn, char*antws)<br />

printf("Hetresultaat<strong>van</strong>deberekening(%s)is:\n",antws); for(i=0;i0;i++) if(i!=n||resultaat


PRP-output /* C.2<br />

**Function'druk_af'--prpclientstub */ char*_PRP_STUB_druk_af(<br />

{staticCLIENT*_PRP_CL; char*_PRP_server_naam) char*antws, intn, floatvector[10], /*input*/<br />

staticcharin_naam[512]; structhostent*host_entry,hent; _PRP_UIT_druk_af_t*_PRP_UIT_druk_af; _PRP_IN_druk_af_t enumclnt_statbroadresult; _PRP_IN_druk_af;<br />

/* **Broadcastdeterminationofservername static_PRP_bestaat_al=0; */ if(!_PRP_bestaat_al&&_PRP_server_naam==NULL){ /* **broadcast---trytoreachtheudpcompanion */<br />

if(broadresult==RPC_SUCCESS){ broadresult=clnt_broadcast(_PRP_PROG,_PRP_VERS,<br />

/* 4,/*procedurenumber*/xdr_void,NULL,xdr_void,NULL,<br />

**convertsocketaddresstoservername (bool_t(*)(caddr_tsp,structsockaddr_in*sock))okfunc);<br />

if(host_entry==NULL){ */ host_entry=gethostbyaddr(&(broad_socket.sin_addr.S_un.S_un_b), fprintf(stderr,"PRPERROR4,(%s:%d):Cannotconvertservername. exit(96); Contactyoursystemadministrator.\n",__FILE__,__LINE__); 4*sizeof(char),broad_socket.sin_family);<br />

}else{ _PRP_server_naam=in_naam; strncpy(in_naam,hent.h_name,512); }hent=*host_entry;<br />

}/* } fprintf(stderr,"PRPERROR3,(%s:%d):Cannotfindaserverusingbroadcast. exit(97); Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

*/ if(!_PRP_bestaat_al&&(_PRP_CL= **InitialisationofRPCsystembyservername fprintf(stderr,"PRPERROR1,(%s:%d):Cannotfindserver. Contactyoursystemadministrator.\n",__FILE__,__LINE__); clnt_create(_PRP_server_naam,_PRP_PROG,_PRP_VERS,"tcp"))==NULL){<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 177


C.2clnt_pcreateerror(_PRP_server_naam); VoorbeeldprogrammaPRP<br />

_PRP_IN_druk_af.antws=antws; }_PRP_bestaat_al=1; _PRP_IN_druk_af.n=n; exit(99);<br />

_PRP_IN_druk_af.vector.vector_val=vector; _PRP_IN_druk_af.vector.vector_len=10;<br />

/* **RPCdefaulterrormechanism _PRP_UIT_druk_af=druk_af_16(&_PRP_IN_druk_af,_PRP_CL); /*deeigenlijkeRPC*/<br />

*/ if(_PRP_UIT_druk_af==NULL){<br />

}return(_PRP_UIT_druk_af->_PRP_RES_resultaat);<br />

fprintf(stderr,"PRPERROR2,(%s:%d):RPCSystemError. clnt_perror(_PRP_CL,_PRP_server_naam); exit(98); Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

}/* **Function'bereken'--prpclientstub */ int_PRP_STUB_bereken( floata[10], intna, floatb[10], unsignedshortnb, /*input*/<br />

{staticCLIENT*_PRP_CL; floatc[10], int*nc, char*_PRP_server_naam) /*input*/ /*output*/<br />

_PRP_IN_bereken_t _PRP_IN_bereken; /*output*/<br />

staticcharin_naam[512]; structhostent*host_entry,hent; _PRP_UIT_bereken_t*_PRP_UIT_bereken;<br />

static_PRP_bestaat_al=0; enumclnt_statbroadresult;<br />

*/ if(!_PRP_bestaat_al&&_PRP_server_naam==NULL){ /* **Broadcastdeterminationofservername<br />

*/ broadresult=clnt_broadcast(_PRP_PROG,_PRP_VERS, /* **broadcast---trytoreachtheudpcompanion 2,/*procedurenumber*/xdr_void,NULL,xdr_void,NULL, (bool_t(*)(caddr_tsp,structsockaddr_in*sock))okfunc);<br />

178 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


PRP-output C.2<br />

if(broadresult==RPC_SUCCESS){<br />

/*<br />

**convertsocketaddresstoservername<br />

*/<br />

host_entry=gethostbyaddr(&(broad_socket.sin_addr.S_un.S_un_b),<br />

4*sizeof(char),broad_socket.sin_family);<br />

if(host_entry==NULL){<br />

fprintf(stderr,"PRPERROR4,(%s:%d):Cannotconvertservername.<br />

Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

exit(96);<br />

}hent=*host_entry;<br />

strncpy(in_naam,hent.h_name,512);<br />

_PRP_server_naam=in_naam;<br />

}else{<br />

fprintf(stderr,"PRPERROR3,(%s:%d):Cannotfindaserverusingbroadcast.<br />

Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

exit(97);<br />

}<br />

}/*<br />

**InitialisationofRPCsystembyservername<br />

*/<br />

if(!_PRP_bestaat_al&&(_PRP_CL=<br />

clnt_create(_PRP_server_naam,_PRP_PROG,_PRP_VERS,"tcp"))==NULL){<br />

fprintf(stderr,"PRPERROR1,(%s:%d):Cannotfindserver.<br />

Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

clnt_pcreateerror(_PRP_server_naam);<br />

exit(99);<br />

}_PRP_bestaat_al=1;<br />

_PRP_IN_bereken.c.c_val=c;<br />

_PRP_IN_bereken.c.c_len=10;<br />

_PRP_IN_bereken.nb=nb;<br />

_PRP_IN_bereken.b.b_val=b;<br />

_PRP_IN_bereken.b.b_len=10;<br />

_PRP_IN_bereken.na=na;<br />

_PRP_IN_bereken.a.a_val=a;<br />

_PRP_IN_bereken.a.a_len=10;<br />

_PRP_UIT_bereken=bereken_16(&_PRP_IN_bereken,_PRP_CL);<br />

/*<br />

**RPCdefaulterrormechanism<br />

*/<br />

if(_PRP_UIT_bereken==NULL){<br />

fprintf(stderr,"PRPERROR2,(%s:%d):RPCSystemError.<br />

Contactyoursystemadministrator.\n",__FILE__,__LINE__);<br />

clnt_perror(_PRP_CL,_PRP_server_naam);<br />

exit(98);<br />

}*nc=_PRP_UIT_bereken->nc;<br />

memcpy(c,_PRP_UIT_bereken->c.c_val,10*sizeof(float));<br />

<strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 179


C.2return(_PRP_UIT_bereken->_PRP_RES_resultaat); VoorbeeldprogrammaPRP<br />

}<br />

client Dezelebevatdeclient.Napreprocessingdoorcppzijnhierprototypesvoorde serverstub-procedurestoegevoegd,zodatparametertype-checkingplaatsvindt.De doordecpptoegevoegdelesstdio.henstdlib.hbevattengeeninformatiedie voorhetprp-modelrele<strong>van</strong>tis.Vanwegedeom<strong>van</strong>gzijndedesbetreenderegels /* **Function'druk_af'--prpclientstubprototype nietindeonderstaandeleopgenomen.<br />

*/ externchar*_PRP_STUB_druk_af( floatvector[10], intn, /*input*/<br />

/* char*antws, char*_PRP_server_naam); /*input*/<br />

**Function'bereken'--prpclientstubprototype /*input*/<br />

*/ externint_PRP_STUB_bereken( floata[10], floatb[10], intna, unsignedshortnb, floatc[10], /*input*/<br />

int*nc, /*input*/ /*output*/<br />

staticintlees_om<strong>van</strong>g(int*na, char*_PRP_server_naam); /*output*/<br />

staticintlees_vector(floatvector[], intn, int*nb,<br />

struct_iobuf*datafp); struct_iobuf*datafp);<br />

{floata[10],b[10],c[10]; intmain(intargc,char*argv[]) struct_iobuf*datafp; intantw; char*str; intna,nb,nc;<br />

180 <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


PRP-output if(argc!=3){ C.2<br />

}if((datafp=fopen(argv[2],"r"))==0){ fprintf((&_iob[2]),"Usage:%sservernamedatafile\n",argv[0]); exit(1);<br />

}if(lees_om<strong>van</strong>g(&na,&nb,datafp)!=0){ fprintf((&_iob[2]),"%s:cannotopendatafile%s\n",argv[0],argv[2]);<br />

fprintf((&_iob[2]),"%s:corruptdimensionindatafile%s\n", exit(7);<br />

}if(lees_vector(a,na,datafp)!=0){ exit(2); argv[0],argv[2]);<br />

}if(lees_vector(b,nb,datafp)!=0){<br />

fprintf((&_iob[2]),"%s:corruptvector1dataindatafile%s\n", exit(3); argv[0],argv[2]);<br />

}fclose(datafp);<br />

fprintf((&_iob[2]),"%s:corruptvector2dataindatafile%s\n", exit(4); argv[0],argv[2]);<br />

antw=_PRP_STUB_bereken(a,na,b,nb,c,&nc,0/*broadcast*/); if(antw!=0){ fprintf((&_iob[2]),"%s:calculationfailed\n",argv[0]); /*DeRPC:aanroep<strong>van</strong>dePRP-stub*/<br />

}if((str=_PRP_STUB_druk_af(c,nc,"calcversie3",argv[1]))==0){ exit(5);<br />

}printf("druk_af:%s.\n",str); exit(6); fprintf((&_iob[2]),"%s:cannotprintresults\n",argv[0]);<br />

}staticintlees_om<strong>van</strong>g(int*na, return(0);<br />

{if(fscanf(datafp,"om<strong>van</strong>g:%d%d",na,nb)


C.2return(-1); VoorbeeldprogrammaPRP<br />

}staticintlees_vector(floatvector[],<br />

}else{ } return(0);<br />

{inti, resultaat; intn, struct_iobuf*datafp)<br />

for(i=0; i


Literatuur<br />

[America] lipsResearchLaboratories,Eindhoven,maart1989.orientedlanguage,espritproject415document452,PhiAmerica,P.H.M.:Issuesinthedesignofaparallelobject- [Bal] VrijeUniversiteitAmsterdam(1989).(proefschrift) programmingdistributedsystems,CentraleHuisdrukkerij Bal,H.E.:Theshareddata-objectmodelasaparadigmfor<br />

[Birman] butedsystems,p.319{368,NewYork,NewYork:ACM Press/Addison-Wesley(1989). Birman,K.P.,T.A.Joseph:Exploitingreplicationin distributedsystems,In:S.J.Mullender(Ed.):Distri-<br />

[Birrell] Birrell,A.D.,B.J.Nelson:ImplementingRemoteProcedure<br />

[DeBruin] Calls,ACMTransactionsonComputerSystems,volume2,<br />

bijhetcollegeTelematica,eerstesemester1987/88,Eras- Bruin,A.de:Inleidingoperatingsystems,Aantekeningen p.39{59,februari1984.<br />

[Chin] A.Spruit:Bankapplicatie:creditendebet<strong>van</strong>/metRPC, Chin-A-Lien,K.,L.Hoekstra,J.Laanstra,A.Nales, musUniversiteitRotterdam.(syllabus)<br />

[Coulouris] Rotterdam.(werkcollegerapport) Coulouris,G.F.,J.Dollimore:Distributedsystems:Con- WerkcollegeNetwerken(1990/1991)ErasmusUniversiteit<br />

[Date] (1988). Date,C.J.:DatabasesystemsvolumeI,fourthedition, ceptsanddesign,Wokingham,England:Addison-Wesley<br />

[Davidson] S.J.Mullender(Ed.):Distributedsystems,p.265{292,New Davidson,S.B.:Replicateddataandpartitionfailures,In: Reading,Massachusetts:Addison-Wesley(1986).<br />

[DeMarco] EnglewoodClis,NewJersey:YourdonPress/Prentice- York,NewYork:ACMPress/Addison-Wesley(1989).<br />

Hall(1979). DeMarco,T.:Structuredanalysisandsystemspecication,<br />

183


Literatuur<br />

[Hoare] [Fortier] Fortier,P.J.:Designofdistributedoperatingsystems,New<br />

onsoftheACM,volume24,no.2,p.75{83,februari1981.Hoare,C.A.R.:TheEmperor'soldclothes,Communicati- York,NewYork:McGraw-Hill(1988).<br />

[VanKatwijk]Katwijk,J.<strong>van</strong>:Inleidingsoftwareengineering,a243Acur- [Johnsonbaugh]Johnsonbaugh,R.:Discretemathematics,NewYork,New York:Macmillan(1984).<br />

[Kernighan1] formatica,TUDelft(juni1991).(syllabus)Kernighan,B.W.,R.Pike:TheUNIXprogrammingensusjaar1991{1992,FaculteitTechnischeWiskundeenIn [Kernighan2] vironment,EnglewoodClis,NewJersey:Prentice-Hall (1984/1985). Kernighan,B.W.,D.M.Ritchie:TheCprogramming<br />

[Lara] Lara,J.C.:Procol|Aconcurrentobjectlanguagewith Prentice-Hall(1988). language,secondedition,EnglewoodClis,NewJersey:<br />

[Leipoldt] UniversiteitRotterdam(1992).(proefschrift) protocols,delegation,persistence,andconstraints,Erasmus<br />

[Liskov] Liskov,B.,R.Scheier:Guardiansandactions:Linguistic matica-onderwijs,nioc,Maastricht:NGI1990.Leipoldt,M.F.J.:Hetgebruik<strong>van</strong>metaforeninhetinfor- supportforrobust,distributedprograms,ACMTransactions<br />

[Matthijsen] p.381{404,juli1983. Matthijssen,R.L.,J.H.J.M.Truijens:Computers,datacom- onProgramminglanguagesandsystems,volume5,no.3,<br />

[Mullender1] municatieennetwerken,Schoonhoven:AcademicService<br />

Distributedsystems,p.3{18,NewYork,NewYork:ACM (1987).<br />

Press/Addison-Wesley(1989). Mullender,S.J.:Introduction,In:S.J.Mullender(Ed.):<br />

[Mullender2] Mullender,S.J.:Protection,In:S.J.Mullender(Ed.):Dis-<br />

[Page-Jones] Press/Addison-Wesley(1989). Page-Jones,M.:Thepracticalguidetostructuredsystems tributedsystems,p.117{132,NewYork,NewYork:ACM<br />

[VanRenesse]Renesse,R.<strong>van</strong>:Thefunctionalprocessingmodel,Centrale design,EnglewoodClis,NewJersey:Prentice-Hall(1980).<br />

184 HuisdrukkerijVrijeUniversiteitAmsterdam(1989).(proefschrift) <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling


[Rochkind] Rochkind,M.J.:Ad<strong>van</strong>cedUNIXprogramming,Englewood Literatuur<br />

[VanderSluis]Sluis,A.<strong>van</strong>der,C.A.C.Gorts:CursusPascal,zesdedruk, Clis,NewJersey:Prentice-Hall(1985).<br />

[Spector] In:S.J.Mullender(Ed.):Distributedsystems,p.191{215, Schoonhoven:AcademicService(1986). Spector,A.Z.:Distributedtransactionprocessingfacilities,<br />

[Sun1] SunMicrosystems:Networkprogrammingmanual,revi- NewYork,NewYork:ACMPress/Addison-Wesley(1989).<br />

[Sun2] sionA,SunMicrosystems(1990).(manual)[Tanenbaum1]Tanenbaum,A.S.:Structuredcomputerorganization,secrosystems(1990).(manual)SunOS/unixmanualpages:rpcclntcalls,yacc,SunMi[Tanenbaum2]Tanenbaum,A.S.:Operatingsystems:Designandimplecondedition,EnglewoodClis,NewJersey:Prentice-Hall<br />

(1984).<br />

[Tanenbaum3]Tanenbaum,A.S.:Computernetworks,secondedition, (1987). mentation,EnglewoodClis,NewJersey:Prentice-Hall[Tanenbaum4]Tanenbaum,A.S.,R.<strong>van</strong>Renesse:Acritiqueoftheremoteprocedurecallparadigm,In:R.Speth(Ed.):euteco<br />

EnglewoodClis,NewJersey:Prentice-Hall(1988).<br />

p.775{783,Amsterdam:North-Holland/Elsevierscience '88Researchintonetworksanddistributedapplications,<br />

[Tanenbaum5]Tanenbaum,A.S.:Modernoperatingsystems,Englewood publ.(1988).<br />

[Van'tVeld] Veld,S.F.N.<strong>van</strong>'t:16Methodenvoorsysteemontwikkeling, Clis,NewJersey:Prentice-Hall(1992).<br />

[Watt1] Amsterdam:TuteinNolthenius(1990).<br />

[Watt2] digms,HemelHempstead:Prentice-Hall(1990). Watt,D.A.:Programminglanguagesyntaxandsemantics, Watt,D.A.:Programminglanguageconceptsandpara-<br />

[Weihl1] HemelHempstead:Prentice-Hall(1991). (Ed.):Distributedsystems,p.65{86NewYork,NewYork: Weihl,W.E.:RemoteProcedureCall,In:S.J.Mullender<br />

[Weihl2] ACMPress/Addison-Wesley(1989).<br />

NewYork:ACMPress/Addison-Wesley(1989). lender(Ed.):Distributedsystems,p.237{262NewYork,Weihl,W.E.:Theoryofnestedtransactions,In:S.J.Mul- <strong>Vereenvoudiging</strong><strong>van</strong><strong>gedistribueerde</strong>applicatieontwikkeling 185

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!