Run-Time TurboIMAGE/XL Control Blocks [ TurboIMAGE/XL Database Management System Reference Manual ] MPE/iX 5.0 Documentation
TurboIMAGE/XL Database Management System Reference Manual
Run-Time TurboIMAGE/XL Control Blocks
As mentioned in chapter 4, TurboIMAGE/XL uses control blocks resident in
privileged mapped files to provide and control user access to a database
through the TurboIMAGE/XL procedures. The contents of these control
blocks are maintained by TurboIMAGE/XL. Although it is not necessary to
know the details in order to use the TurboIMAGE/XL procedures, the
following descriptions are provided for those who prefer to understand
the control blocks and their functions.
Local Database Access
The following five structures are involved in local database access:
* Database System Control Block (DBS)--Contains pointers to all of
the DBGs on the system.
* Database Globals Control Block (DBG)--Contains global information
required during run-time and space for DBLOCK's lock descriptors.
The DBG also contains a pointer to the DBB and pointers to the
DBUs.
* Database Buffer Area Control Block (DBB)--Contains a set of
addresses and temporary locks used to coordinate access to the
data set, a set of buffer headers, and a pointer to the DBG.
* Database User Local Control Block (DBU)--Contains information
pertaining to each access path (each DBOPEN) to the database. The
DBU also contains pointers to the DBG, DBB, and DBS.
* Database User Local Index Control Block (DBUX)--Contains the
addresses of all the DBUs and DBRs (Remote Database Control
Blocks) belonging to a specific process. The DBUX also contains
dynamic roll-back information.
The DBS is a permanent file that is created by DBOPEN if it does not
exist beforehand. Thereafter, it is opened when the first user opens any
database on the system. It is reinitialized after a system abort. Each
system has only one DBS; it contains pointers to the current DBGs for any
currently open database(s).
Both the DBG and the DBB are created when the first user opens a database
(DBOPEN). They remain allocated until the last user closes the database.
Each opened database has only one DBB and one DBG, regardless of the
number of users. Both of these control blocks are part of a permanent
mapped file called dbnameGB located in the same group and account as the
database.
NOTE If you have an existing file with the same name that TurboIMAGE/XL
would assign to the permanent mapped file (that is, dbnameGB), you
will get the following message for status code -9:
CANNOT CREATE DBG : MPE ERROR <nnn>
The DBG is derived mostly from the root file and contains global
information required by TurboIMAGE/XL intrinsics during run-time. In
addition, the DBG contains the lock table which holds user-level locking
information. The DBG is used as a reference area for global data and
lock information.
The DBB is used to retrieve, log, and update data located within the data
sets. It contains a set of buffer headers which are shared by all
concurrent users accessing the database. These buffer headers contain
information about data set blocks. The DBB also contains information
pertaining to logging and recovery.
A two-level resource priority locking scheme is used within the DBB to
allow single data block operations to access the control block
concurrently. This involves DBGET, DBFIND and DBUPDATE processes. DBPUT
and DBDELETE operations, and DBUPDATE operations on detail data set
search or sort items made possible through the critical item update
(CIUPDATE) option, are unable to access the data blocks concurrently with
other DBPUTs, DBDELETEs, and search or sort item DBUPDATEs. These block
put-delete lock operations must hold a global lock on the DBB throughout
part of the operation; therefore, there is less concurrency when using
DBPUT and DBDELETE and when using DBUPDATE on search or sort items via
the CIUPDATE option. When you update a search or sort item value, you
get the same net effect as performing a DBDELETE and DBPUT.
One DBU is created and stored in a privileged, unnamed temporary file
each time a user issues a DBOPEN, and remains allocated until the
corresponding DBCLOSE is issued. The DBU contains information pertaining
to the user's individual access to the database. This includes
information about the user's access mode, record position, list
specifications, and security table. All TurboIMAGE/XL intrinsics process
on the DBU, except accesses for global and buffer area information found
in the DBG and DBB.
The DBUX is created and stored in a privileged, unnamed temporary file
the first time the user's process calls DBOPEN. One DBUX exists for each
process. Its purpose is to keep track of the addresses of all the DBUs
belonging to that process. Because 127 entries are allowed in the DBUX,
each process is allowed a maximum of 127 DBOPENs (63 per database)
depending on the availability of system resources. The DBUX remains
allocated until the user's process is terminated.
When accessing a local database, the TurboIMAGE/XL procedures usually
make use of, and can modify information in the DBG, the DBB, and the
specific user's DBU for that database.
Remote Database Access
TurboIMAGE/XL provides the capability of accessing a database on a remote
HP 3000 system from a user program running on the local HP 3000 system,
as described in chapter 9. This capability is provided in conjunction
with NS3000/XL and is accomplished by transmitting TurboIMAGE/XL database
access requests (DBGET, DBPUT, and so forth) to the remote computer where
they are executed and the results returned to the local calling process.
The control block structures used by TurboIMAGE/XL for the remote
computer which contains the database are those described in the preceding
section.
On the local computer running the user application program, TurboIMAGE/XL
constructs and uses a structure called the Remote Database Control Block
(DBR). One DBR is created each time a user's process issues a DBOPEN
accessing a remote TurboIMAGE/XL database (each access path to a remote
database); this DBR is released when the corresponding DBCLOSE is issued.
The DBR resides in a privileged, unnamed temporary file associated with
the user application process on the local computer, and contains
database, set, and item information plus the work areas necessary to set
up communication with the remote computer. Returned data and status
information is also processed in the DBR and is transferred to the
appropriate user stack areas before TurboIMAGE/XL returns to the local
calling process.
Access to a TurboIMAGE/V database from an MPE/iX system or access to a
TurboIMAGE/XL database from an MPE V system is allowed provided both
systems are configured with Network Services (NS3000). To access an
IMAGE/3000 database, an MPE V system (with NS/3000 and TurboIMAGE/V)
acting as an intermediary is required. However, if the limits on the
remote database exceed those allowed on the local system, access will not
be successful. This is because the DBR will be too small to handle
remote capacities that exceed the local limits.
Control Block Sizes
It is not necessary to predict the exact length of the control blocks
used by TurboIMAGE/XL to manage user accesses to databases. However, the
exact length of the DBU and the exact current length of the DBG are
returned in the status array by DBOPEN. These lengths can be truncated to
32767 if the control block is greater than 32767.
MPE/iX 5.0 Documentation