Preface |
Preface
|
Preface
|
Chapter 1 |
1
|
Overview of Manuals and Introduction to Development on OpenVMS Systems
|
1.1
|
Overview of the Manual
|
1.2
|
Overview of the OpenVMS Operating System
|
1.3
|
Components of the OpenVMS Operating System
|
1.3.1
|
OpenVMS Systems on Multiple Platforms
|
1.3.1.1
|
System Compatibility and Program Portability Across Platforms
|
1.3.2
|
OpenVMS Computing Environments
|
1.3.2.1
|
Open System Capabilities
|
1.3.2.2
|
Application Portability
|
1.3.2.2.1
|
Other Application Portability Features
|
1.3.3
|
Distributed Computing Capabilities
|
1.3.3.1
|
Client/Server Style of Computing
|
1.3.3.2
|
OpenVMS Client/Server Capabilities
|
1.4
|
The OpenVMS Programming Environment
|
1.4.1
|
Programming to Standards
|
1.4.1.1
|
Common Environment for Writing Code
|
1.4.1.2
|
Common Language Environment
|
1.5
|
OpenVMS Programming Software
|
1.5.1
|
Creating Program Source Files
|
1.5.2
|
Creating Object Files
|
1.5.3
|
Creating Runnable Programs
|
1.5.4
|
Testing and Debugging Programs
|
1.5.4.1
|
Special Modes of Operation for Debugging
|
1.5.5
|
Using Other Program Development Utilities
|
1.5.6
|
Managing Software Development Tasks
|
1.6
|
Using Callable System Routines
|
1.6.1
|
Using the POSIX Threads Library Routines
|
1.6.2
|
Using OpenVMS Run-Time Library Routines
|
1.6.3
|
Using OpenVMS System Services
|
1.6.4
|
Using OpenVMS Utility Routines
|
1.7
|
Programming User Interfaces
|
1.8
|
Optional HP Software Development Tools
|
1.9
|
Managing Data
|
1.9.1
|
RMS Files and Records
|
1.9.2
|
RMS Utilities
|
Part 1 |
Part 1
|
Process and Synchronization
|
Chapter 2 |
2
|
Process Creation
|
2.1
|
Process Types
|
2.2
|
Execution Context of a Process
|
2.3
|
Modes of Execution of a Process
|
2.4
|
Creating a Subprocess
|
2.4.1
|
Naming a Spawned Subprocess
|
2.4.2
|
Using LIB$SPAWN to Create a Spawned Subprocess
|
2.4.3
|
Using the C system() Call
|
2.4.4
|
Using SYS$CREPRC to Create a Subprocess
|
2.4.4.1
|
Disk and Directory Defaults for Created Processes
|
2.5
|
Creating a Detached Process
|
2.6
|
Process Quota Lists
|
2.7
|
Debugging a Subprocess or a Detached Process
|
2.8
|
Kernel Threads and the Kernel Threads Process Structure (Alpha and I64 Only)
|
2.8.1
|
Definition and Advantages of Kernel Threads
|
2.8.2
|
Kernel Threads Features
|
2.8.2.1
|
Multiple Execution Contexts Within a Process
|
2.8.2.2
|
Efficient Use of the OpenVMS and POSIX Threads Library Schedulers
|
2.8.2.3
|
Terminating a POSIX Threads Image
|
2.8.3
|
Kernel Threads Model and Design Features
|
2.8.3.1
|
Kernel Threads Model
|
2.8.3.2
|
Kernel Threads Design Features
|
2.8.3.2.1
|
Process Structure
|
2.8.3.2.2
|
Access to Inner Modes
|
2.8.3.2.3
|
Scheduling
|
2.8.3.2.4
|
ASTs
|
2.8.3.2.5
|
Event Flags
|
2.8.3.2.6
|
Process Control Services
|
2.8.4
|
Kernel Threads Process Structure
|
2.8.4.1
|
Process Control Block (PCB) and Process Header (PHD)
|
2.8.4.1.1
|
Effect of a Multithreaded Process on the PCB and PHD
|
2.8.4.2
|
Kernel Thread Block (KTB)
|
2.8.4.3
|
Floating-Point Registers and Execution Data Blocks (FREDs)
|
2.8.4.4
|
Kernel Threads Region
|
2.8.4.5
|
Per-Kernel Thread Stacks
|
2.8.4.6
|
Per-Kernel-Thread Data Cells
|
2.8.4.7
|
Summary of Process Data Structures
|
2.8.4.8
|
Kernel Thread Priorities
|
2.9
|
THREADCP Command Not Supported on OpenVMS I64
|
2.10
|
KPS Services (Alpha and I64 only)
|
Chapter 3 |
3
|
Process Communication
|
3.1
|
Communication Within a Process
|
3.1.1
|
Using Local Event Flags
|
3.1.2
|
Using Logical Names
|
3.1.2.1
|
Creating and Accessing Logical Names
|
3.1.3
|
Using Command Language Interpreter Symbols
|
3.1.3.1
|
Local and Global Symbols
|
3.1.3.2
|
Creating and Using Global Symbols
|
3.1.4
|
Using the Common Area
|
3.1.4.1
|
Creating the Process Common Area
|
3.1.4.2
|
Common I/O Routines
|
3.1.4.3
|
Modifying or Deleting Data in the Common Block
|
3.1.4.4
|
Specifying Other Types of Data
|
3.2
|
Communication Between Processes
|
3.2.1
|
Using Logical Name Tables
|
3.2.2
|
Mailboxes
|
3.2.2.1
|
Creating a Mailbox
|
3.2.2.2
|
Creating Temporary and Permanent Mailboxes
|
3.2.2.3
|
Assigning an I/O Channel Along with a Mailbox
|
3.2.2.4
|
Reading and Writing Data to a Mailbox
|
3.2.2.5
|
Using Synchronous Mailbox I/O
|
3.2.2.6
|
Using Immediate Mailbox I/O
|
3.2.2.7
|
Using Asynchronous Mailbox I/O
|
3.3
|
Intracluster Communication
|
3.3.1
|
Programming with Intracluster Communications
|
3.3.1.1
|
ICC Concepts
|
3.3.1.2
|
Design Considerations
|
3.3.1.2.1
|
Naming
|
3.3.1.2.2
|
Message Ordering
|
3.3.1.2.3
|
Flow Control
|
3.3.1.2.4
|
Transfer Sizes and Receiving Data
|
3.3.1.2.5
|
Transfer Sizes and Transceive
|
3.3.1.2.6
|
Disconnection
|
3.3.1.2.7
|
Error Recovery
|
3.3.1.3
|
General Programming Considerations
|
3.3.1.4
|
Servers
|
3.3.1.4.1
|
Connection Events
|
3.3.1.4.2
|
Disconnection Events
|
3.3.1.5
|
Clients
|