Hermes: A Tutorial and Reference Manual - Researcher - IBM
Hermes: A Tutorial and Reference Manual - Researcher - IBM
Hermes: A Tutorial and Reference Manual - Researcher - IBM
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