|
OverviewA Direct Device Interface (DDI) is an Application Program Interface (API) and device driver hybrid providing multiple clients with direct, language- and hardware-independent access to a physical device without the restrictions, complexity, and overhead of popular desktop operating systems. Clients include applications programs, applets, threads, and Dynamically Linked Libraries (DLLs). The DDI is implemented as a self-contained DLL which is linked to the client at runtime and does not require a complementary device driver. Note that a statically linked library which is linked to the client at compile time may also used to expose the functionality of the physical device. Using DLLs, however, has many advantages:
BackgroundWindows and Linux are layered operating systems. Operating system layers include application, Application Program Interface (API), kernel, device driver, and physical device as shown in the figure below. Executable programs and threads run in the application layer.The basic goal of layering is to partition the problems involved in providing operating system services into manageable pieces. The partition exists on an implementation level so that layers may be implemented, tested, optimized, and replaced separately. The partition also exists on an conceptual level so that layers may be understood and analyzed separately from each other and the uses to which they are put. According to the client server model, each layer is regarded as a server that waits to be asked by clients in the layer above to provide a specific service. Servers exploit the functionality of the layer below to provide higher level system services to clients in the layer above. Usually, there is a standard interface and clients only have to conform to the peculiarities of this interface without regard to implementation details of requested services. With reference to the figure below, typical communication between layers
as required to provide Windows 3.X/9.X/NT applications with access to physical
devices is indicated by black lines. Applications utilize an API
in order to request services that require access to the device. In
response to such service requests, the API incorporates a hardware independent
representation of the device to generate a sequence of abstract device
operations. The kernel relays abstract device operations to the appropriate
device driver. Finally, the device driver translates abstract device
operations into actual device operations which are hardware dependent and
specific to the particular physical device in use.
|
Performance analysis of this scheme takes the form of a queuing system with probabilistic arrival and service times. Arrival time corresponds to the random event that an executable program or thread invokes an API routine in order to access a device. Service time is the period of time required by the API, kernel, and device driver to collectively provide device access. It equals the sum of API, kernel, and device driver scheduling delay and execution time. Scheduling delay is the time spent by the API, kernel, or device driver waiting for shared resources, to include CPU instruction cycles, in order to complete a task. Execution time is the time required to complete a task assuming the necessary resources are available. In contrast to execution time, scheduling delay is unpredictable in detail since the scheduled duration and order of API, kernel, and device driver activity may not correspond to actual execution time and sequence of execution, respectively. Blue lines in the above figure show that DirectX APIs communicate directly
with the device driver in order to improve performance by eliminating kernel
service time. Red lines in the above figure show that DDIs communicate
directly with the physical device in order to maximize performance by minimizing
service time. Utilization of computer resources is also minimized
based on Little's Theorem (waiting area decreases with service time).
Available Direct Device InterfacesExisting DDIs from Interstate Robotics extend Win16S/32S services by exposing the functionality of graphics, timer chip, DMA bus master, and video data acquisition devices. Win16S and Win32S are the subset of the Win16 and Win32 API, respectively, which are available from second sources and may be utilized without the restrictions, complexity, and overhead of Windows. They are non-proprietary, user extendible, communally defined, and shared by a world-wide network of developers without belonging to anyone. Please note that DDIs to the video graphics adapter and timer chip are protected by United States Patent No. 6,078,747. An HTML version of the original patent application contains HTML links to figures.Impact On MarketsCompanies which develop software for the x86 family of computers rely heavily on enhancements and modifications to Windows in support of new applications development. Problems stemming from this reliance are as follows:
DDIs extend Win16S/32S services. This allows Win16S/32S to be
treated as a user extendible commodity which scales in order to satisfy
a broad spectrum of requirements. If history repeats itself, impact
on markets and corresponding benefits to the consumer will be similar to
when non-proprietary hardware (the IBM PC) banished proprietary systems
(Amega, Commodore, DEC) from the marketplace.
Copyright © 2000 by Interstate Robotics,
Incorporated. All Rights Reserved.
|