Table Of ContentLeitfä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