28.01.2015 Views

Hermes: A Tutorial and Reference Manual - Researcher - IBM

Hermes: A Tutorial and Reference Manual - Researcher - IBM

Hermes: A Tutorial and Reference Manual - Researcher - IBM

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ortransactions.A<strong>Hermes</strong>moduleisastraightforwardsequentialprogram 41.1.Introduction ingseveral<strong>Hermes</strong>modules<strong>and</strong>connectingtheoutputofsomemodulesto theinputofothers. withinputs,outputs,<strong>and</strong>localmemory.A<strong>Hermes</strong>systemisbuiltbytak-<br />

systemsprogrammerisusedto: Butsomeaspectsof<strong>Hermes</strong>areverydierentfromwhatatraditional Therearenopointers.Noaddressvariables,noaddressarithmetic,no Thereisnoshareddata.Notviapointers,sincetherearenopointers, suchdetailswhichmayvaryfrommachinetomachineareinvisible addressesperiod.Youhavenocontrolofhowdataisstoredinmemory.Thatmeansthatbitorder,byteorder,alignment,<strong>and</strong>allother<br />

toyou. notvianestingofinnerprocedureswithinouterprocedures,notvia globalorexternaldeclarationsofanykind.Everyvariablebelongs toexactlyonemodule.Thereisnoaliasing|thatis,twodistinct Youwillusemanyprocesses.<strong>Hermes</strong>isaprocess-orientedlanguage. withthous<strong>and</strong>sofUNIXprocesses,butyoumaywellbuildasystem withthous<strong>and</strong>sof<strong>Hermes</strong>processes.Mostofthetime,communicationbetween<strong>Hermes</strong>processesisatleastasfastasaprocedurecall.<br />

Buteventhoughtherearemanyprocesses,thereisnoshareddata| onlyqueuedcommunication.Soyoucanstillanalyzeeachprocess inprocedurallanguages.Youwouldn'tdreamofbuildingasystem Thismeansthat<strong>Hermes</strong>processestakeontherolethatmoduleshave variablenamesalwaysdenotetwodistinctvariables.<br />

Thereisnolanguagevs.systemduality.WhenyouprograminC, duresusingCALLs.Intheoperatingsystemworld,dataisstoredin buersorinles,<strong>and</strong>passedfromoneapplicationtoanotherusing pipes,sockets,orles.Dataisuntyped|itisinterpretedasstrings asscalars,arrays,structs,orpointers,<strong>and</strong>passedbetweenproce-<br />

VMSworld.IntheCworld,dataisstoredintypedvariablessuch independently<strong>and</strong>viewitasasequentialprogram.<br />

ofbytes.Somedata(e.g.pointers,leh<strong>and</strong>les)cannotbepassedto youhavetothinkabouttheCworld<strong>and</strong>theUNIX,MS-DOSor<br />

<strong>Hermes</strong>hasmuchmorecompile-timechecking([SY86]).Muchmore newerlanguages.Thebenets:(1)moreerrorsarediscoveredearlier, thaninC,<strong>and</strong>somewhatmoreeventhanAda,Modula-3,orother on.In<strong>Hermes</strong>,thereisonlyoneworldtothinkabout|the<strong>Hermes</strong> world. local,whatisremote,<strong>and</strong>oftenwhatkindofmachineyou'rerunning demarshalled.Indistributedprograms,youmustbeawareofwhatis otherprocessesorstoredinles.Thisdatamustbemarshalled<strong>and</strong><br />

<strong>and</strong>(2)dierentuserscansafelyruninthesameaddressspace,even

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!