From: johnsonm@lars.acc-admin.stolaf.edu (Michael K. Johnson)
Subject: Re: real time
Organization: St. Olaf College; Northfield, MN  USA
Date: Tue, 5 Jan 1993 17:32:35 GMT


In article <C0Dt5v.6G@gamble.uucp> nigel@gamble.uucp (Nigel Gamble) writes:

   In <1993Jan4.191229.22825@news.stolaf.edu> johnsonm@lars.acc-admin.stolaf.edu (Michael K. Johnson) writes:
   >Well, actually, for some "real-time" applications, linux makes a lot
   >of sense, essentially because it has very low overhead in general.

   Unfortunately, although a real time operating system needs to have very
   low overhead, having very low overhead does not mean that you have a
   real time operating system.  With the current version of Linux (as with
   any other traditionally designed UN*X operating system) there is no
   way to *guarantee* fast, *deterministic* response times.

I understand that low overhead does not mean real-time: That is why I
quotes around "real-time" above.  Many applications which get labeled
"real-time" really only require that low overhead and quick service.
For these apps, Linux is already a good platform.  It is extremely
easy to write device drivers for Linux, when one is required for the
application.  Loadable device drivers would make it even easier.

   >However, it would not take a "fundamental design change in how the
   >kernel works" to make linux a /good/ RTOS.

   I think you're wrong here, for the reasons I outlined in a previous posting.
   But if you (or anyone else) is seriously thinking of `Linux-RT', I'll
   volunteer to help.

It depends on what you want the RTOS to do.  I don't pretend that
Linux RT would be a panacea, but I think that it would have a large
sphere of usefulness.  The devices don't do more than they have to
with interrupts disabled.  And if, for instance, you couldn't deal
with the requirements of the hard disk for undivided attention, you
use a ramdisk.  It would also not be too hard to re-write any device
drivers that had to be re-written.  The Linux kernel really is pretty
modular.

   However, I now believe that the best way to implement a real time
   POSIX compliant OS is to start with a real time microkernel, not with
   a non real time monolithic kernel.  This allows many of the subsystems
   that cause problems for a real time UN*X kernel, such as the file
   system, to be implemented in user space where they can do less damage
   to deterministic response times.  Of course, there is still the problem

With pseudodevices, this could be done with linux, and pseudodevices
were once done for linux, and could be again.  It's a different
approach, though.

   of ensuring that all device drivers conform to the rules for ensuring
   determinism.  This is difficult enough for a commercial implementation;
   Linux device drivers are being contributed by many different people
   who would all have to understand how their code impacts the real time
   nature of the OS.

No, you make a different version of Linux, Linux RT, and check that.

I think that your points are well-raised and well-thought, but not all
applications that require some sort of real-time service have every
requirement that is related to the thought of real-time.  You choose
the OS that fits your project best, and Linux-RT would be only one
option, if it is ever written.

michaelkjohnson
Newsgroups: comp.os.linux