HP OpenVMS Systems Documentation
The OpenVMS Frequently Asked Questions (FAQ)
2.15 What resources are available to OpenVMS software developers?
The HP Developer and Software Product Partner (DSPP) program is open to and intended to support and to assist HP OpenVMS software partners, consultants, and service providers:
DSPP provides members with various benefits, please see the website for details.
For those not familiar with the DSPP program or with its history, the DIGITAL Association of Software and Application Partners (ASAP) program and the DIGITAL Independent Software Vendors Network (ISVN) program were incorporated into the Compaq CSA program, and the CSA program has subsequently been incorporated into the HP DSPP program.
Please see Section 2.8.3 for additional details on the DSPP program.
So you have been instructed to write a school research paper on OpenVMS, and you need technical content on the OpenVMS Virtual Memory System, on any memory segmentation, on OpenVMS Resource Management, on the OpenVMS File System, on the OpenVMS user interface, etc.
Invariably, your professor/instructor/teacher will ask you a series of questions. Most commonly, the questions will request descriptions of one or more of the following items, and at varying levels of detail:
Any particular presentation or research paper, and particularly a scholastic presentation, can have many different potential target audiences, and very different presentation levels. Further, the usual underlying reason for scholastic presentations and scholastic research projects really has little to do with the subject matter, it is a task specifically intended to teach the student(s) (eg: you) how to perform the research. The instructor already knows most of (all of?) the information that you have been asked to collect.
For very technical details on OpenVMS and OpenVMS internals, the book you want is the Internals and Data Structures Manual (IDSM), available in your school or computing center library, and the IDSM can also be purchased. Additional technical details of the Alpha microprocessor are available in the Alpha Architecture Reference Manual documentation that is available for download. (Pointers to Alpha technical documentation are available in Section 14.6, and elsewhere.)
For higher-level (less technical) details, the OpenVMS documentation set is available on-line. The Programming Concepts and the File Systems manual are probably the best manuals to start with, depending on the particular level of detail the research requires.
And please understand the hesitation of various folks to provide you
with a completely-written research report on your topic. Why? We might
have to work with you after you graduate---you need to know how to
perform at least basic research on your own, regardless of the topic.
OpenVMS and the underlying hardware use various units of measurement
for disk and memory storage, and related abbreviations also typically
exist. This section covers the most common units, and the associated
A disk block is the minimum unit of disk storage allocation in OpenVMS.
Under OpenVMS VAX and OpenVMS Alpha, the disk volume block size is consistent, with each block containing 512 bytes.
The minimum disk allocation granularity actually permissible (in the ODS-2 and ODS-5 volume structures commonly used on OpenVMS) is determined on a per-volume basis, and is typically based on a combination of the total number blocks on the disk volume and the total size of the volume storage bitmap. The allocation granularity is known as the volume cluster factor---the cluster factor is the number of blocks in a disk cluster, and it is the smallest number of blocks that can be allocated on a particular disk volume.
Prior to OpenVMS V7.2, the maximum permissible size of the bitmap requires larger cluster factors as volume sizes increase. Starting with V7.2, the bitmap can be larger, and cluster factors as small as one block can be used.
The number of bytes in a file can be determined by multiplying the number of blocks allocated for the file times the number of bytes in a block. For sequential files (only), the FFB (XAB$W_FFB, in the File Header XAB) value can be used to find out how much of the last (XAB$L_EBK) block is used. FFB and EBK are meaningful only for sequential files, and only in a limited context---partial block allocations are not permitted. For other file formats, the EOF marker is not meaningful.
Disk allocations always occur only in units of the cluster factors, which can be from one block up to (potentially) clusters of eighteen blocks or more, depending on the volume cluster factor. (OpenVMS V7.2 and later optionally provide for a cluster factor of one up to volumes of approximately 137 gigabytes.)
OpenVMS assumes that the device driver and the underlying storage device will present the file system with addressable units of storage of 512 bytes in size, or the appearance of same. Various third-party CD-ROM devices, for instance, support only 2048 byte blocks, and such devices are incompatible with the standard OpenVMS device drivers.
To determine the number of bytes required for a file from DCL, one
option uses the f$file_attributes item EOF, multiplied by the size of a
block in bytes (512). This does not account for the unused space in the
last block of a sequential file, but it also does not have to
differentiate sequential files from other files.
A memory page is the minimum unit of memory allocation in OpenVMS. With OpenVMS VAX, the memory page size matches the disk block size: it is always 512 bytes.
With OpenVMS Alpha, the memory page size is variable, and it can range from 8192 bytes (8 kilobytes) up to 64 kilobytes. The current system page size can be determined using the sys$getsyi or f$getsyi PAGE_SIZE item. Programs with hardcoded constants for the memory page size (or page alignment) should always assume a page size of 64 kilobytes.
On OpenVMS I64, the memory page size is also variable, ranging from 4096 bytes (4 kilobytes) up to 256 megabytes (MB) and potentially up to 4 gigabytes (GB). As with OpenVMS Alpha, sys$getsyi and f$getsyi and the PAGE_SIZE itemcode can and should be used to determine the current system page size. In general, OpenVMS I64 will use a page size of 8 kilobytes, or larger.
On OpenVMS Alpha and on OpenVMS I64, a 512 byte area of memory---
equivalent in size to an OpenVMS VAX memory page---is often refered to
as a "pagelet".
The smallest granularity of disk storage addressing is called a disk block, or sometimes a disk sector. Groups of disk blocks are usually organized together into the smallest unit of storage that can be allocated, and this unit is called a disk cluster. The number of blocks in a cluster is the cluster factor, and is established when the disk volume is initialized.
Each individual disk block is composed of five hundred twelve (512) bytes, or one-half kilobyte. Each byte is comprised of eight bits. A bit represents the smallest unit of information, typically refered to as a one or a zero.
OpenVMS tends to uses base two notation for disk storage, while disk storage capacity specifications from most storage vendors will generally use base ten notation.
An OpenVMS disk block is 512 bytes in size; this is one-half kilobyte in base two notation.
The following table describes the prefix, the abbreviation, and the associated base ten (as used by marketing and by storage vendors) and base two (OpenVMS and various other operating systems) values.
The base ten representation of the 2**40 value is 1099511627776, which is obviously rather ugly. When viewed as a base eight or base sixteen (octal or hexadecimal, respectively) value, the value is far nicer. Specifically, the value is 10000000000 and 40000000 when represented in octal and hexadecimal, respectively.
OpenVMS operating system references to system and storage are generally to the base-two version (eg: 1024, in the case of a kilobyte or kilobit) while storage hardware references and hardware specifications are generally to the base-ten version (eg: 1000).
To convert OpenVMS disk blocks to (base two) kilobytes (KB; 1024 bytes), simply divide by two. To convert blocks to (base two) megabytes, divide by 2048. Blocks to (base two) gigabytes (GB), divide by 2097152. These particular divisions can also be performed using bitshifts: to divide a value by two, shift the binary value rightward by one bit position.
To convert OpenVMS disk blocks to (base ten) kilobytes, divide by approximately 1.953125.
For those folks with an interest in odd applications for prefixes, and particularly for those folks also rummaging around deep within the OpenVMS operating system, a microfortnight is approximately one second.
|HP OpenVMS Marketing|
|David Mathog's (quite useful) information about OpenVMS.|
Includes system cracking information that can be of interest to OpenVMS System Managers, and to OpenVMS Network and Security Managers. This information is available at the Deathrow cluster.
|The OpenVMS Freeware contains various examples of undocumented features and interfaces|
|Comparisons of UNIX and Linux shell commands and DCL Commands|
|Comparisons of emacs and OpenVMS text editor commands|
|Please see Table 3-2 for listings of introductory web sites and related materials.|
|An OpenVMS Programming FAQ|
|Tutorial information and tips for connecting OpenVMS systems to the Internet|
|Documentation and Specifications for DECnet Phase IV, DECnet task-to-task DCL examples, and a whole lot more.|
|HP OpenVMS Documentation|
|Please see Table 3-2 for listings of documentation web sites and related materials.|
|See Section 14.2.|
|Patch (ECO) Kits|
|For the HP Services FTP server hosting Various contract-access and non-contract access ECO (patch) kits, see section Section 5.17.|
|Catalogs and Pricing|
|HP Product QuickSpecs and product information|
|The HP Systems and Options Catalog (SOC) archive|
|Hardware and Software Archives|
|The VAXarchive, including hardware and software information|
|A VAX to Alpha upgrade diary|
|Scanned versions of old DIGITAL manuals from DFWCUG|
|A wide variety of HP VAX, Alpha, platform and other product documentation. Some introductory, some technical.|
|dtrwiz's Datatrieve website|