Studienreihe Informatik Herausgegeben von W. Brauer und G. Goos Ralf Guido Herrtwich Gunter Hommel Kooperation und Konkurrenz NebenHiufige, verteilte und echtzeitabhangige Programmsysteme Mit 89Abbildungen und 28 Kapitelillustrationen Springer-Verlag Berlin Heidelberg NewYork London Paris Tokyo Hong Kong Or.-Ing. RalfGuidoHerrtwich1,2 Prof. Or.-Ing. GunterHommel! 1TechnischeUniversiUitBerlin,FachbereichInformatik FachgebietProzeBdatenverarbeitungund Robotik FranklinstraBe28/29,0-1000Berlin 10 2InternationalComputerScienceInstitute 1947CenterStreet,Berkeley,California94704-1105,USA Umschlag-undKapitelillustrationenvon RalfKrischker SuarezstraBe11,0-1000Berlin19 ISBN-13:978-3-642-97852-4 e-ISBN-13:978-3-642-97851-7 001: 10.1007/978-3-642-97851-7 CIP-TitelaufnahmederDeutschenBibllothek Herrtwich.RalfGuido:KooperationundKonkurrenz:nebenlauflge.vertellteundechtzeit abhangigeProgrammsysteme/RalfGuidoHerrtwich•GunterHommel.Kap-III.vonRalf Knschker.-Berlin;Heidelberg,NewYork;London;Paris;Tokyo,HongKong:Spnnger, 1989 (Stud,enre,heInformat,k) ISBN-13:978-3-642-97852-4 NE:Hommel,Gunter. DlesesWerk1sturheberrechtlichgeschutzt.DiedadurchbegrundetenRechte,msbesondere diederUbersetzung,desNachdrucks,desVortrags,derEntnahmevonAbbildungenund Tabellen, der Funksendung, der MikroverfllmungoderderVervlelfalllgungaufanderen WegenundderSpelcherung10Datenverarbeltungsanlagen,blelben,auchbelnurauszugs welserVerwendung,vorbehalten.EineVervielfaltlgungdiesesWerksodervonTeilendieses Werkesistauch1mEinzelfallnurindenGrenzendergesetzlichenBestimmungendesUrhe berrechtsgesetzesderBundesrepubllkDeutschlandyom9 September1965inderFassung yom24.Juni 1985zulassig. Sie1stgrundsatzlichvergutungspfhchtig Zuwiderhandlungen unterhegendenStrafbestlmmungendesUrheberrechtsgesetzes Text,AbblldungenundProgrammewurdensorgfaltlgerarbeltet.VerlagundAutorenkon nenjedochfureventuellverblelbendefehlerhafteAngabenundderenFoigenwedereme junstlscheVerantwortungnoch,rgendemeHaftungubernehmen. DieWiedergabevonGebrauchsnamen, Handelsnamen,Warenbezeichnungenusw 10die semWerkberechtigtauchohnebesondereKennzelchnungnichtzuderAnnahme,daBsol che Namen 1m SlOne der Warenzelchen- und Markenschutz-Gesetzgebung als frel zu betrachtenwarenunddahervonjedermannbenutztwerdendurften e>Springer-VerlagBerlinHeidelberg1989 SoftcoverreprintofthehardcoverIstedition 1989 SatzdurchdieAutorenmitMicrosoftWord3.01undMacDrawIIaufAppleMacmtoshII undLaserWnterPlus. Druck:Beltz,Hemsbach;Bmdearbeiten Schaffer,Grunstadt 2145/3140-543210- GedrucktaufsaurefrelemPapler Jenen, diefruher auf»login:« auch mit »jrst« geantwortet haben - genau dafur R.O.H. Herm Prof RichardBaumann fur die groftzugige Unterstutzung meinerArbeiten an der Technischen Universitiit Munchen O.H. ; /' / ---7.k- ~1-!-L--L_I~~~--- _------;;lIo----- -,-(1(- ,r-- Vorwort Hamlet: So ringsumstricktmitBubereien,ftng, Ehich nochden Prolog dazu gehalten, Mein Kopfdas Spiel schon an. Hamlet (V. Akt, 2. Szene) Die Programmierung nebenHiufiger, verteilter und echtzeitabhangigerSysteme erlangt zunehmende Bedeutung nicht nur in der Informatik, sondem vor allem auchin zahlreichenAnwendungsbereichen. Ursprunglich muBte man sichmitihr nurbeirnBetriebssystembauundetwas spliterauch inderProzeBdatenverarbei tung beschliftigen. Heute ist sie aufgrund neuartigerRechnerarchitekturen und derVerwendung von RechnemetzeninderTelekornmunikation, inderProduk tionstechnikundin derBuroautomationfUrvieleandereGebiete wichtiggewor den. Es liegtdeshalb nahe,ihre grundlegenden Konzepte, Methoden undTech nikenimZusammenhangdarzustellen. Das vorliegende Buch entstandaus Unterlagen zu Vorlesungen und Kursen, die wir getrennt und gemeinsam an den Technischen Universitaten Berlin und Munchen gehalten haben. Genau wie diese Lehrveranstaltungen sowohl fUr kunftige Informatiker als auch fur kunftige Ingenieure gedacht waren, richtet sich auch dieses Buch an beide Zielgruppen. Inhalt, Aufbau und Darstellungs weise dieses Buches setzen daher nur Programmiererfahrung, aber keine spe ziellenKenntnisse theoretischerMethodenderInformatikvoraus. Wer heute ein nebenlaufiges, verteiltes odergarechtzeitabhangiges System programrnieren will, sieht sich typischerweise in einer zwiespaltigen Situation. Aufder einen Seite findet man fUr diesen Zweck in der Literaturjede Menge VorschlagefUrProgrammiertechniken, -methoden und-sprachen. Aufderande ren Seite stehen oft keine odernur unzureichende Werkzeuge fUr die spezielle Aufgabenstellung zurVerfugung, sodaB man zur Realisierungeines konkreten Systems sogarelementareFunktionen selbstprogrammieren muB. DieserSitua tion wollen wirindiesem Buchdadurch Rechnung tragen,daB wirverschiedene Verfahren vorstellen, vertiefen und zueinanderin Beziehung setzen. Wirgeben dabei nicht nur Konzepte an, sondern zeigen auch, wie diese Konzepte imple mentiert werden konnen. Idee, Anwendung und Realisierung gehen in diesem BuchHandinHand. Urn verschiedene Konzepte einander gegenuberzustellen, bietet es sieh an, ihrehistorischeEntwicklungnachzuvollziehen undsie aus heutigerSiehtzu be- VIII Vorwort werten. Das dazu notwendige Herausarbeiten der Unterschiede darfnicht den Blick aufGemeinsarnkeiten verstellen. Deshalb verwenden wir zum Betonen von AnalogienimmerwiederdiegleichenBeispiele.Wirwollendarnitauchda flir sorgen, einzelneVerfahren aus demWechselbadkonsequenterVerdammnis aufder einen undblinderVerehrung aufder anderen Seite zu befreien. Nurwer verschiedene Altemativenmitihren StarkenundSchwlichenkennt, istinderLa ge, sichflireinekonkrete Aufgabenstellungdas geeigneteMittelherauszusuchen unddie getroffeneWahl niichtem zu begriinden. 1mMittelpunkt dieses Buches stehen Programmierkonzepte- und nichtdie ProgrammierungineinerbestimmtenSprache. Natiirlichkommen wirnichtum hin, unsere AlgorithmenineinerbestimmtenFormaufzuschreiben, doch istdie hierfiir verwendete Notation ganz bewuBt fiktiv gewlihlt. Wir geben deshalb auch keine Sprachregeln flir diese Notation an; alle halbwegs erfahrenen Pro grammiererwerdenkeineSchwierigkeitenmitihrerInterpretationhaben. Urn zu zeigen,in welchenModifikationenundErweiterungendieeinfachenKonzeptein praktischbenutzteProgrammierspracheneingeflossen sind, stellenwirimmerim AnschluBan unsereeherabstrakten Betrachtungenkonkrete Sprachenvor. DaB diese BehandlungimKontext dieses BucheswederhinsichtlicheinzelnerSpra chen noch hinsichtlich der gesamten Sprachvielfalt vollstlindig sein kann und will, versteht sich von selbst. Zum Verstlindnis dieses Buches sind auGer praktischen Erfahrungen in der Programmierung,etwainPascaloderModula-2, einigeGrundkenntnissein der Organisation von Rechenanlagen hilfreich. Dariiberhinaus istdie Bereitschaft erforderlich,die Algorithmen,dieindenTextdieses Bucheseingeflochten sind, nichteinfach beimLesen zu iiberspringen, sondem griindlich zu studieren und hierfiirauch einmalmehralseineMinute zuinvestieren. Wirhaben aufForma lismenanden Stellen verzichtet,woihrGebrauchdas Verstlindnisfiirdieange sprochenen Zielgruppen zuerschwerendrohte. FormaleBetrachtungen,die un bestritten fiir Korrektheitsfragen beiderProgrammierungnebenliiufiger, verteil terundechtzeitabhlingigerSysteme wichtigsind, stellenwirnurdortan, wosie tatslichlich zumbesserenVerstlindniseinesProblemsoderseinerLOsungbeitra gen. Geradedann sollten sie vondenLesemauch nachvollzogen werden. Bei der Auswahl und Darstellung des hier behandelten Lehrstoffes konnten wirunteranderemaufArbeiten von EdsgerDijkstra, TonyHoare, LeslieLam port,ButlerLampson,BarbaraLiskov undFredSchneiderzUrUckgreifen, deren EinfluB andieserStelledankbaranerkanntsei. Auch allen Studenten,die in den vergangenenJahren mitihrenkonstruktiven, kritischenAnmerkungenaufdieses BuchEinfluBgenommenhaben,danken wirflir ihrInteresse undihreHilfe. Einem unserer ehemaligen Studenten gebiihrt besondere Erwlihnung: Ralf Krischkerhatdie Idee gehabt,dieeinzelnenKapitel unseres Buchs lihnlichdem lEX Book von DonaldKnuth mit lllustrationen zu versehen. Er besitzt unsere BewunderungfUr seinkiinstlerischesTalentundunseren DankdafUr,daBerdas Kanguruh Hoppy, das immer wieder durch die Ubungsaufgaben unserer Stu denten sprang, zu bildlichemLebenerwachenlieB. Vorwort IX Es hateinige Zeit gedauert, bis dieses Buch fertig wurde. 1mZuge derEnt stehung der versehiedenen Versionen standen uns viele Kollegen und Freunde mit Rat undTat zurSeite. Daes unmoglich ist, andieserStellejedeneinzelnen EinfluBangemessen zu wiirdigen, seihiernureinigenbesondersgedankt. Richard Baumann, Werner Riib und Gerhard Schrott haben mit ihren Ar beiten imBereich derEchtzeitprogrammierung an derTechnischen Universitat Miinchen unsereDarstellung beeinfluBt. AnderTechnischenUniversitatBerlin haben HeinerMarxen undJOrgHahndurch das Korrigierender allererstenFas sungdes Buchtextesdie Weichenrichtig gestellt. UweWolfgang Brandenburg, ReinhardBaierundFredSchneidereithatten mitunseren UnterlagenKurse und Lehrveranstaltungen zu halten und waren deshalb besonders kompetente und kritische Begleiterunserer Arbeit. Hans-Joachim Peters hat am besten erkannt, wenn einerunsererExkurse zu langgeworden war. PeterPepperwies uns nicht nur immer aufdie Stellen hin, die wir "flir die Kollegen" geschrieben hatten, sondernhatauchunsere BerlinerSichteinerMiinchnerPrtifungunterzogen. Gudrun Pourshirazi ist die beste Sekretiirin, die wir uns vorstellen konnen. Sie hatdie MtihenderUbertragung des alten troff-Textes in diejetzige Version wacker getragen. Renate Kirchmann hat uns bei der Erstellung einiger Zeich nungen geholfenunddabei ihreVirtuositatamZeichenbrettaufihrenMacintosh tibertragen. Renate Gtinther war stets zur Stelle, wenn wir nieht sicher waren, ob unsere Programme- vorallem unsere Ada-Programme - wirklich so funk tionieren wtirden, wie wir es uns vorstellten. Ulrich Einig hat am Ende, wie schon sooft,die Mtiheaufsichgenommen,denTextnoch einmalaufSatZfeler durchzusehen. Etwaige trotzdem noch verbliebene Unzulanglichkeiten gehen aberselbstverstiindlichaufunserKonto. Dank gebtihrt auch unseren Herausgebern, Wilfried Brauer und Gerhard Goos, flir ihren Zuspruch zu unserer Arbeit. Vor allem Gerhard Goos hat uns viele Anregungen flir die endgiiltigeFormdes Buehes gegeben. Hans Wossner undIngeborgMayervomSpringer-VerlagschlieBlich begleitetenunsere Arbeit mitdernotigenUnterstiitzungunddererforderlichenGeduld vomerstenExpose bis zumfertigen Buch. RalfGuido Herrtwich Gunter Hommel Inhaltsverzeichnis ZweiteHexe: Sumpf'gerSchlangeSchweifundKopf BratundkochimZaubertopf: MolchesaugundUnkenzehe. HundemaulundHirnderKrahe; ZiiherSoftdesBilsenkrauts. EidechsbeinundFlaum yomKauz: Macht'gerZauberwiintdieBriihe. HollenbreiimKesselgliihe! Macbeth(IV. Akt.I. Szene) Vorwort VII Inhaltsverzeichnis XI Prolog 1 o Motivation 3 Teil A: StrukturennebenHiufigerProgrammsysteme 11 1 NebenHiufigkeit 13 1.1 ZuslitzlicheEigenschaftenvon Algorithmen 13 1.1.1 VenichtaufSequentialitlit 14 1.1.2 VenichtaufDeterminismus 17 1.1.3 Nebenlliufigkeit,Nichtdeterminismus,Nichtdeterminiertheit 18 1.2 Prozesse , 21 1.2.1 Kooperierendeund konkurrierendeProzesse 22 1.2.2 SynchronisationundKommunikation 26 2 Modularitat 29 2.1 Module................ 29 2.2 Modularten 32 2.2.1 AbstrakteDatenstrukturen 32 2.2.2 AbstrakteDatentypen 35 2.2.3 Generischeabstrakte Datentypen 35 2.3 ModularitlitinModula-2 37 2.4 ModularitlitinAda.. 41 3 ProzeBbeschreibung 47 3.1 AblauforientierteProzeBbeschreibung 47 3.1.1 ProzeBablosung 48 3.1.2 Koroutinen 49 3.1.3 NebenlliufigeBlocke 50 3.1.4 ProzeBabzweigung 54 3.2 ProzeBdeklaration 57