os/2 system- und netzwerkprogrammierung
TRANSCRIPT
Hans Joachim Müschenborn
OS/2 System- und Netzwerkprogrammierung
Multitasking • Interprozeßkommunikation Multithreading • DB/2-lntegration
tewi Verlag
Inhaltsverzeichnis
/ I Inhaltsverzeichnis 5
In eigener Sache 13
Copyright 13
Danksagungen 14
1 Einleitung 15
2 Überblick über die 32-Bit-Version von OS/2 21
2.1 Voraussetzungen 21 2.1.1 Hardware 21 2.1.2 Software 25 2.1.3 Dokumentation 28
Systemeigenschaften 39
Unterstützung der Intel-Prozessoren 45
Speicherverwaltung 47 2.4.1 Das Fiat Memory Model 48 2.4.2 Memory Objects 48 2.4.3 Guard Pages 49 2.4.4 Virtuelle Speicherverwaltung 49 2.4.5 Speicherschutzmechanismen 50
Datei-Systeme 51 2.5.1 Installierbare Datei-Systeme 52 2.5.2 Das File-Allocation-Table-Datei-System (FAT) 52 2.5.3 Das High-Performance-File-System (HPFS) 53 2.5.4 Extended Attributes 54
Multitasking 55 2.6.1 Ebenen des Multitaskings 56 2.6.2 Dispatching (CPU-Zeitverteilung) 57 2.6.3 Standard-Tasks 58
Interprozeßkommunikation 59 2.7.1 Semaphoren 60 2.7.2 Pipes (Kommunikationsleitungen) 61
Inhalt
2.7.3 Queues (Warteschlangen) 62 2.7.4 Shared Memory (Öffentlicher Speicher) 63
2.8 Presentation Manager y 64 2.8.1 Die Fenster-Umgebung 64 2.8.2 Die graphische Benutzeroberfläche 67 2.8.3 Ressourcen 74 2.8.4 Datenaustausch zwischen Applikationen 75 2.8.5 Information Presentation Facility (IPF) 77 2.8.6 Hooks 79 2.8.7 Atom-Tabellen 79 2.8.8 Window-Timer (Fenster-Zeitgeber) 80
2.9 Workplace-Shell (WPS) 81 2.9.1 WPS-Desktop 82 2.9.2 WPS-Objects 82 2.9.3 Drag & Drop 83
2.10 Device-Driver (Geräte-Treiber) 84 2.10.1 Virtual Device Drivers (VDDs) 86 2.10.2 Physical Device Drivers (PDDs) 86 2.10.3 Presentation Drivers (PDs) 87
2.11 Errors & Exceptions 87 2.11.1 Error-Handling (Fehler-Behandlung) 87 2.11.2 Exception Handling (Ausnahme-Behandlung) 88
2.12 Text-Messages & National Language Support (NLS) 89 2.12.1 Text-Messages (Text-Meldungen) 89 2.12.2 National Language Support (NLS) 89
2.13 Das OS/2-API 90
3 OS/2-Anwendungsentwicklung 93
3.1 Komponenten eines OS/2-Programms 93
3.2 Die IBM-WorkFrame/2 (WF/2) 97 3.2.1 Action Profiles 97 3.2.2 Einfache Projekte 103 3.2.3 Zusammengesetzte Projekte HO 3.2.4 Compiler-und Link-Optionen 111 3.2.5 Erzeugung der MAKE-Datei 113
4 Intel's 80386, 80486 und Pentium 119
4.1 Die 80386-Architektur 119
4.2 Adressierungsarten 120
6 \
Inhalt
4.3
4.4
4.5
4.2.1 4.2.2,. 4.2.3
Paging
Real Mode Protected Mode Protected Mode (linear)
Task-Wechsel
Schutzmechanismen 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8
Segement- und Page-Attribute Segmentgröße Privilegringe Gates Reservierte Befehle Multi-Processing Intel™ 80486-Unterstützung Intel™ Pentium-Unterstützung
120 120 121
122
123
123 124 124 125 126 126 127 127 128
5 Allgemeine OS/2-API-Symbole 129
5.1 Definitionen 129
5.2 Typ-Deklarationen 130
5.3 Makro-Definitionen 133
6 Speicherverwaltung 135
6.1 Virtuelle Adreßräume 138 6.1.1 Der Systemadreßraum 138 6.1.2 Die Prozeßregionen 139 6.1.3 Speicherobjekte 142 6.1.4 Speicherseiten 144
6.2 Physikalische Speicherverwaltung 147 6.2.1 Umsetzung virtueller in physikalische Adressen 148 6.2.2 Seitenverwaltung 152
6.3 Funktionsübersicht 155 6.3.1 OS/2-API-Funktionen 155 6.3.2 C-Funktionen 156 6.3.3 Speicherverwaltung in Ring 0 159
6.4 Funktionsbeschreibungen 161 6.4.1 OS/2-Speicherfunktionen 161 6.4.2 C-Speicherfunktionen 175
• 6.4.3 C-Speichermanipulation 182 6.4.4 Ring-O-Speicherfunktionen 185
Inhalt
7 Dateiverwaltung 201
7.1 OS/2-Festplattenorganisation 204 7.1.1 Partitionen 205 7.1.2 Volumes (logische Laufwerke) 206 7.1.3 Verzeichnisse 207 7.1.4 Dateien 208
7.2 OS/2-Dateisysteme 208 7.2.1 Das FAT-Dateisystem 210 7.2.2 Installierbare Dateisysteme 211 7.2.3 Das HPFS-Dateisystem 212 7.2.4 Datei- und Verzeichnisnamen 214
7.3 Datei-Attribute 223 7.3.1 Standard-Attribute 223 7.3.2 Erweiterte Attribute 224 7.3.3 Vordefinierte erweiterte Attribute 228
7.4 Funktionsübersicht 235 7.4.1 API-Funktionen 235 7.4.2 Datenstrukturen 241 7.4.3 C-Funktionen 248 7.4.4 Datenstrukturen 253
s 7.5 Funktionsbeschreibungen 254
7.5.1 OS/2-Dateiverwaltung 254 7.5.2 OS/2-Verzeichnis- und Laufwerksverwaltung 307 7.5.3 OS/2-Umgebungs- und Pfadfunktionen 314 7.5.4 OS/2-Dateisystemverwaltung 321 7.5.5 C-Dateiverwaltung 331 7.5.6 C-Verzeichnis- und Laufwerksverwaltung 340 7.5.7 Umgebungs- und Pfadfunktionen (C) 346
8 Multitasking 353
8.1 Sessions / 358
8.2 Prozesse 360
8.3 Threads 363
8.4 Funktionsübersichf 364 8.4.1 OS/2-API-Funktionen 364 8.4.2 OS/2-API-Datenstrukturen 365 8.4.3 C-Funktionen 367 8.4.4 C-Datenstrukturen 369
8
Inhalt
Funktionsbeschreibungen 8.5.1 OS/2-Sessions 8.5.2 OS/2-Prozesse 8.5.3 OS/2-Threads 8.5.4 C-Prozesse 8.5.5 C-Threads
CPU-Zeitverteilung 8.6.1 Allgemeines 8.6.2 Prioritäten
Komplexere Beispiele 8.7.1 Threads
Interprozeß-Kommunikation
Semaphoren 9.1.1 Allgemeines 9.1.2 Ereignis-Semaphoren 9.1.3 Exklusivitäts-Semaphoren 9.1.4 Mehrfach-Semaphoren 9.1.5 Anonym und benannte Semaphoren 9.1.6 Funktionsdeklarationen 9.1.7 Datenstrukturen 9.1.8 Funktionsbeschreibungen
Pipes (Leitungen) 9.2.1 Anonyme Pipes 9.2.2 Benannte Pipes 9.2.3 Funktionsdeklarationen 9.2.4 Funktionsbeschreibungen
Queues (Warteschlangen) 9.3.1 Allgemeines 9.3.2 Funktionsdeklarationen 9.3.3 Datenstrukturen 9.3.4 Funktionsbeschreibungen
Shared Memory (Öffentlicher Speicher) 9.4.1 Allgemeines 9.4.2 Funktionsdeklarationen 9.4.3 Funktionsbeschreibungen
369 369 379 392 404 414
418 418 419
426 426
431
433 433 434 436 437 439 440 442 442
482 484 487 496 499
547 547 550 551 551
567 567 568 569
9
Inhalt r
10 Ausnahme-Behandlung 577
10.1 Allgemeines 577 10.1.1 System-Ausnahmen 578 10.1.2 Signale 580 10.1.3 Must-Complete-Bereiche 582 10.1.4 Exception-Handler 582
10.2 Funktionsdeklarationen 584 10.2.1 Exception-Handling 584 10.2.2 Signal-Exceptions 584 10.2.3 Must-Complete Funktionen 584 10.2.4 Datenstrukturen 585
10.3 Funktionsbeschreibungen 586 10.3.1 Registrieren eines Exception-Handlers 586 10.3.2 Entfernen eines Exception-Handlers 588 10.3.3 Ausführen und Löschen der Exception-Handler 589 10.3.4 Erzeugen einer Ausnahme 590 10.3.5 Senden eines Signals 591 10.3.6 Empfangsbereitschaft für weitere Signale 591 10.3.7 Definition des Signal-Fokus 592 10.3.8 Must-Complete-Bereiche 593
11 Weitere Systemfunktionen 595
11.1 Datumsfunktionen 595
11.2 Zeitgeber 595
11.3 Fehlerbehandlung 596
11.4 Funktionsdekiarationen 597 11.4.1 Datumsfunktionen 597 11.4.2 Zeitgeber 597 11.4.3 Fehlerbehandlung 598 11.4.4 Datenstrukturen 598
11.5 Funktionsbeschreibungen 599 11.5.1 Datumsfunktionen 599 11.5.2 Zeitgeber 600 11.5.3 Fehlerbehandlung 607
12 Client/Server-Modelle 61 I
12.1 Multitasking unter OS/2-PM 614 12.1.1 Struktur einer PM-Anwendung 616 12.1.2 Mehrere Prozesse 664 12.1.3 Mehrere Threads 665
10
Inhalt
12.2 Fehlerbehandlung 668 12.2.1 Allgemeines 668 12.2.2 Das ERROR-API 669 12.2.3 Datenstrukturen 670 12.2.4 Compiler-Variable 670 12.2.5 Funktionen des ERROR-Moduls 670
12.3 Thread-Steuerung 680 12.3.1 Allgemeines 680 12.3.2 Das THREAD-API 684 12.3.3 Datenstrukturen 684 12.3.4 Funktionen der THREAD-DLL 685
12.4 Dialog-Funktionen 698 12.4.1 Allgemeines 698 12.4.2 DIALOG-API 698 12.4.3 Datenstrukturen 698 12.4.4 Funktionen der DIALOG-DLL 699
12.5 Nachrichtenverteilung über Pipes 703 12.5.1 Ideen und Konzepte 703 12.5.2 Named-Pipe-Server 708 12.5.3 Das Named-Pipe-API 752 12.5.4 Named-Pipe-Guard 791 12.5.5 Beispiel eines NP-Clients 809
12.6 Nachrichten-Archivierung 817 12.6.1 Einführung 817 12.6.2 Message-Logging-Server 818 12.6.3 Das Message-Logging-API 834 12.6.4 Message-Logging-Guard 854 12.6.5 Der NP-Server als ML-Client 871
12.7 DB/2-Integration 873 12.7.1 Voraussetzungen für den DB-Server 875 12.7.2 Der DB-Server als DB/2-Client 882 12.7.3 NP-DB-Clients 920
A Abbildungsverzeichnis 941
B Tabellenverzeichnis 951
C Verzeichnis der Programmlistings 957
S Stichwortverzeichnis 969