Real-time and Embedded Systems M (2008-2009)
Real-time, reactive and embedded systems are widely and increasingly
used throughout society (e.g. flight control, railway signalling,
medical devices and telephony). An understanding of the fundamentals
of real-time & embedded systems is essential for the development
of process control systems and should be a pre-requisite for anyone
developing software for safety-critical applications. This module
provides in-depth study of the key techniques used in designing,
programming and analysing concurrent reactive real-time embedded
and networked systems.
The emphasis in this module is on the technical foundations of
reactive, real-time and embedded systems as used in safety-critical
applications. This module was designed in conjunction with, and is
usually intended to be taken alongside, the Modelling Reactive Systems
4 module. However, these two modules are not formally co-requisites
as they develop different skills and knowledge and can stand freely
of one another. This module contrasts with the Safety Critical Systems
Development 4 module, which takes a much wider ranging view of
safety-critical systems.
Aims and Objectives
To introduce and explore the programming language and operating
systems facilities essential to the implementation of real-time,
reactive, embedded and networked systems. To provide the participants
with an understanding of the practical engineering issues raised by the
design and programming of reactive real-time embedded and networked
systems.
By the end of this module participants should be able to:
- Clearly differentiate the different issues that arise in designing
soft and hard real-time, concurrent, reactive, safety-critical and
embedded systems.
- Explain the various concepts of time that arise in real-time systems.
- Analyse and apply a variety of static and dynamic scheduling mechanisms
suitable for soft and hard real-time systems. Perform simple performance
and schedulability analysis to demonstrate that a system successfully
meets real-time constraints.
- Explain the additional problems that arise in developing distributed
and networked real-time systems.
- Describe the design and implementation of systems that support real-time
applications. Justify and critique the facilities provided by real-time
operating systems and networks.
- Design, construct and analyse a small, concurrent, reactive, real-time
system. Select and use appropriate engineering techniques, and explain
the effect of application and system design decisions on the behaviour
of such a system.
Prerequisites
Students are expected to have done degree-level studies in, and be
familiar with, operating systems design and implementation, concurrency
and threaded programming, and software analysis and design. Some basic
familiarity with formal process modelling techniques for concurrent
systems would complement the engineering issues addressed in this
module. This corresponds to some of the material covered in the OS3,
AP3, NS3 and PSD3 modules of a Glasgow Computing Science degree.
Timetable
The module will consist of 20 lectures and associated tutorials and
laboratory sessions. The following subjects will be covered (this list
is indicative of the likely course content rather than being an exact
prescription):
- Introduction to reactive, real-time and safety-critical systems:
examples and problems.
- Timing, Clocks, Delays and Timing Constraints.
- Sensors, polling and interrupt handling: the engineering of reactive
systems.
- Interacting with embedded systems (using device drivers & interrupt
handlers)
- Reliability and fault-tolerance in safety critical systems.
- Efficiency and performance analysis.
- Software engineering for embedded systems
- Interacting with hardware
- Debugging low-level systems
- Introduction to firmware programming
- Scheduling in soft real-time systems.
- Hard real-time on stock systems.
- Real-time operating systems.
- Real-time in embedded systems.
- Software engineering for real-time systems.
- Soft real-time in distributed systems.
- Quality of Service in the OS and isochronous systems (or another advanced
topic).
As part of the module coursework, the participants will have designed,
constructed and analysed a small, concurrent, reactive, real-time
system, using appropriate design techniques. If facilities permit
participants will also have designed and implemented a small embedded
or networked real-time system.
Recommended Reading
- Jane W. S. Liu, "Real-Time Systems", Prentice Hall, 2000, ISBN
0130996513 (required for all students).
- Bill Gallmeister, "POSIX.4: Programming for the Real-World", O'Reilly
and Associates, 1995, ISBN 1565920740 (optional, but provides useful
background).
- Edward A. Lee, Absolutely Positively on Time: What Would It Take?,
IEEE Computer, July 2005 (required).
- David Gay et al., The nesC Language: A Holistic Approach to Networked
Embedded Systems, Proceedings of PLDI'03, San Diego, CA, USA, June
2003 (required).
Credits
This is a 10-credit, level M module, which is an elective component
of the Advanced MSc in Computing Science and the MSci in Computing
Science. It may also be taken as a fourth year elective by single,
combined and joint honours students in Computing Science, Software
Engineering, Electronics & Software Engineering and related
degrees.
Assessment
The module will be assessed by a combination of examination (70%),
coursework (15%) and a practical system design and development
exercise (15%).
Lecture Slides
Tutorials
Coursework
Past exam papers