22C3 - 2.2

22nd Chaos Communication Congress
Private Investigations

Felix Erkinger
Erwin Erkinger
Day 4
Room Saal 3
Start time 17:00
Duration 01:00
ID 575
Event type Lecture
Track Hacking
Language English

The Realtime thing

What the heck is realtime - and what to do with it

An overview on realtime software design, with explanations of commonly used terms and methods.

What is the real-time thing - is my PC real-time - for what can I use it? These typical questions will be covered in this lecture. It is a basic introduction in the area of real-time design.

The first part of the lecture is about - the introduction: In theory real-time is everything which reacts within a specified time on an external request. Sometimes Real-Time is used to distinguish between the "real" time and the virtual "model" time of a computer system. If this system can interact with the "real" time it is said to be real-time capable.

So - every computer is a "real-time" system (as a non reaction on a request would often be called an error) - even the most popular PC operating system (we all know).

But, as expected, real-time programming and real-time software is more than just this definition (since this would not give any benefit). Real-Time programming tries to get the maximum reactivity and reliability out of a computer system, because the typical application has to react on certain events reliable within a specified time. e.g. It would not make sense to assign a traffic ordance to a laggard, as he would not react within the needed time resulting (best case) in traffic jams. But maybe this laggard is fast enough to sort (real)-mail.

As the previous example shows, real-time depends on the application: commonly it is distinguished between Soft-Real-Time, with un-guaranteed reaction and Hard-Real-Time with a guaranteed reaction. For some applications a normal windowed OS is good enough - for others it isn't. The lecture will give some examples on some typical real-time applications and the used operating system.

The second part of the lecture is the practical part: An introduce the basic functions a real-time capable OS has to support (e.g. like semaphores or message boxes) will be given. Typical real-time vocabulary (like blocking or thread) will be covered. And finally within this part a simple real-time application will be shown to illustrate the function of the described elements (which lead to a short RTAI Real-Time linux program).

The third part of the lecture will be about pit-falls and design limits. This is again a theoretic part, which shows how excellent real-time design can (and will) fail on certain occasions. Typical pit-falls like the hungry philosopher problems (deadlock), priority inversion, and event storms will be explained together with typical prevention mechanisms. Finally this part will address some promising design methods (like virtualisation and fixed time scheduling).