The ABSolute (ABS) addressed frames file contains the D3 virtual code and is the first few hundred frames of the D3 disk area.
Lock Tables
The first few frames of the ABS file are reserved for the Lock Tables, which begin at FID one. The number of frames reserved for lock tables is 18 but additional frames may be linked-in from overflow if necessary.
Locking Data
Since D3 is a multiuser system, special arrangements must be made so that a file is not concurrently modified by several users. To accomplish this, D3 uses locks. Individual records can be locked, as well as an entire file. In addition to locking, restrictions can be implemented for a file for each user’s retrieval (reading) and update (writing) abilities.
D3 stores data in files. The files are evenly divided into groups. Groups contain one or more items (or records). When an item is updated, the new information is appended to the end of the group, and the old, outdated information is marked as deleted. The system then moves all the items forward, squeezing out any deleted items. When this happens, the items are said to be shifting in the group. D3 can lock data at the file, group or individual item level.
Group Update Lock
When the entire group is locked, no other process is allowed into the group for reading or writing. The group is allowed to shift if there are no Group Retrieval Locks or Group Read-Only Locks on the group. This means that writes are allowed in the group to append a new item, delete an existing item, or to replace an existing item.
Group Retrieval Lock
When a Group Retrieval Lock is placed on a group, other processes are still allowed to lock the group, but the group is not allowed to shift. This means more than one Group Retrieval Lock is allowed per group. When placing Group Update Locks on a group with Group Retrieval Locks already in place, no more Group Retrieval Locks are allowed. Since the group cannot shift due to having Group Update and Group Retrieval Locks, any writes have to be appended to the end of the group. After the last lock is released the group is cleaned up.
A possible scenario would be a Retrieval Lock followed by an Update Lock from another process. The second process might file an existing item in the group. The group cannot shift, therefore, the new item is tacked on to the end of the group and the old copy is marked as deleted. Later, when the final lock is released, the deleted item is removed and the group shifted.
Group Read-Only Lock
When a Read-Only Lock is placed on a group, no Group Update Locks are allowed. The group is not allowed to shift. However, other Read-Only Locks and Retrieval Locks are allowed on the group.
Item Lock
The record (item) is locked and all other records in the file are accessible.
Group Lock is placed on the group to prevent shifting.
Item Lock is placed on the item, and the Group Lock is released.
Item Locks are used by the FlashBASIC readu, readvu, and matreadu statements and the Update Processor.
ABS Symbolic Names
The ABS, or actual D3 System Virtual code, is next. D3 references frames by a symbolic name, and the system refers to a cross-reference table. The FID in D3 is referenced as:
process{subprocess}:offset |
The ABS file contains information on what is in each frame.
ABS Processors
D3 has its different tasks broken into separate subprograms called processors, the code of which resides in the ABS file. These processors perform the various functions of the D3 system. Some of these processors are listed below:
AQL |
Performs nonprocedural queries against the database. |
Macro, Proc, Menu |
Front-end tools to organize processes. |
Phantom Processor |
Handles user-like jobs that do not have terminal I/O, thus freeing terminals. |
FlashBASIC |
Compiles and runs FlashBASIC programs. |
Scheduler |
Schedules user processes for a time-sharing environment. |
Spooler |
Handles output to the printers. |
TCL |
Handles input from terminals and nondatabase commands. |
Update Processor |
Full screen editor permits direct access to update and retrieve data within files. |
Other processors: |
|
See Also