Lectures

Chapter references relate to the course book (KMP).

Lecture 1 - Real-time systems: characteristics and design methods

  Mon study week 1, 13.15 - 15.00 in Gamma

In this lecture, we describe the general construction methods used for the design of real-time systems. A three-stage design flow is introduced that encompasses specification, implementation, and verification. For the specification stage, we present application constraints particular to real-time systems, and discuss their origin and implications. For the implementation stage, we discuss critical design choices to be made. For the verification stage, we discuss the pros and cons of ad hoc testing and formal analysis (schedulability analysis).

Slides

[ PDF, PDF_4up ]

Reading

Lecture 2 - Real-time systems: programming paradigms

  Tue study week 1, 10.15 - 12.00 in Gamma

In this lecture, we identify the desired properties of a real-time programming language and show to what extent these properties exist in contemporary imperative languages. We then discuss the pros and cons of a concurrent/parallel programming paradigm and show how contemporary imperative languages offer support for this paradigm. Finally, using an example control application, we show that correct application behavior can only be achieved by means of concurrent programming and synchronization.

Slides

[ PDF, PDF_4up ]

Reading

Lecture 3 - The TinyTimber kernel

  Wed study week 1, 10.15 - 12.00 in Gamma

In this lecture, we give an overview of the philosophy behind the TinyTimber kernel, and also give a short history of how the kernel developed from its big brother, the Timber language, and its predecessor O'Haskell.

Slides

[ PDF, PDF_4up ]

Reading

Lecture 4 - Concurrent programming: problems and solutions

  Mon study week 2, 08.15 - 10.00 in Alfa

In this lecture, we introduce the general resource management problem, and highlight the deadlock, starvation and mutual exclusion issues. We then take a closer look at the mutual exclusion property and show how different imperative languages and run-time systems offer support for mutual exclusion. Techniques that will be described are protected objects, monitors, semaphores and mutex methods.

Slides

[ PDF, PDF_4up ]

Reading

Lecture 5 - Concurrent programming: problems and solutions (cont'd)

  Tue study week 2, 10.15 - 12.00 in Gamma

In this lecture, we first demonstrate why mutual exclusion matters using an example involving a circular buffer. We then describe how mutual exclusion is achieved with support from the processor hardware. Finally, we highlight the need for call-back functionality in real-time programming, and give examples in the context of TinyTimber.

Slides

PDF, PDF_4up ]

Reading

Lecture 6 - Concurrent programming: guaranteeing timeliness

  Mon study week 3, 13.15 - 15.00 in Gamma 

In this lecture, we show the mechanisms that are used in Ada95 and TinyTimber to provide clocks, time, delays and task priorities. We also discuss the priority/deadline inversion problem and discuss different methods for avoiding/reducing the problem.

Slides

PDF, PDF_4up ]

Reading

Lecture 7 - Task model; Worst-case execution time

  Mon study week 4, 08.15 - 10.00 in Beta

In this lecture, we introduce abstract models for the run-time system and the tasks as a means for the formal verification of the timing correctness of the system. We also give an overview of the problem of deriving worst-case execution times for the code executed by a task.

Slides

PDF, PDF_4up ]

Reading

Lecture 8 - Real-time network communication

  Fri study week 4, 10.15 - 12.00 in Gamma

In this lecture, we give an introduction to network communication mechanisms that are used in the design of real-time systems. In particular, we take a closer look at the CAN protocol.

Slides

[ PDF, PDF_4up  ]

Reading

Lecture 9 - Scheduling: terminology, cyclic executives

  Mon study week 5, 08.15 - 10.00 in Beta

In this lecture, we introduce some basic terminology relating to scheduling and schedulability analysis. We also describe the mechanisms used in static scheduling (cyclic executives).

Slides

PDF, PDF_4up ]

Reading

Lecture 10 - Scheduling: static and dynamic priorities, utilization-based analysis

  Tue study week 5, 13.15 - 15.00 in Delta

In this lecture, we introduce dynamic scheduling using priorities according to the rate-monotonic and earliest-deadline-first policies. In addition, we describe how to check schedulability of a set of tasks using processor-utilization analysis.

Slides

PDF, PDF_4up ]

Reading

Lecture 11 - Scheduling: response-time analysis

  Mon study week 6, 13.15 - 15.00 in Gamma

In this lecture, we introduce the deadline-monotonic scheduling policy. In addition, we describe how to check schedulability of a set of tasks using response-time analysis.

Slides

PDF, PDF_4up ]

Reading

Lecture 12 - Scheduling: processor-demand analysis

  Tue study week 6, 10.15 - 12.00 in Gamma

In this lecture, we describe how to check schedulability of a set of tasks using processor-demand analysis.

Slides

PDF, PDF_4up ]

Reading

Lecture 13 - Scheduling: multiprocessor systems

  Mon study week 7, 13.15 - 15.00 in Gamma

In this lecture, we introduce the two main approaches to multiprocessor scheduling: partitioned scheduling and global scheduing. We also describe the fundamental problems in finding good priority assignment policies and schedulability tests for multiprocessor real-time systems. Finally, we present the RM-US scheduling policy, which represents a state-of-the-art technique for global real-time multiprocessor scheduling.

Slides

[ PDF, PDF_4up ]

Reading

Lecture 14 - Summary and reading hints

  Tue study week 8, 10.15 - 12.00 in Gamma

In this lecture, we summarize the contents of the course and give preparation hints for the written exam.

Slides

  ]