Real-time and Embedded Systems 4 (2003-2004)
Real-time, reactive and embedded systems are widely and increasingly used throughout society (e.g. flight control, railway signalling, medical devices). 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 key techniques used in designing, programming and analysing concurrent reactive real-time and embedded systems.
This module contrasts with the Safety Critical Systems Development 4 module, which takes a much wider ranging view of safety-critical systems.
The emphasis in this module is on the technical foundations of reactive, real-time and embedded systems as used in safety-critical applications. Real-Time & Embedded Systems 4 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.
Aims and Objectives
To introduce and explore the programming language and operating systems facilities that are essential in implementing real-time, reactive, embedded and safety-critical systems. To present the practical engineering issues raised by the design and programming of reactive real-time embedded systems.
By the end of this module the student should be able to:
- clearly differentiate issues that arise in soft and hard real-time, concurrent, reactive, safety-critical, and embedded systems;
- explain the various concepts of time that arise in real-time systems;
- identify the main sources of faults in software systems;
- use a variety of error avoidance and recovery techniques in developing fault-tolerant, reactive, real-time software for safety-critical applications;
- describe and carry out the main stages of development involved in the construction of software for embedded systems;
- perform simple probabilistic performance and risk analyses using, for example, naive algebraic models, and evaluate average and worst case absolute performance;
- describe the design and implementation of systems that support real-time applications;
- analyse and apply a variety of static and dynamic scheduling mechanisms suitable for soft and hard real-time systems;
- justify and critique the facilities provided by real-time operating systems;
- explain the effect of application and system design decisions on the behaviour of simple concurrent reactive real-time systems;
- explain the additional problems caused by distribution in real-time systems;
- design, construct and analyse a small, concurrent, safety-critical, reactive, real-time system --- selecting and using appropriate engineering techniques.
As part of the module coursework, the student will have: designed, constructed and analysed a tiny, concurrent, safety-critical, reactive, real-time system, using appropriate design techniques; and, if facilities permit, designed and implemented a small embedded system.
Advanced Programming 3, Professional Software Development 3 and Operating Systems 3.
Although not a formal co-requisite, students are strongly encouraged to also attend Modelling Reactive Systems 4, which presents the formal process modelling techniques which complement the engineering issues addressed in this module.
The module will consist of 20 lectures and associated tutorials and laboratory sessions. It runs in semester 2.
- Jane W. S. Liu, Real-Time Systems, Pearson, 2000, ISBN 0-13-099651-31 (required).
- Real-Time Systems and Programming Languages by Burns & Wellings, Addison-Wesley, 3rd Edition, 2001, ISBN 0-201-729881 (Recommended).
- Real-Time Programming by Grehan et al, Addison-Wesley, 1st, 1998, ISBN 0-201-485400 (Background).
This is a 10-credit level 4 course.
Assessment is by assessed coursework (25%) and examination (75%). There will be two assessed problem sets in weeks 1-5, and a single assessed programming exercise in weeks 6-10.
- Lecture 1: Real Time and Embedded Systems
- Lecture 2: Reference Model of RT Systems
- Lecture 3: Commonly Used Approaches to RT Scheduling
- Lecture 4: Clock-driven Scheduling
- Lecture 5: Priority-driven Scheduling of Periodic Tasks (1)
- Lecture 6: Priority-driven Scheduling of Periodic Tasks (2)
- Lecture 7: Scheduling Aperiodic and Sporadic Jobs in Priority-Driven Systems (1)
- Lecture 8: Scheduling Aperiodic and Sporadic Jobs in Priority-Driven Systems (2)
- Lecture 9: Resources and Resource Access Control (1)
- Lecture 10: Resources and Resource Access Control (2)
- Lecture 11: Real-Time Support in Operating Systems
- Lecture 12: Scheduling in Practice
- Lecture 13: Operating System Support for Concurrency
- Lecture 14: Introduction to Real-Time Communications
- Lecture 15: Real-Time Communications on IP Networks
- Lecture 16: Network Quality of Service
- Lecture 17: Real-Time on General Purpose Systems
- Lecture 18: Real-Time Embedded Systems
- Lecture 19: Low-level Programming
- Lecture 20: Review of Major Concepts