QIO
Encyclopedia
QIO is a term used in several computer operating system
s designed by the former Digital Equipment Corporation
(DEC
) of Maynard
, Massachusetts
.
I/O operations on these systems are initiated by issuing a QIO call to the kernel. The call returns immediately and if the I/O operation is successfully enqueued, it will be done asynchronously with its completion signaled by the raising of an event flag
and—if requested—the issuance of an Asynchronous System Trap
(AST
) to the calling process/task.
Optionally, the call may be issued as QIOW (Queue I/O and Wait for completion), allowing synchronous I/O. In this case, the wait-for-event-flag operation is combined so the call does not return until the I/O operation completes or fails.
The following operating systems implemented QIO(W):
ODS-1 file system on RSX-11
was provided by a process called F11ACP; originally, the Files-11 ODS-2 file system was provided by F11BACP on VMS
, but the functionality of F11BACP was later rearchitected into the VMS kernel to save the overhead of process context switches and is now called an XQP (eXtended Qio Processor).
By appropriate choices of the above parameters, it is possible to do both terminal input and output with the one call, there is no need to use the regular IO$_WRITEVBLK call for terminal output at all.
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s designed by the former Digital Equipment Corporation
Digital Equipment Corporation
Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...
(DEC
Digital Equipment Corporation
Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...
) of Maynard
Maynard, Massachusetts
Maynard is a town in Middlesex County, Massachusetts, United States. As of the 2010 census, the town population was 10,106.- History :Maynard, located on the Assabet River, was incorporated as an independent municipality in 1871. Prior to that it was known as 'Assabet Village' but was legally...
, Massachusetts
Massachusetts
The Commonwealth of Massachusetts is a state in the New England region of the northeastern United States of America. It is bordered by Rhode Island and Connecticut to the south, New York to the west, and Vermont and New Hampshire to the north; at its east lies the Atlantic Ocean. As of the 2010...
.
I/O operations on these systems are initiated by issuing a QIO call to the kernel. The call returns immediately and if the I/O operation is successfully enqueued, it will be done asynchronously with its completion signaled by the raising of an event flag
Event flag
An event flag is a process synchronization primitive in the OpenVMS operating system. It has two possible states, set or cleared. The following basic primitive operations are provided:* Set event flag * Clear event flag...
and—if requested—the issuance of an Asynchronous System Trap
Asynchronous System Trap
Asynchronous system trap refers to a mechanism used in several computer operating systems designed by the former Digital Equipment Corporation of Maynard, Massachusetts....
(AST
Asynchronous System Trap
Asynchronous system trap refers to a mechanism used in several computer operating systems designed by the former Digital Equipment Corporation of Maynard, Massachusetts....
) to the calling process/task.
Optionally, the call may be issued as QIOW (Queue I/O and Wait for completion), allowing synchronous I/O. In this case, the wait-for-event-flag operation is combined so the call does not return until the I/O operation completes or fails.
The following operating systems implemented QIO(W):
- RSX-11RSX-11RSX-11 is a family of real-time operating systems mainly for PDP-11 computers created by Digital Equipment Corporation , common in the late 1970s and early 1980s. RSX-11D first appeared on the PDP-11/40 in 1972...
(including all of the variants) - RSTS/ERSTS/ERSTS is a multi-user time-sharing operating system, developed by Digital Equipment Corporation , for the PDP-11 series of 16-bit minicomputers. The first version of RSTS was implemented in 1970 by DEC software engineers that developed the TSS-8 time-sharing operating system for the PDP-8...
(synchronous only, emulated by the RSX run-time systemRun-time systemA run-time system is a software component designed to support the execution of computer programs written in some computer language...
) - VMS
QIO arguments in VMS
Under VMS, the arguments to the QIO call are:- The event flagEvent flagAn event flag is a process synchronization primitive in the OpenVMS operating system. It has two possible states, set or cleared. The following basic primitive operations are provided:* Set event flag * Clear event flag...
to set when the operation completes. It isn't possible to not specify an event flag; flag 0 is valid. It is perfectly permissible to have multiple simultaneous operations which set the same event flag on completion; it is then up to the application to sort out any confusion this might cause, or just ignore that event flag.
- The channel, a small integer previously associated with the device. At this level, all operations on disk files and directories (filename parsing, directory lookup, file opening/closing) are done by appropriate QIO requests.
- The function code to be performed. 6 bits are assigned to the basic code (such as read, write), with a further 10 bits for "modifiers" whose meaning depend on the basic code.
- The optional I/O status block (IOSB) which is cleared by the QIO call, and filled in on completion of the I/O operation. The first two bytes hold the completion status (success, end of file reached, timeout, I/O error, etc.), while the next two bytes normally return the number of bytes read or written in the operation. The meaning, if any, of the last four bytes is operation-dependent.
- The optional ASTAsynchronous System TrapAsynchronous system trap refers to a mechanism used in several computer operating systems designed by the former Digital Equipment Corporation of Maynard, Massachusetts....
routine to invoke when the operation completes.
- An additional parameter (whose meaning is up to the caller) to be passed to the AST routine.
- A partially-standardized list of up to six parameters known as P1 through P6. The first two parameters typically specify the I/O buffer starting address (P1), and the I/O byte count (P2). The remaining parameters vary with the operation, and the particular device. For example, for a computer terminalComputer terminalA computer terminal is an electronic or electromechanical hardware device that is used for entering data into, and displaying data from, a computer or a computing system...
, P3 might be the time to allow for the read to complete whereas, for a disk drive, it might be the starting block number of the transfer.
QIO completion
There are three different ways to sense when the queued I/O operation has completed:- When the event flag becomes set.
- When the first two bytes of the IOSB become nonzero.
- When the AST routine executes.
Unusual QIOs that require complex processing
Simple QIOs, such as read or write requests, are either serviced by the kernel itself or by device drivers. Certain more complicated requests, specifically those involving tape drives and file-level operations, were originally executed by an Ancillary Control Processor (ACP) (a special purpose task with its own address mapping). The Files-11Files-11
Files-11, also known as on-disk structure, is the file system used by Hewlett-Packard's OpenVMS operating system, and also by the older RSX-11...
ODS-1 file system on RSX-11
RSX-11
RSX-11 is a family of real-time operating systems mainly for PDP-11 computers created by Digital Equipment Corporation , common in the late 1970s and early 1980s. RSX-11D first appeared on the PDP-11/40 in 1972...
was provided by a process called F11ACP; originally, the Files-11 ODS-2 file system was provided by F11BACP on VMS
OpenVMS
OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is a computer server operating system that runs on VAX, Alpha and Itanium-based families of computers. Contrary to what its name suggests, OpenVMS is not open source software; however, the source listings are available for purchase...
, but the functionality of F11BACP was later rearchitected into the VMS kernel to save the overhead of process context switches and is now called an XQP (eXtended Qio Processor).
IO$_READPROMPT
Probably the most complex single QIO request possible is the VMS terminal driver's IO$_READPROMPT call with the IO$M_TIMED modifier; this QIO requires all six additional parameters:- P1 is the address of the buffer into which the input characters are received
- P2 is the length of the buffer, limiting the maximum number of characters to read. If the buffer is filled, the read will complete successfully, even if the user does not type a line-terminator character. Zero is allowed, in which case the read will terminate successfully with zero characters read.
- P3 is the maximum number of seconds to wait for more input. This is only used if the IO$M_TIMED modifier is present, and a value of zero means zero seconds: the read will terminate immediately, so the only possible input will be whatever had been "typed ahead" by the user.
- P4 is the address of the optional "terminator mask", specifying which ASCII characters terminate the read. If omitted, this defaults to the usual VMS line delimiters including carriage-return (but not line-feed). It is possible to specify a mask with no line terminators, in which case the read will only complete when the buffer is full, or the timeout has elapsed.
- P5 is the address of a prompt string to be displayed to the user before accepting input. The advantage of providing this prompt, instead of as a prior write operation, is automatic redisplay in any situation requiring a refresh of the input line while the read is in progress (such as after an operator message has been broadcast to the terminal, or the user hits CTRL/R to redisplay the line).
- P6 is the length of the prompt string.
By appropriate choices of the above parameters, it is possible to do both terminal input and output with the one call, there is no need to use the regular IO$_WRITEVBLK call for terminal output at all.