Complex real-time systems need databases to support concurrent data access
and provide well-defined interfaces between software modules. However, conv
entional database systems and prior real-time database systems do not provi
de the performance or predictability needed by high-speed, hard real-time a
pplications. To address this need, we have designed, implemented, and evalu
ated an object-oriented database system called MDARTS (Multiprocessor Datab
ase Architecture for Real-Time Systems). MDARTS avoids the client-server ov
erhead of most prior real-time database systems and object-oriented, real-t
ime systems by moving transaction execution into application tasks. By elim
inating these sources of overhead and focusing on basic data management ser
vices for control systems (data sharing, serializable transactions, and mul
tiprocessor support), our MDARTS prototype provides hard real-time transact
ion times approximately three orders of magnitude faster than prior real-ti
me database systems. MDARTS ensures bounded locking delay by disabling pree
mption when a transaction is waiting for a lock and, hence, allows for the
estimation of worst-case transaction execution times. Another contribution
of MDARTS is that it supports explicit declarations of real-time requiremen
ts and semantic constraints within application code. The MDARTS library exa
mines these declarations at application initialization time and attempts to
construct objects that are compatible with the requirements. Besides local
shared-memory transactions with hard real-time response time guarantees, M
DARTS also supports remote transactions that use remote procedure calls for
data access with less stringent timing constraints. Our MDARTS prototype i
s implemented in C++ and it runs on VME-based multiprocessors and Sun works
tations.