Real-time and Embedded Systems (M)

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, Objectives, and Prerequisites

The aims of this course are 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.

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.

Credits

This is a 10-credit, level M module. It is a component of the MRes, MSc (CS+), and MSci programmes in Computing Science, and 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.

Recommended Reading

The Real-time Systems book by Jane W. S. Liu is required reading for this course. The POSIX.4 Programmers Guide provides useful background, but is not mandatory.

The following research papers are also required reading:

Assessment

The module will be assessed by a combination of examination (70%), coursework (3 x 5%) and a practical system design and development exercise (15%).

Assignment: Available in: Due at:
Problem set 1    
Problem set 2    
Problem set 3    
Programming assignment    

A sample examination is available, along with worked answers. You are strongly encouraged to attempt the questions yourself, before reviewing the sample answers. Copies of previous exam papers are also available: 2004, 2005, 2006, 2007, 2008, 2009, 2010.

Timetable

Teaching Week Session Title
14 Lecture 1 Introduction to Real-Time Systems
Lecture 2 A Reference Model for Real-Time Systems
Lecture 3 Overview of Real-Time Scheduling
15 Tutorial 1 The Basics of Real-Time Systems
Lecture 4 Clock-Driven Scheduling
Lecture 5 Priority-Driven Scheduling of Periodic Tasks (1)
16 Lecture 6 Priority-Driven Scheduling of Periodic Tasks (2)
Tutorial 2 Scheduling Algorithms (1)
Lecture 7 Priority-Driven Scheduling of Aperiodic and Sporadic Tasks (1)
17 Lecture 8 Priority-Driven Scheduling of Aperiodic and Sporadic Tasks (2)
Tutorial 3 Scheduling Algorithms (2)
Lecture 9 Implementing Scheduling Algorithms
18 Lecture 10 Real-Time Operating Systems and Languages (1)
Lecture 11 Real-Time Operating Systems and Languages (2)
Lecture 12 Real-Time on General Purpose Systems
19 Tutorial 4 Real-Time Operating Systems and Languages
Lecture 13 Resource Access Control (1)
Lecture 14 Resource Access Control (2)
20 Tutorial 5 Resource Access Control
Lecture 15 Introduction to Real-Time Communications
Lecture 16 Quality of Service for Packet Networks
21   Individual Work on Programming Assignment
 
 
22 Lecture 17 Real-Time Communication on IP Networks
Tutorial 6 Real-Time Communication/Q&A on Assignment
Lecture 18 Low-Level and Embedded Programming (1)
23 Lecture 19 Low-Level and Embedded Programming (2)
Lecture 20 Review of Major Concepts