8
Hans Joachim Müschenborn OS/2 System- und Netzwerkprogrammierung Multitasking • Interprozeßkommunikation Multithreading • DB/2-lntegration tewi Verlag

OS/2 System- und Netzwerkprogrammierung

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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