FINAL Systemnahe Programmierung
Total Page:16
File Type:pdf, Size:1020Kb
Arb eitsb erichte aus der Informatik Technical Rep orts and Working Pap ers Fachho chschule Nordostniedersachsen Volgershall 1, D-21339 Luneburg Phone: xx49.4131.677175 Fax: xx49.4131.677140 F IN A L F achho chschule Nordostniedersachsen IN formatik A rb eitsb erichte L uneburg Systemnahe Programmierung 3.,uberarbeitete Au age 1999 Ulrich Ho mann FINAL, 9. Jahrgang Heft 1, Juli 1999, ISSN 0939-8821 Inhaltsverzeichnis 1 Einleitung .................................................................................................................. 1 2 Das Modell eines Rechners ....................................................................................... 4 2.1 Funktionsweise eines Rechners ........................................................................ 7 2.2 Eine Hardware/Software-Schnittstelle: Der Interruptmechanismus ................. 18 2.3 Aspekte der Gerätesteuerung und des Ein/Ausgabekonzepts ........................... 21 3 Aspekte der Rechnerprogrammierung ...................................................................... 27 3.1 Höhere Programmiersprachen und Assembler-Sprachen in der Systempro- grammierung ........................................................................................................... 35 3.2 Adreßräume und das Prozeßkonzept ................................................................ 36 3.3 Beispiele von Speichermodellen ...................................................................... 44 3.3.1 Beispiel: Der Real Mode des INTEL 80x86 ............................................ 45 3.3.2 Beispiel: Der Protected Mode des INTEL 80x86 .................................... 49 3.3.3 Beispiel: Virtuelle Adressierung mittels Paging ...................................... 52 3.4 Programme in einer höheren Programmiersprache und das Laufzeitlayout ..... 56 4 Datenobjekte .............................................................................................................. 61 4.1 Grundlegende Datentypen eines Rechners ....................................................... 64 4.1.1 Datentyp Zahl ........................................................................................... 68 4.1.2 Datentyp Zeichenkette (String) ................................................................ 77 4.1.3 Datentyp Binärwert .................................................................................. 77 4.1.4 Datentyp Adresse ..................................................................................... 77 4.1.5 Datentyp Instruktion ................................................................................ 79 4.2 Datentypen in höheren Programmiersprachen ................................................. 79 4.2.1 Einfacher Typ ........................................................................................... 80 4.2.2 Stringtyp ................................................................................................... 85 4.2.3 Strukturierter Typ ..................................................................................... 87 4.2.4 Zeigertyp .................................................................................................. 92 4.2.5 Prozedurtyp .............................................................................................. 97 4.2.6 Typkompatibilität ..................................................................................... 98 4.2.7 Vergleichsoperatoren ............................................................................... 100 5 Anweisungen in einer höheren Programmiersprache ................................................ 102 5.1 Wichtige strukturierte Anweisungen ................................................................ 102 5.2 Ein- und Ausgabe ............................................................................................. 105 6 Das Blockkonzept einer höheren Programmiersprache ............................................ 110 6.1 Der Gültigkeitsbereich von Bezeichnern .......................................................... 112 6.2 Bemerkungen zur Lebensdauer von Datenobjekten ......................................... 116 6.3 Bemerkungen zu Speicherklassen .................................................................... 118 7 Das Prozedurkonzept ................................................................................................. 120 7.1 Parameterübergabe ........................................................................................... 122 7.2 Der Stack .......................................................................................................... 132 7.3 Rekursive Prozeduren: Das Prinzip .................................................................. 138 7.4 Beispiele rekursiver Prozeduren ....................................................................... 140 7.5 Das Prinzip der Implementierung ..................................................................... 152 7.6 Mehrfachverwendbarkeit von Prozeduren ........................................................ 169 8 Modularisierung ........................................................................................................ 174 8.1 Automatisches Einfügen von Quellcode .......................................................... 174 8.2 Aufruf externer Prozeduren .............................................................................. 175 8.3 Laufzeitbibliotheken ......................................................................................... 175 8.4 Das Unit-Konzept in PASCAL ......................................................................... 176 8.5 Dynamische Bindebibliotheken ........................................................................ 180 9 Einführung in die objektorientierte Programmierung ............................................... 184 9.1 Konzepte der objektorientierten Programmierung ........................................... 184 9.2 Realisierung der Konzepte in PASCAL ........................................................... 186 9.3 Weiterführende Konzepte in Object Pascal in Hinblick auf die OOP .............. 209 10 Anwendungsorientierte Datenstrukturen in der systemnahen Programmierung ..... 210 10.1 Lineare Datenstrukturen ................................................................................. 216 10.1.1 Liste ........................................................................................................ 216 10.1.2 FIFO-Warteschlange .............................................................................. 222 10.1.3 Stack ....................................................................................................... 226 10.1.4 Beschränkter Puffer ............................................................................... 228 10.1.5 Hashtabelle ............................................................................................. 232 10.1.6 Menge und Teilmengensystem einer Grundmenge ............................... 237 10.2 Nichtlineare Datenstrukturen .......................................................................... 247 10.2.1 Prioritätsschlange ................................................................................... 247 10.2.2 Durchlaufen eines Baums ...................................................................... 257 10.2.3 Höhenbalancierter Baum ....................................................................... 266 11 Typische Verfahren in der systemnahen Programmierung: Ein kleiner Betriebs- systemkern .................................................................................................................... 277 11.1 Ein vereinfachtes Prozeßmodell ..................................................................... 283 11.2 Anwenderschnittstellen des Multitaskings ..................................................... 285 11.3 Prozeßverwaltung, Prozeßwechsel und Scheduling ....................................... 293 11.3.1 Die Unit Basics ...................................................................................... 294 11.3.2 Der Task Controll Block (TCB) eines Prozesses ................................... 297 11.3.3 Abläufe der Multitasking-Kontrolle ...................................................... 304 11.3.4 Alternative Schedulingstrategien ........................................................... 310 11.4 Prozeßsynchronisation .................................................................................... 313 11.4.1 Semaphore .............................................................................................. 320 11.4.2 Ereignisvariablen ................................................................................... 339 11.5 Nachrichtenaustausch zwischen Prozessen (Interprozeßkommunikation) ..... 344 11.5.1 Modellierung der Interprozeßkommunikation ....................................... 346 11.5.2 Ein Beispiel zum Nachrichtenaustausch ................................................ 354 12 Weiterführende Konzepte ....................................................................................... 357 12.1 Client-Server-Architektur ............................................................................... 357 12.1.1 Remote Procedure Call .......................................................................... 359 12.1.2 Simulation einer Client-Server-Architektur ........................................... 362 12.2 Das Monitorkonzept ....................................................................................... 366 13 Anhang ...................................................................................................................