Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Suspended Operation Restart in Queued System

IP.com Disclosure Number: IPCOM000100721D
Original Publication Date: 1990-May-01
Included in the Prior Art Database: 2005-Mar-16
Document File: 3 page(s) / 148K

Publishing Venue

IBM

Related People

Horton Busboom, LJ: AUTHOR [+2]

Abstract

The figure illustrates a technique which adds a current position pointer to a single-queue-based bus transport mechanism. This alleviates problems associated with time and code involved in de-queuing and queuing to a new queue following an operation suspension.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 41% of the total text.

Suspended Operation Restart in Queued System

       The figure illustrates a technique which adds a current
position pointer to a single-queue-based bus transport mechanism.
This alleviates problems associated with time and code involved in
de-queuing and queuing to a new queue following an operation
suspension.

      In operating systems, queues of operations are common. The
usual way of manipulating queues is to move an element from one queue
to another as the state of the queued element changes.  This involves
many queue searches and queue pointer manipulations.   The elements
may be left in a single queue, but then the queue becomes longer.
Because of this, it takes longer to locate new elements as old
elements that are waiting for responses, for further processing, or
for the clearing of error states accumulating at the beginning of the
queue.

      The traditional way to deal with such situations is to move
operations in "temporary hold" from the "active" queue to a "hold"
queue.  There may be many queues indicating the states of the
operations on the queues.  This proliferation of queues complicates
the software and decreases performance because software must
continually move control blocks from queue to queue.  The model of
the queue, the queue processor (the consumer of the producer-consumer
model), operates only on the first element of the queue.

      The solution is to status information to the operation control
blocks that indicate the current status of the operation.  Such
information includes whether the operation has been started, a
response has been received, the operation has completed, or the
operation was in hold state due to an error condition.  All operation
requests received are added to a common queue.  The common queue
holds the control blocks for all active operations. It is doubly
linked to allow easy insertion and removal.

      If an operation must be held, the hold flags in the control
block are set.  When the queue processor looks for work, it skips
control blocks with the hold flags set. After a control block is
successfully processed, the processing program sets a flag in the
control block that indicates that it should not be processed again.
(This flag is reset if the operation later turns out to be in error;
one example is if the target of the operation cannot accept the
operation.)

      The current position pointer is a modification to the
doubly-linked list model of a queue that reduces the queue searching
overhead.  It locates the next operation to be performed and
logically divides the queue into two sections: processed and
unprocessed, which are considered two separate queues (but queue
pointers aside from the current position pointer need not be modified
to move an element from one to the other).

      As operations arrive, they are inserted at the end of the
Common Queue (see the figure).  Initially the start pointer, the end
pointer, and the current po...