DSRT/NT: A Dynamic Soft Real Time Scheduler for Windows NT
Soft Real-Time API
Soft real-time multimedia applications become increasingly popular and coexist with traditional best-effort applications on Windows NT platform. On one hand, Windows NT provides multimedia applications with standard user interface, network capabilities, development tools and off-the-shelf components. On the other hand, however, Windows NT is not designed as a real-time operating system and does not provide soft real-time service directly.
DSRT/NT is a middleware framework to extend Windows NT with soft real-time service. As a middleware framework, DSRT/NT enables multimedia applications to probe system level resource requirements, reserve processor resource and adapt reservation, and also allows the operating system to manage processor resource in a predictable way to satisfy both system-wide properties, such as starvation-free environment for best-effort applications, and application-specific properties, such as soft real-time guarantees for multimedia applications.
DSRT/NT employs a Reservation-based preemptive EDF(R-EDF) algorithm to schedule multiple classes of soft real-time tasks and best-effort tasks. The unique feature of R-EDF is that it provides overrun protection and handling so that (a) overrun task will not cause other tasks to miss their deadlines, and (b) overrun task will finish its work within an acceptable and predictable time bound.
The architecture of DSRT/NT is shown as follows. Soft real-time applications use SRT API to query processor resource status, probe resource requirement, make resource reservation and adapt behavior. The broker interacts with soft real-time applications to receive requests from applications and reply with resource availability and application performance, for example, deadline missing. The scheduler makes admission control on reservation and schedules soft real-time applications and best-effort applications.
2.Soft Real-Time API
DSRT/NT provides following API to ease the programming of QoS-Aware multimedia applications.
|Probe||Map a user level QoS to a system level QoS to determine CPU service class and parameters|
|ProbeEnd||Stop probing and retrieve the probing result|
|Reserve||Make a resource reservation with specified CPU service class and parameters|
|FreeReservation||Free current reservation|
|UpdateReservation||Update current reservation|
|StartRTRun||Start to run in a real-time mode with resource reservation|
|StopRTRun||Stop running in real-time mode and run in a best-effort mode|
|YieldCPU||Yield CPU to mark the end of current job execution and block task until next period|
With the above SRT API, a typical programming model is shown as follows
Source code of DSRT/NT is written in Visual C++ 6.0, and we also provide a Java version of SRT API. The zipped file (9.6MB)contains the source code and executable binary. After unzipping, you will get following directories:
+---- Bin #including executable code and DLLs
+---- Source #source code for DSRT/NT
+--- Mpeg2player #source code of modified Berkeley Mepg Player
+---- VCProject #Project files
DSRT/NT can run in three modes:
(1) proxy mode, which can sun existing program without modification
(1.1) Start DSRT server
(1.2) Start DSRT client program
Bin>CpuCln period percentage program arguments
For example: >CpuCln 100 0.3 mpeg2ply
Reserve 100ms period and 30% for mepg2ply. In mepg2ply, use menu file|open to open 4slice.mpg and
use contol|play to play the movie.
(2) non-proxy mode, the client program is instrumented with SRT API
(2.1) Start DSRT server
(2.2) Start instrumented client program, for example
#Please see the source code of the modified mpeg2player for the programming model.
(3) Java program. We are still building Java examples. Please check later.
(4) DSRT server can be killed by command
Following steps show a demo of DSRT/NT:
(2) Bin>CpuCln 100 0.2 mpeg2ply
Reserve 100us period and 20% for mepg2ply. In mepg2ply, use menu file|open to open 4slice.mpg and use contol|play to play the movie.
(3) Bin>CpuCln 50 0.4 mpeg2ply
Reserve 50us period and 40% for another mepg2ply. In mepg2ply, use menu file|open to open 4slice.mpg and use contol|play to play the movie.
(4) Bin> mpeg2ply
Do not reserve CPU for another mepg2ply. In mepg2ply, use menu file|open to open 4slice.mpg and use contol|play to play the movie.
(5) Bin> consumer 1
Run the consumer program to see the effect of soft real-time guarantee of DSRT/NT.
Direct comments and suggestions to Wanghong Yuan (firstname.lastname@example.org).
Copyright © 2000-2001, Multimedia Operating Systems and Networking Group, University of Illinois at Urbana-Champaign.
Last updated at February 15, 2000