top - download
⟦43db452a1⟧ Wang Wps File
Length: 26892 (0x690c)
Types: Wang Wps File
Notes: FIX/1000/PSP/038
Names: »5205A «
Derivation
└─⟦c5670ecfe⟧ Bits:30006140 8" Wang WCS floppy, CR 0516A
└─ ⟦this⟧ »5205A «
WangText
…10……09……86…1
…02…
…02…
…02…
…0e……0e…
5205A/aml…02…FIX/1000/PSP/0038
…02…OK/850529…02……02…
FIKS
SYSTEM
SPECIFICATION
…02……02…FK7809…0f…
4.1.4 S̲t̲o̲r̲a̲g̲e̲ ̲a̲n̲d̲ ̲R̲e̲t̲r̲i̲e̲v̲a̲l̲ ̲S̲u̲b̲s̲y̲s̲t̲e̲m̲
4.1.4.1 F̲u̲n̲c̲t̲i̲o̲n̲s̲
The SRS is the interface to the HBD. It supports storage
on the HDB, deletion of messages on the HDB retrieval
of messages from the HDB and retrieval of message catalog
information (Message Log).
S̲t̲o̲r̲a̲g̲e̲
All message categories (non control messages) are stored
except for Special Handling Category messages.
D̲e̲l̲e̲t̲i̲o̲n̲
The SRS maintains the HDB by deletion of oldest messages.
Deletion is performed when there is no space available
for storage of next message. At this event messages
are deleted to insure:
1. A preset amount of time for storage
2. A preset number of messages
3. A preset amount of space for message text.
R̲e̲t̲r̲i̲e̲v̲a̲l̲
The SRS locates messages which are requested on the
HDB on the basis of:
MSG-ID and DTG
DTG-range
DTG-range + SIC
The addresses of the located messages are handed to
the requestor by entering (a) MTCB(s) containing the
message(s) address(es) to the requestor's queue. The
SRS locates message characteristics on MRF for Message
Log printout.
The storage and retrieval subsystem is implemented
as two separate processes:
SRS process: Storage and deletion
SRR process: Retrieval
4.1.4.2 S̲u̲b̲s̲y̲s̲t̲e̲m̲ ̲B̲l̲o̲c̲k̲ ̲D̲i̲a̲g̲r̲a̲m̲
In Figure 4.1.4.2 the SRS subsystem block diagram is
found. Details in the block diagram are results of
the design discussion in 4.1.4.3.2.
Main events are marked with numbers
1. Processing of storage requests
2. Eventual updates of retrieval files
3. Retention (deletion of messages)
4. Retrieval request
The subsystem has two input queues:
SRS1 for storage requests (storage queue) and
SRS2 for retrieval requests (retrieval queue)
Both queues are handled in a First-in and First-out
manner.
The SRS1 queue is maintained by the Storage Process.
The Storage Process verifies that space is available
for the next message in the Historical Data Base, if
space is not available a prescribed amount of space
is obtained by deletion of oldest messages on the HDB
(Retention, 3). When space is available the in memory
subsets of the message retrieval files (DTGF and MRF)
are updated with retrieval relevant information and
a transfer of the message text is performed from the
Input file to the Message Text File (1). The MTCB
for the message is updated with the MTF address.
Whenever the in-memory subsets of the DTGF and/or MRF
are full, a transfer to disc is made (2).
(For details refer to 4.1.4.3.2.3.1)
The SRS2 queue is maintained by the Retrieval Process.
The Retrieval Process processes request for retrieval
of messages from the HDB.
Figure 4.1.4.2…01…SRS Block Diagram
Retrieval is performed with one of 3 possible criteria
a. DTG + MSG-ID (most frequent)
b. DTG-range (next most frequent)
c. DTG-range + SIC (least frequent)
Retrieval (4) is performed by access to the message
retrieval files (DTGF, MRF) to find up to 10 messages
which satisfy the criteria.
If no message is found or 11 or more messages are found,
a notification is sent to the requestor. For 1-10
messages found, the addresses of the message(s) on
the Message Text File are handed to the requestor.
(For details refer to 4.1.4.3.1.3.2).
Whenever a message is queued to the requestor's queue,
logging is performed by call to the Log Procedure LOG
̲JOURNAL.
Information logged are:
MSG ̲ID
Call ̲type (retrieve type)
Terminal identification
Message Log retrieval (5) is performed by access to
the DTGF to identify MRF records corresponding to the
requested time interval.
4.1.4.3 D̲e̲s̲i̲g̲n̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲
4.1.4.3.1 D̲e̲s̲i̲g̲n̲ ̲A̲s̲s̲u̲m̲p̲t̲i̲o̲n̲s̲
1. The number of retrieve requests is 10% of the number
of storage requests.
2. Busy second storage request rate is max. 3/S.
3. Busy minute storage request rate is max. 0.9/S.
4. Busy hour storage request rate is max. 0.3/S.
5. The relative frequency of retrieval requests is
MSG-ID+DTG more than 80%
DTG-range 0-20%
DTG-range+SIC less than 10%
6. The number of SICs to be recognized is only limited
by the number of possible combinations of 3 letters
(17000) or by disc storage space.
7. The max. number of SICs attributed a message is
3.
8. The processing of retrieval requests is to be considered
as a background activity where the response time
requirement of 95% response within 5 seconds does
not apply.
9. Retrieval from a user message terminal is restricted
to messages which originate from that terminal,
or messages for which that terminal was designated
as a TO or INFO addressee at delivery time.
10. Message retrieval from a supervisory terminal
is unrestricted provided that the terminal and
the operator have a security clearance high enough
to access the message.
11. Max. size of a message is 9000 characters. Average
size of messages is 1000 characters.
12. For key MSG-ID+DTG it is assumed that practically
all requests are legal (there will be few refusals
on the basis of addresses or security).
13. For keys DTG-range and DTG-range + SIC the average
range is assumed to be 2 busy hours 2000 messages.
14. The retrieval requests are randomly distributed
over the period of time covered on HDB.
15. The HDB has space for 44500 average messages and
covers a period of 30 days.
16. For key DTG-range + SIC the main criteria (most
often effective) is assumed to be SIC.
17. Message deletion has priority over pending referencies.
This applies whenever the oldest messages are
retrieved. This means that access to messages
with a retrieval time inferior to the DTG of the
oldest message on the HDB is denied.
4.1.4.3.2 D̲e̲s̲i̲g̲n̲ ̲D̲i̲s̲c̲u̲s̲s̲i̲o̲n̲
The design of the processes SRS and SRR, and the
HDb files are made to:
- minimize number of disc accesses
- provide storage at busy minute rate
- process retrieval request at 10% busy hour
rate
- provide fast retrieval response
4.1.4.3.2.1 H̲D̲B̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The information which is necessary to retrieve
a message is extracted and stored in the data base
catalog at message storage time.
For retrieval the following information is needed
using key:
MSG-ID + DTG: MSG-ID
DTG
Security
list of terminals with permission
DTG-range: DTG start
DTG end
Security
list of terminals with permission
DTG-range + SIC: DTG start
DTG end
Security
3 SICs
list of terminals with permission
Furthermore for
all: Message address
Message length
Space required for parameters:
MSG-ID 6 bytes
DTG 4 bytes
Security 1 byte
Terminal list 4 bytes
3 SICs 9 bytes
Text address 4 bytes
Text length 2 bytes
Precedences 2 bytes
Message retrieval is performed by reference to
two message access files. The DTG file is the
primary access reference. Each entry in the DTG
file contains the number of records offset from
the beginning of the Message Retrieval File (MRF)
where the first message of a DTG is referenced.
The entry number in the DTGF is calculated from
the value of the DTG, the DTG corresponding to
the oldest entry in the file and the number of
entries in the file.
The MRF contains fix length records of:
MSG ̲ID
Message classification
Message precedences
Terminal list (bit map)
3 SICs
Retrieval DTG of message
Text address (MTF sector)
Text length
Figure 4.1.4.3.2.1 and the discussion in 4.1.4.3.2.2
illustrates the approach.
Figure 4.1.4.3.2.1…01…HDB Logical Structure
4.1.4.3.2.2 H̲D̲B̲ ̲L̲a̲y̲o̲u̲t̲
The HDB is laid out with each of the three files
as contiguous files.
Updates of DTGF and MRF are performed as updates
in an in-memory subset of these files. Whenever
the in-memory subset is full, a transfer is made
to the disc file.
The DTGF consists of 43776 entries corresponding
to about 30 days' storage.
One entry in the DTGF is one word long. This word
is the MRF record number of the first message in
this DTG. If no message has retrieval time equal
to this DTG, the DTGF entry is the MRF record number
of the first message after this DTG.
The MRF consists of 44800 records corresponding
to 44800 messages.
One record contains:
- MSG - ID
- Retrieval DTG
- Message security class
- Message Precedence
- Bit mask with one bit per terminal.
The bit is true if the corresponding terminal
has the right to retrieve the message.
- 3 SIC's
- Message address on MTF.
It is an offset in sectors from the beginning
of the MTF.
- Message length.
The MTF consists of contiguous space for storage
of 44500 average messages (1000 bytes each). The
messages are stored on the MTF starting on a sector
boundary. This gives a wasted space of about 25%
in average (the space at end of one message until
next sector boundary).
4.1.4.3.2.3 S̲R̲S̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The Storage and Retrieval subsystem is structured
as follows:
1. A process performing storage and deletion of
messages.
A program of the storage process.
2. A process performing retrieval of messages.
A program for the retrieval process.
3. A program testing the validity of a message
on the HDB on the basis of retrieval DTG.
4.1.4.3.2.3.1 M̲e̲s̲s̲a̲g̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲ (Figure 4.1.4.3.2.3.1)
Message Storage is initiated by placing an entry
in the SRS storage queue which points to a Message
Transition Control Block. Each MTCB is time stamped
with the retrieval time (DTGF entry) and they must
be entered sequentially. If a received message
is older than the previously processed message,
the SRS will terminate.
The processing is as follows:
The storage process calls QACCESS and the MTCB
monitor to get the first element in the storage
queue. The storage process tests if space is available
for the message on the HDB. This means that:
- At least the length of the message
- free on MTF
- One record free on MRF
- If the DTG of the message to be stored is
- superior to the DTG of the last message
- stored on the HDB, the storage process tests
if space is available on the DTGF for DTG entries
from the DTG of the last message to DTG of
current message.
If one more of the three tests shows that space
is not available, deletion is performed (see below).
Whenever space is available the storage processing
continues as follows:
The input file (the message as referenced by the
MTCB) is copied to the MTF starting in the beginning
of the first free sector.
Figure 4.1.4.3.2.3.1…01…Message Storage
In the copy processing the message is in memory.
While in memory all information for the MRF is
extracted. This means that:
Copy MSG-ID
Security class
SIC's
from the message
Read address numbers (ANO's) and AIG's together
with originator ID and generate the bit mask
indicating terminals with retrieval right:
originator ANO and TO and INFO ANO'S are scanned.
Those referring a local terminal give the
retrieval right to this terminal.
The extracted information forms together with the
MTF address of the first sector of the message,
the retrieval time, the message length and the
message precedence from the MTCB the MRF record
for the message.
The in-memory subset of the MRF which is placed
in the critical region SRS ̲GR is updated with the
record. If the in-memory subset of the MRF hereby
gets full, a transfer to the MRF is performed.
(The storage process await termination).
If the retrieval DTG of the message (obtained from
the MTCB) is superior to the retrieval time of
the last stored message, update of the in-memory
subset of the DTGF which is placed in the critical
region SRS ̲CR takes place. This means an update
of all entries corresponding to DTG's since the
DTG of the last stored message. All these entries
get updated with the MRF record number of the present
message. Whenever in this process the in-memory
subset of the DTGF gets full transfer is made to
the DTGF.
The MTCB of the message is updated with
MTF address
Indicator message on HDB
by a call to the MTCB monitor.
The queue element (and the MTCB) is released via
call to QACCESS. If the storage process was the
last process with reference to the input file,
the MTCB monitor will delete the file.
The storage process calls QACCESS to get the next
element in the storage queue for processing as
described above. If no queue was found the storage
process goes into a wait for a signal indicating
that a queue element has been entered in an empty
queue.
Deletion of oldest messages is initiated whenever
no room is available as outlined above. Deletion
is performed so that:
a. A given time span is available for message
storage. This means that messages shall be
deleted to get a new value for the DTG of the
oldest message. The entries from DTG (oldest)
to DTG (newest) are the occupied entries.
Number of free entries = Total number of entries
- (entries from DTG (oldest) to DTG (newest)).
The number of free entries shall be superior
to the number of entries required to cover
the given time span.
b. A given number of records free on MRF for storage
of new messages. Messages shall be deleted
so that the required number of records are
free on the MRF.
c. A given amount of space on the message text
file. Messages shall be deleted so that the
given amound of text space is available on
the MTF.
Deletion is performed as follows:
1. Calculate the MRF record number to fulfil condition
b. The determined record may correspond to
a message which is not the first for a given
DTG. To obtain this the MRF record is read
to obtain the retrieval DTG of the message.
This value + one minute is defined as the
new value for the DTG of the oldest message.
2. A test is performed to see if condition a.
is fulfilled. If not, the DTG of the oldest
message is incremented to fulfil condition
a.
3. With the present value for the DTG of the oldest
message the offset in the DTGF is calculated
and the corresponding entry is read. The DTGF
entry gives the MRF record number. This MRF
record is read. From the MTF address of the
oldest message as defined here and the MTF
address of the first free part in the MTF the
amount of free space is calculated. If the
calculated space does not fulfil condition
c., a search is started on the MRF until condition
c. is fulfilled. The search starts by incrementing
the MRF record number by the space missing
divided by the average length of a message
(in number of sectors). Whenever the MRF record
number is found fulfilling condition c., it
is read and the retrieval DTG of the corresponding
message is determined. This DTG is incremented
by one minute. The hereby determined DTG is
the DTG of the oldest message on ghe HDB.
The DTGF is read and the record number of the
first MRF record in this DTG is determined.
The MRF is read and the MTF address of the
oldest messages is determined.
4. The in-memory values of DTG of oldest message
MRF record number of oldest message. MTF address
of oldest message is updated. These values
are kept in the critical region SRS ̲CR.
Deletion completed.
4.1.4.3.2.3.2 M̲e̲s̲s̲a̲g̲e̲ ̲R̲e̲t̲r̲i̲e̲v̲a̲l̲ (Figure 4.1.4.3.2.3.2)
Retrieval is performed by making an entry in the
SRR input sueue, SRS2, with the request parameters
and an identification of the requesting terminal.
The requestor generates a pseudo MTCB with the
following information:
Retrieval case indicator
1) for readdressal or retrieve
and distribute (RD-queue)
2) for printout (LP-queue)
3) for display (RT-queue)
Retrieval key indicator
a) MSG-ID + DTG
b) DTG-RANGE
c) DTG-RANGE + SIC
Case 1) may request key a) only.
Cases 2) and 3) may request key a), b), and c).
Figure 4.1.4.3.2.3.2…01…Message Retrieval Diagram
Retrieval keys
key a DTG
MSG-ID
key b DTG start
DTG end
key c DTG start
DTG end
SIC
Terminal identification
Terminal number
Indicator if requestor is supervisor or supervisor
assistant.
The lowest of the terminal security classification
and the operator security classification, in the
following called the operator/terminal security
class.
Retrieval for Message Log printout is requested
as follows:
The requestor generates a pseudo - MTCB containing:
- Terminal number
- Queue - ID
The SRR calculates a time spand containing the
last 24 hours. This DTG-range is used when retrieving
the MRF records.
In all cases the generated pseudo MTCB is queued
by the requestor to the SRS retrieval queue.
The retrieval process calls QACCESS and the MTCB
monitor to get the first element in the retrieval
queue (a pseudo MTCB as above).
It determines the DTG-range (for key a. DTG to
DTG + 1 minute). It accesses the DTGF to get the
range on the MRF. If the DTGF is (partly) in memory
the entries are read from memory, if the DTGF entries
are on disk the DTGF is accessed to read the MRF
record number(s). The MRF records in question
are scanned.
For key a. the processing is:
Test if MSG-ID fits with MRF record MSG-ID. If
no fit continue with next MRF record until end
of MRF records in question. If fit test if the
requesting terminal is either a supervisory terminal
or represented in the terminal bit mask (from the
MRF record).
Test if the operator/terminal security class is
superior or equal to the message security class
(from MRF record). Terminate the search.
If all tests were positive, generate a MTCB as
described below and save the MTCB index. If any
of the last two tests fails or end of MRF records
in question is reached, generate error notification
as described below.
For key b. the processing is:
Test if the requesting terminal is either a supervisory
terminal or represented in the terminal bit mask
(from the MRF record).
Test if the operator/terminal security class is
superior or equal to the message security class
(from the MRF record). If one of the two tests
fails, take the next MRF record until end of MRF
records in question. If both tests are successful,
generate a MTCB as described below, save the MTCB
index and continue with the next MRF record until
end of MRF records in question or until 11 messages
are found.
If no message is found or 11 messages are found,
generate error notification as described below.
For key c. the processing is:
Test if the given SIC matches with one of the max.
3 SIC's ub tge NRF record.
Test if the requesting terminal is either a supervisory
terminal or represented in the terminal bit mask
(from the MRF record).
Test if the operator/terminal security class is
superior or equal to the message security class
(from the MRF record). If one of the three tests
fails take the next MRF record until end of MRF
records in question. If all three tests are successful,
generate a MTCB as described below, save the MTCB
index and continue with the next MRF record until
end om MRf records in question or until 11 messages
are found.
If no message is found or 11 messages are found,
generate error notification as described below.
The generation of the MTCB's for located messages
is performed as follows:
Call the MTCB monitor to create (find a free) MTCB.
Extract
- Action precedence
- Classification
- Message length
- HDB - address and Retrieval time
from the MRF record, write this information plus
indication Type = narrative message
Specat = not special handling
to the created MTCB through a call to the MTCB
monitor.
The queuing to requestor terminal queue is performed
as follows:
If 1-10 messages are found (key a. maximum 1) the
indices of the corresponding MTCB(s) is (are) queued
to the requstor's queue.
This means that:
case 1. RD-queue
- 2. LP-queue
- 3. RT-queue
The queuing is performed by access to QACCESS.
Perform logging by call of LOG ̲JOURNAL.
If no message is found or 11 messages are found
the pseudo-MTCB is updated with an error code and
the index of the pseudo-MTCB is queued through
a call to QACCESS to:
RD-queue for case 1 and
RT-queue for case 2 and 3
For log retrieval requests, the processing is:
Read the DTGF entry corresponding to the calculated
DTG-range (at least 24 hours).
Retrieve the MRF records specified in the DTG entries
and append them one by one to the MJF file. Update
the request pseudo MTCB with the number of records
appended.
The update is performed through a call of
WRITE ̲MTCB.
Queue the request MTCB to requestors queue as specified.
Finally all references from the retrieval process
to MTCB's are released.
This is performed by:
- call to QACCESS for release of queue element
and pseudo-MTCB queued
- call to the MTCB monitor to release MTCB's
created in the retrieval process (MTCB's of
located messages)
The processing in the retrieval process for the
actual retrieval request is terminated.
The retrieval process calls QACCESS to get the
next element in the retrieval queue, if no element,
the retrieval process waits until a signal is received
indicating that an element has been entered in
the empty SRS2 queue.
4.1.4.3.2.3.3 T̲e̲s̲t̲ ̲-̲ ̲H̲D̲B̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲
The physical retrieval of a message is performed
by the requesting process. The process reads the
message directly from the Message Text File. As
some time may elapse from the moment a message
is located by the retrieval process to the actual
read is performed, the data information read from
the MTF does not always correspond to the message
originally located. This is the case when a deletion
followed by a subsequent write of a new message
has taken place in the period from location to
read of a message and the new message happens to
be written on top of the old. This will most often
be the case when the oldest messages on the HDB
are retrieved, but in principle it may happen for
all reads from the MTF using MTF address obtained
from a MTCB.
After the read of data from the MTF the calling
process must call the monitor procedure TEST-HDB.
As input this procedure gets the retrieval time
of the message references by the MTCB. It returns
a boolean. This boolean is true if the input retrieval
DTG is superior or equal to the retrieval DTG of
the actually oldest message on the HDB and false
is the input retrieval DTG is inferior to the retrieval
time of the actually oldest message on the HDB.
If the returned value is false the data just read
is invalid and may not be further processed.
4.1.4.3.2.3.4 S̲R̲S̲ ̲R̲e̲c̲o̲v̲e̲r̲y̲
Checkpointing and recovery of the SRS and SRR process
is performed by the SRS process.
Each time a message is processed (stored) by the
SRS, the contents of the critical region SRS ̲CR
is copied to a file on the fixed head disk colume.
The SRS ̲CR region contains the incore part of
the MRF and DTGF file and all additional parameters
necessary to recover the SRS and SRR.
After a system breakdown, the SRS will, when it
is loaded, retrieve the parameters from the disk
file and install them in the critical region SRS
̲CR.
This procedure takes place in both a restart or
a cold start of the site.
The HDB-file can be cleared by the offline program
PRESET ̲HDB which presets the parameters on the
checkpoint file.
4.1.4.3.2.4 S̲R̲S̲ ̲L̲a̲y̲o̲u̲t̲
M̲e̲m̲o̲r̲y̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ (See Figure 4.1.4.3.2.4)
The Storage and Retrieval Subsystem uses the following
memory:
- Program Storage
- Program Retrieval
- Program TEST-HDB
- Process Storage
- Process Retrieval
Shared data area (the critical region SRS ̲CR, containing
the icore parts of the MRF and DTGF files and some
other common parameters).
Figure 4.1.4.3.2.4…01…SRS Memory Layout
Figure 4.1.4.4…01…Visual Table of Contents
4.1.4.4 S̲u̲b̲s̲y̲s̲t̲e̲m̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲ ̲H̲I̲P̲O̲ ̲D̲i̲a̲g̲r̲a̲m̲
Figure 4.1.4.4-1 and 2 present overview of SRS
storage and retrieval.
Figure 4.1.4.4-1…01…Storage Process Overview HIPO Chart
Figure 4.1.4.4-2…01…Retrieval Process Overview HIPO Chart