Comparing two approaches to real-time Linux
Dec 21, 2000 — by Rick Lehrbaum — from the LinuxDevices Archive — 2 viewsIn this guest column, Lineo's CTO (Tim Bird) compares two alternative methods of providing real-time services within Linux — the RTLinux/RTAI “Interrupt Abstraction” approach, and the approach of “Preemption Improvement” by modifying the Linux kernel. Bird defines these two systems, discusses some of the main advantages and disadvantages of each, and makes a case for which approach is best suited to… varying classes of real-time applications, from “hard” real-time to “soft” real-time. Bird writes . . .
“In the preemption improvement approach, the Linux kernel code is modified to reduce the amount of time that the kernel spends in non-preemptible sections of code. In general, the strategy is to reduce the length of the longest section of non-preemptible code in order to minimize the latency of interrupts or real-time task scheduling in the system. The reason this is important is that the amount of time spent in the longest section of non-preemptible code is the shortest scheduling latency that can be guaranteed for a hard real-time system running on Linux. This, of course, has a direct impact on the value that the real-time system can provide . . .”
“The other major approach to providing real-time with the Linux kernel is what I refer to as 'interrupt abstraction.' In this approach, a separate scheduler is also used. However, instead of trying to instrument the existing Linux kernel in order to increase preemptibility, the entire kernel is made preemptible by having a separate hardware-handling layer intercept and manage the actual hardware interrupts on a system. This hardware abstraction layer has complete control over the hardware interrupts, and simulates the interrupts up to the Linux kernel in a way that allows the kernel to run unmodified on the real-time scheduler. This system is often described as a micro-kernel system, where the full Linux kernel runs as the lowest priority task alongside real-time tasks in the system on top of the real-time scheduler . . .”
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.