Leitfäden und Monographien der Informatik Brauer: Automatentheorie 493 Seiten. Geb. DM 58,- Dal Cin: Grundlagen der syslemnahen Programmierung 221 Seiten. Kart. DM 34,- Engeler/Läuchli: Berechnungstheorie für Informatiker 120 Seiten. Kar!. DM 24,- Loeckx/Mehlhorn/Wilhelm: Grundlagen der Programmiersprachen 448 Seiten. Kart. DM 44,- Mehlhorn: Datenllrukturen und effiziente Algorithmen Band 1: Sortieren und Suchen 2. Aufl. 317 Seiten. Geb. DM 48,- Messerschmidt: Linguistische Datenverarbeitung mit Comlkee 207 Seiten. Kar!. DM 36,- Niemann/Bunke: Künslltche Intelligenz In Blld-und SprachanalYle 256 Seiten. Kar!. DM 38,- Pflug: Stochastische Modelle In der Informatik 272 Seiten. Kar!. DM 38,- Richter: Betriebssysteme 2. Auf!. 303 Seiten. Kar!. DM 38,- Wirth: Algorithmen und Datenatrukturen Pascal-Version 3. Auf!. 320 Seiten. Kart. DM 39,- Wirth: Algorithmen und Datenstrukturen mit Modula -2 4. Aufl. 299 Seiten. Kar!. DM 39,- Wojtkowiak: Tesl und Teslbarkelt digitaler Schaltungen 226 Seiten. Kar!. DM 36.- Preisänderungen vorbehalten B.G.TeubnerStuHgart Leitfäden und Monographien der Informatik M. Dal ein Grundlagen der systemnahen Programmierung Leitfäden und Monographien der Informatik Unter beratender Mitwirkung von Prof. Dr. Hans-Jürgen Appelrath, Oldenburg Dr. Hans-Werner Hein, St. Augustin Prof. Dr. Rolf Pfeifer, Zürich Dr. Johannes Retti, Wien Prof. Dr. Michael M. Richter, Kaiserslautern Herausgegeben von Prof. Dr. Volker Claus, Oldenburg Prof. Dr. Günter Hotz, Saarbrücken Prof. Dr. Klaus Waldschmidt, Frankfurt Die Leitfäden und Monographien behandeln Themen aus der Theoreti schen, Praktischen und Technischen Informatik entsprechend dem aktuel len Stand der Wissenschaft. Besonderer Wert wird auf eine systematische und fundierte Darstellung des jeweiligen Gebietes gelegt. Die Bücher die ser Reihe sind einerseits als Grundlage und Ergänzung zu Vorlesungen der Informatik und andererseits als Standardwerke für die selbständige Einar beitung in umfassende Themenbereiche der Informatik konzipiert. Sie sprechen vorwiegend Studierende und Lehrende in Informatik-Studien gängen an Hochschulen an, dienen aber auch in Wirtschaft, Industrie und Verwaltung tätigen Informatikern zur Fortbildung im Zuge der fortschrei tenden Wissenschaft. Grundlagen der systemnahen Programmierung Von Prof. Dr. rer. nato Mario Dal ein Universität Frankfurt am Main Mit zahlreichen Abbildungen B. G. Teubner Stuttgart 1988 Prof. Dr. Mario Dal Cin Geboren 1940 in Bad Wörishofen (Bayern). Studium der Physik und Mathe matik an der Universität München, Promotion 1969 mit einer Arbeit in Hoch energiephysik. Von 1969 bis 1971 USA-Aufenthalt, Center for Theoretical Studies, Coral Gables. 1973 Habilitation, 1973 bis 1985 Professor an der Uni versität Tübingen. Seit 1985 Professor am Fachbereich Informatik der Jo hann Wolfgang Goethe-Universität Frankfurt am Main. CIP-Titelaufnahme der Deutschen Bibliothek Dal Cin, Mario: Grundlagen der systemnahen Programmierung / von Mario Dal Cin. - Stuttgart : Teubner, 1988 (Leitfäden und Monographien der Informatik) ISBN 978-3-519-02264-0 ISBN 978-3-322-93095-8 (eBook) DOI 10.1007/978-3-322-93095-8 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jeder Verwertung außer halb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt besonders für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. © B. G. Teubner Stuttgart 1988 Gesamtherstellung: Zechnersche Buchdruckerei GmbH, Speyer Umschlaggestaltung: M. Koch, Reutlingen VORWORT Dieses Buch ist aus einer Vorlesung flir Studenten der Informatik hervorgegangen, die in ein regelmäßig angebotenes Praktikum in Systemprogrammierung einfuhren soll. Ziel dieser Vorlesung ist die Vermittlung grundlegender Methoden der systemnahen Programmierung, während im Praktikum vor allem der Einsatz einer höheren Program miersprache für Probleme der systemnahen Programmierung geübt werden soll. Kenntnisse in einer höheren Programmiersprache, vorzugsweise Pascal, Modula-2 oder C, werden deshalb vorausgesetzt. Das Buch richtet sich aber nicht nur an Informatikstudenten, sondern in erster Linie auch an die Benutzer von Personal Computern, vor allem an solche, die sich intensiver mit der Programmierung ihres Rechners befassen wollen, als dies für die Erstellung reiner Anwendersoftware nötig wäre. Sie können nämlich, im Vergleich zu den Benutzern eines großen Systems, die vorhandenen Resourcen ihres Rechners gezielter, auf die jeweilige Anwendung abgestimmt, nutzen. Dazu sind jedoch einige Kenntnisse in systemnaher Programmierung erforderlich. Bis auf wenige Ausnahmen habe ich mich bemüht, dem Leser nur vollständige Pro grammbeispiele anzubieten. Deshalb wird er sich zuweilen auch mit weniger wichtigen Details befassen müssen. Er kann dafür aber sicher sein, daß die Beispiele lauffähig sind und getestet wurden. Das Buch gl~edert sich in zwei Teile. Teil I soll die Grundprinzipien der modularen, systemnahen Programmierung vermitteln und diese an Hand der Behandlung von Ausnahmen demonstrieren. Teil II befaßt sich mit der concurrenten Programmierung. Dabei steht die Entwicklung und die Modellierung ganzer Prozeß-Systeme im Vordergrund. Den Herren Dr. R. Brause, J. Lutz, T. Philipp und A. Willemer danke ich für viele wertvolle Anregungen zu diesem Buch. Mein besonderer Dank gilt meiner Frau Inge für die Erstellung des Manuskripts einschließlich der vielen Figuren. Dem Verlag B.G. Teubner danke ich für sein Entgegenkommen und die Aufnahme dieses Buchs in sein Verlagsprogramm. Frankfurt am Main, im Sommer 1988 Mario Dal Cin INHALTSVERZEICHNIS Vorwort ......................................... 5 Inhalt .......................................... 7 TEIL I: GRUNDLAGEN 1. EINLEITUNG ................................... 13 1.1 Systemnahe Programmierung ............... 13 1.2 Systemprogrammiersprachen ............... 14 1.3 Zu diesem Buch .......................... 15 2. GRUNDBEGRIFFE DER SYSTEMNAHEN PROGRAMMIERUNG .17 2.1 Virtuelle Maschinen ..................... 17 2.2 Zwei Beispiele .......................... 18 2.3 Systemaufrufe ........................... 20 2.4 Virtuelle Geräte ........................ 21 2.5 Ausnahmen ............................... 21 2.6 Nebenläufigkeit ......................... 22 2.7 Prozesse ................................ 22 2.8 Betriebsmittel .......................... 23 2.9 Betriebsmittelverwaltung ................ 24 3. BETRIEBSSYSTEMAUFRUFE ........................ 25 3.1 Systemaufrufe ........................... 25 3.2 Architektur einer Zentraleinheit ........ 31 3.3 Beispiele für Systemaufrufe ............. 38 4. MODULARE SYSTEMPROGRAMMIERUNG ................ 43 4.1 Das Modulkonzept ........................ 43 4.2 Moduln in Modula-2 und C ................ 45 4.3 Maschinenabhängigkeit ................... 52 4.4 Systemspezifische MOdulbibliotheken ..... 59 5. DATENABSTRAKTIONEN ........................... 65 5.1 Modul typen .............................. 65 5.2 Datenstrukturen ......................... 67 5.3 Datentypen .............................. 68 5.4 Monitore ................................ 69 5.5 Objektorientierte Programmierung ........ 70 5.6 Implementierungsbeispiele ............... 70 6. UNTERBRECHUNGEN •.••••••••••.•••••••••••••.••• 76 6.1 Asynchrone Unterbrechungen .............. 76 6.2 Timer - Interrupts ...................... 77 7. INTERNE AUSNAHMEN •••••••••••••••••••••••••••• 88 7.1 Intern erzeugte Ausnahmen ...•..•........ 88 7.2 Ausnahmebehandlung in Anwendungen ....... 97 TeD n: NEBENLÄUFIGKEIT 8. COROUTINEN ................................... 105 8.1 Das Coroutinenkonzept ................... 105 8.2 Coroutinen in Modula-2 .................. 105 8.3 Coroutinen in C ......................... 109 9. UNTERBRECHUNGSBEHANDLUNG MIT COROUTINEN ...... 119 9.1 Timer - Interrupts ...................... 119 9.2 Emu1ation eines Terminals ............... 122 9.3 Das Produzenten - Konsumenten - Problem .127 10. PROZESS -SYSTEME ............................. 130 10.1 Prozesse ............................... 130 10.2 Prozeß - Systeme ....................... 131 10.3 Prozessorvergabe ....................... 135 11. KRITISCHE ABSCHNITTE ........................ 145 11.1 Signale ................................ 145 11.2 Semaphore .............................. 146 11.3 Monitore ............................... 153 11.4 Zeit dienste ............................ 156 12. PROBLEME MIT DER PROZESSVERWALTUNG .......... 160 12.1 Verklemmungen .......................... 160 12.2 Fairneß ................................ 164 13. KOMMUNIKATION DURCH BOTSCHAFTEN ............. 166 13.1 Synchroner Botschaftenaustausch ........ 166 13.2 Verklemmungen .......................... 168 13.3 Asynchroner Botschaftenaustausch ....... 171 14. MODELLIERUNG VON PROZESS-SYSTEMEN ........... 179 14.1 Atomare Aktionen ....................... 179 14.2 Netze aus Stellen und Transitionen ... ~ .180 14.3 Einige Eigenschaften von PT-Netzen ..... 186 LITERATUR ....................................... 193 ·10· ANHANG Al. Beispielprogramme •••.•.•.••.••••••••••••••• 197 A2. SYSTEM unter TOS ••••••.••••••••.•••••••.••. 204 A3. SYSTEM unter MS-DOS ........................ 205 A4. Die Syntax von MOdula-2 •.•••..•••••..•.••.• 207 A5. ASCII -Tabelle .•.•.••.•.•.•...........•..•.• 212 A6. Hex-Dez-Tabellen •.••.•.•..•....•••.•....... 214 A7. Programmliste .•.••••.•.•••••••••••.••••.•.. 215 STICHWORTVERZEICHNIS •.•••••••.••••....•••....•.• 217