Archive Index (1999-2012) | 2013-current at | About  

A comparison of real-time Linux approaches

Jun 10, 2005 — by LinuxDevices Staff — from the LinuxDevices Archive

Foreword — Paul McKenney recently summarized seven approaches to real-time Linux, in an epic 6,000-word post to the Linux Kernel Mailing List (lkml). McKenney's original post is reproduced below; curious readers are invited to consult the lkml archives, and follow up in the TalkBack at the end of this story. Enjoy . . . !

Date Tue, 7 Jun 2005 19:26:46 -0700
From “Paul E. McKenney”
Subject Attempted summary of “RT patch acceptance” thread


Midway through the recent “RT patch acceptance” thread, someone mentioned that it might be good to summarize the various approaches. The following is an attempt to do just this, with an eye to providing a reasonable framework for future discussion.

Thoughts? Errors? Omissions?

[Quickly donning the asbestos suit with tungsten pinstripes…]

Thanx, Paul



Search for a line beginning with the corresponding capital letter followed by a period to jump to the corresponding section.


Common wisdom dictates that realtime operating systems, particularly hard-realtime operating systems, must be designed from ground up; that serious realtime support cannot be simply grafted onto an existing general-purpose operating system. Although this common wisdom was not arrived at lightly, it is often worthwhile to look for important exceptions to this sort of general rule of thumb. Candidate exceptions include:

  1. Many realtime applications use a very restricted subset of the services provided by a general-purpose OS like Linux. Some applications require realtime support only for scheduling user-mode code, for example, an application that directly accesses MMIO registers mapped into its address space. This observation leads to the possibility of providing very limited realtime support.
  2. Computer performance and capacity has increased dramatically over the past few decades, quite literally by multiple orders of magnitude. A small embedded system can easily be much more capable than a mid-70s supercomputer, for example, the vaunted Cray-1, introduced in 1976, ran at 160MFLOPs and sported 8MB of main memory. In today's terms, this would be a modest embedded system — and just you try running Linux on an 8MB system! This dramatic increase in performance permits some applications that would have required heavy-duty RTOS support in the 70s to run reasonably well on unmodified general-purpose OSes.

There are still limits to the degree of realtime support that one can expect from a general-purpose OS — there are some extremely demanding applications that can be satisfied only by hand-coded assembly running on bare metal. In fact, there are applications that can be satisfied only by custom hardware implementations.

Nevertheless, it is clear that Linux can support significant realtime requirements, as it is already being used heavily in the realtime arena. But how far should Linux extend its realtime support, and what is the best way to extend Linux in this direction? Can one approach to realtime satisfy all reasonable requirements, or would it be better to support multiple approaches, each with its area of applicability?

The answers to these questions are not yet clear, and have been the subject of much spirited discussion, for example, see the more than 300 messages in the following LKML thread:

This document looks at some strategies that have been proposed for realtime Linux, comparing and contrasting their capabilities. But, to evaluate these strategies, it is first necessary to determine what exactly one might want in a realtime Linux. If you would rather skip straight to the comparing and contrasting, click to “LINUX REALTIME APPROACHES“.

Otherwise, continue HERE . . .

Story Navigation


This article was originally published on and has been donated to the open source community by QuinStreet Inc. Please visit for up-to-date news and articles about Linux and open source.

Comments are closed.