Browse Prior Art Database

Generalized Control Block Queueing Facility

IP.com Disclosure Number: IPCOM000078883D
Original Publication Date: 1973-Mar-01
Included in the Prior Art Database: 2005-Feb-26
Document File: 5 page(s) / 53K

Publishing Venue

IBM

Related People

Cole, RG: AUTHOR [+2]

Abstract

Within a large operating system, there are many different types of control blocks arranged in different types of queues. It has been customary for the programmers having responsibility for a particular type of control block or queue, to write their own queueing programs. A result is that there is a duplication of effort and also a proliferation of different approaches for handling similar queues. To overcome this, a generalized queueing facility (GQF) is provided that is available to all programmers for handling the control blocks. The general facility simplifies the job of a programmer, improves reliability and expendability by use of a simple and consistent technique for queueing, enhances protection by allowing for separation of queues, and enhances recovering by allowing for validation and reconstruction of queues.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 33% of the total text.

Page 1 of 5

Generalized Control Block Queueing Facility

Within a large operating system, there are many different types of control blocks arranged in different types of queues. It has been customary for the programmers having responsibility for a particular type of control block or queue, to write their own queueing programs. A result is that there is a duplication of effort and also a proliferation of different approaches for handling similar queues. To overcome this, a generalized queueing facility (GQF) is provided that is available to all programmers for handling the control blocks. The general facility simplifies the job of a programmer, improves reliability and expendability by use of a simple and consistent technique for queueing, enhances protection by allowing for separation of queues, and enhances recovering by allowing for validation and reconstruction of queues.

To accomplish this, the facility is designed to support different queueing techniques including a first-in first-out (FIFO) queue, a last-in first-out (LIFO) queue, a priority ordered queue and a user defined queue. Each queue accessed through use of the facility is represented by a queue descriptor block (QDB) which has the format shown in the figure. While most of the fields are self-explanatory, a word of explanation is necessary for others. The queueing attributes field would contain a number of bits representing the type of queue associated with the QDB such as LIFO, FIFO, etc. The lock word type is applicable to a system having multiple locks of different types. This field defines the type and the "lock address" fields would provide an address of the lock word, where it is applicable.

When a queue is chained from another queue, its QDB is obtained at the time the base queue is created. The QDBs can be initialized in a number of ways. One way is to execute instructions initializing each QDB field. Another way would be to use macro instructions, where a QDB is represented as a series of declare constants statements in a macro library. The program would invoke the macro and have the data area within the program. At execution time, the data area could then be moved into the area gotten for the QDB. Still another way would be to define the QDBs as a member of a program library and simply load the QDBs.

Macro instructions can be provided to call the facility for the basic queueing functions of enqueing and dequeing. In addition, a macro can be provided for queue searching for the purpose of updating a queue, determining the queue depth, or returning the addresses of all elements on a queue satisfying user specified criteria. The facility can also provide a queue validation function, where a functional recovery routine suspects that queue is invalid. Specific exemplary macros follow below. Basic Queueing

Macros are provided to be used in calling GQF for the basic queueing functions of enqueue and dequeue. The macro is: {GQFENQ} [ (NOLOCK)] QDBAD(gdb) ELAD(element)

{GQFDEQ}...