count = read (fd, buffer, numBytes);Kot je znano, pri takem klicu naloži kličoča funkcija parametre na sklad, vključno s povratnim naslovom (return address). Če so parametri kazalci, pomeni, da bo klicana funkcija spreminjala podatke naslovnem prostoru kličoče funkcije (oziroma programskega procesa). Pri povratku iz klicane funkcije se kličoča funkcija lahko nadaljuje zaradi restavracije povratnega naslova, ki je bil na skladu. Vse se dogaja v istem naslovnem prostoru danega procesa. To pa ne more veljati v primeru, ko so klicane funkcije locirane na drugem računalniku. Želimo pa, da so tudi taki klici čimbolj podobni klasičnim. Uporabimo lahko idejo "klica oddaljene procedure" (RPC), ki je ponazorjena s spodnjo sliko:
Vzemimo za primer klic oddaljene funkcije read( ). Pri centraliziranih sistemih bi klic potekal v okviru istega procesa in s tem istega naslovnega prostora. Pri decentraliziranem sistemu potrebujemo na oddaljenem računalniku dodaten proces, strežnik. Oddaljena procedura read( ) bo delovala v naslovnem prostoru strežnika. V naslovnem prostoru kličočega procesa (odjemalca) moramo imeti na voljo malo drugačno proceduro, ki ji rečemo štrcelj odjemalca (client stub), ki igra vlogo nekakąnega vmesnika. Analogno proceduro, štrcelj strežnika (server stub) imamo na strani strežnika. Oddaljen klic procedure poteka nato na naslednji način:
Proces-odjemalec pokliče
svoj štrcelj na normalni način (prenos parametrov in povratnega naslova
na lastni sklad).
Štrcelj odjemalca formira
obvestilo (message) tako, da vanj pakira parametre in s primernim sistemskim
klicem pokliče jedro.
Jedro pošlje obvestilo
oddaljenemu jedru.
Oddaljeno jedro posreduje
obvestilo štrclju strežnika.
Štrcelj strežnika razpakira
parametre v sprejetem obvestilu in kliče strežnik.
Strežnik opravi zahtevano
nalogo in vrne rezultat svojemu štrclju.
Štrcelj strežnika zapakira
rezultate v obvestilo in s sistemskim klicom pade v (svoje, oddaljeno)
jedro.
Oddaljeno jedro posreduje
obvestilo z rezultati jedru odjemalca.
Jedro odjemalca poąlje
obvestilo štrclju odjemalca.
Štrcelj odjemalca razpakira
rezultat in ga vrne odjemalcu.
Pakiranju parametrov v obvestilo pravijo po angleško marshalling (urejanje, pakiranje), obratni operaciji pa unmarshaling (razpakiranje).
Interaktivni primer RPC
Java in RMI