next up previous contents
Next: 6.3 Orodja za razvoj Up: 6.2 Programski vmesnik Previous: 6.2.4 Signalizacija Vsebina: contents

6.2.5 Posredovanje sporocil

Programski model PVM temelji na posredovanju sporocil (mesage passing). Sporocila so podatki, ki se posredujejo med procesi. Za pravilen prenos skrbi sistem PVM, ki usmerja in optimira prenos, tako da potujejo sporocila kar najhitreje. V distribuiranem modelu se uporablja protokol UDP/IP. Protokol UDP ima osnovno enoto prenosa paket z omejeno velikostjo. Hitrost prenosa s protokolom UDP je v primerjavi s TCP vecja, vendar je dostava paketov nezanesljiva. Protokol TCP zahteva tudi odpiranje povezave pred kakrsnimkoli posiljanjem. Stevilo odprtih povezav je na velikem stevilu sistemov zelo omejeno in zato TCP ni primeren za PVM, ker omejuje skalabilnost. Posiljanje sporocil je zato izvedeno z UDP, PVM pa skrbi za ponovitve slabo poslanih sporocil, kot tudi za delitve velikih sporocil na velikosti paketov primernih za UDP.

Sporocila lahko zdruzujejo vecje stevilo razlicnih tipov podatkov. Obicajno predpisemo sporocilom tudi celostevilcne oznake, da je mozno v celotnem sistemu pravilno razpoznavati tip sporocil in jih tako pravilno sprejeti. Pri prenosu imamo dve glavni skupini rutin za prenos podatkov: pakiranje in razpakiranje. Prvo je potrebno pri posiljanju, drugo pri sprejemu podatkov. Vmesni pomnilniki se kreirajo avtomatsko. Normalno imamo le en vmesni pomnilnik v katerega zdruzujemo podatke, lahko pa naredimo tudi vec vmesnih pomnilnikov, vendar je naloga programerja, da pravilno sestavlja sporocila. Priprava sporocila za posiljanje ima sledece potrebne korake:

  1. inicializacija vmesnega pomnilnika z pvm_initsend()
  2. pakiranje lokalnih podatkov v vmesni pomnilnik
  3. zakljucek sporocila s posiljanjem na cilj in specifikacijo stevilke sporocila, ki unikatno oznaci tip sporocila
Posiljanje ima obicajno en sam ciljni proces. Obstaja pa tudi ukaz za hkratno posredovanje sporocila vsem procesom v navideznem racunalniku (multicasting).

Sprejem sporocil je komplement posiljanja. PVM omogoca tudi sprejem brez blokiranja procesa, vendar je tak nacin uporaben le za posebne primere. Ker lahko sporocila prihajajo nedeterministicno, obstajajo tudi ukazi, ki testirajo tip sporocila, ki je prispelo. Razpakiranje sporocila je podobno opisanemu pri pakiranju in je vedno komplement pakiranja. Ce temu ni tako, je razpakiranje neuspesno. Pri sprejemu, kjer proces caka tocno doloceno sporocilo, je mozno predpisati tudi maksimalni cas prispetja sporocila, kar je pomembna lastnost pri programih z odkrivanjem napake.



Copyright © 1995 Leon Kos, Univerza v Ljubljani