CSE 5324: Software Engineering I
(Analysis, Design, Creation)
Fall 1997
Real-Time Systems:
What are they?
When (where) are they used?
How are they different? (From non-RT)
Many (most) real-time systems are embedded
Where are they seen:
where real-world events are time critical:
navigation (air, space)
medical
telecomm, network
games
Often classified into:
Soft (RT)
Hard (RT)
Usually both (and non-RT requirements also)
Degraded operation versus Incorrect results
Often viewed as stimulus - response system
Stimuli:
Periodic (predictable time intervals)
Aperiodic (irregular)
Response:
Actuator
Classification:
Monitoring systems
Data Acquisition
Command and Control
etc.
Usually hardware and software done in parallel
(and tradeoffs are made)
Establish system requirements
Partition Requirements
Software Reqs Hardware Reqs
Software Design Hardware Design
Steps:
Identify Stimuli (to process) and associated response
For each stimuli and response identify timing constraints
Group stimuli and response into concurrent processes
For each, design algorithms (usually early in design
process, may make tradeoffs)
Design scheduling system to ensure processes started
on time
Integrate with a real-time executive (OS)
Implementation overhead is critical:
Design tools and methodolgies
Programming language:
Is C appropriate?
(NO)
C++?
(Even worse)
Ada
Ada 83 was not (design errors) but Ada 95 is
What is needed:
HLL synchronization
OS interface constructs: mutual exclusion, IPC, start
process by time, scheduler changes, etc.
Interrupt handling
OS:
(Not Unix!)
Real time clock
Interrupt handler
Scheduler
Resource manager
Dispatcher
May include:
Configuration manger
Static or dynamic
Fault manager
Hardware and software
Some Issues:
Is OO a good idea for RT?
Timing: how to make estimates:
Counting instructions (pipelines, etc.)
Compiler helping
Analysis
Simulate
Use good tools: