views:

745

answers:

11

Are there any open source real time operating systems out there? I've heard of real-time Linux, but most implementations seem to really be a proprietary RTOS (that you have to pay for) that run Linux as a process -- much the same way Ardence's RTX real-time system works for Windows.

EDIT: I should clarify that I'm looking for RTOS to work with multi-core x86-family CPUs.

+4  A: 

Check out eCos free, open source and real-time operating system. (Supports x86, not sure about multi-core)

RTLinux is also available

Mehrdad Afshari
A: 

Prex is under BSD License.

eed3si9n
A: 

There is the S.Ha.R.K. Project. It works with x86 CPUs but I don't know if it handles all cores of a CPU.

Andrea Francia
+5  A: 

FreeRTOS, it provides the underlying kernel. I've used it in some embedded apps and it seems robust. But, it really depends on your application.

http://www.freertos.org/

I don't think there is a x86 port available. Of course, since it's open source, you could write one yourself!
kgiannakakis
+1  A: 

Well this is not Open Source, but did you know that Windows CE is a hard real time operating system and that it does have a x86 port? I don't know however if it can support multi core CPUs. If it is a commercial project, you definitely should consider it.

There is also MicroC/OS-II, which has a x86 port, but as above, I don't know if it supports multi cores. It is free for non-commercial applications.

kgiannakakis
As a bit of trivia many arcade machines use Windows CE nowadays
Robert Gould
A: 

What are your exact requirements? Perhaps you can use vanilla Linux - it doesn't provide real-time guarantees but might be good enough. Some people find that it's not as bad as the real-time vendors try to make out.

Vanilla Linux DOES have different scheduling policies as well, but not a lot of people know that.

MarkR
+2  A: 

eCos is free (but you can get paid support). It supports Intel x86 architecture. It supports multi-processor systems. Depending on your timing requirements, I've had not too good experience with real-time Linux systems. Although response time may be good in average, I've seen cases where the worst case over a few days may be 10 or even 100 times as much. I guess this partly depends on the quality of the drivers, partly on the scheduler itself.

But I guess it boils down to whether your system demands hard or soft real-time, what the timing constraints are, what kind of application you need to run. And how streamlined development system you require.

+1  A: 

There are hard real-time extensions to the Linux kernel. You might want to check some of those out.

Good examples are RTAI and LXRT

RTAI

Mystere Man
A: 

There are real-time extensions to Linux, as already mentioned by someone else. Have a look at xenomai.org.

I'm not so sure about the multiprocessor issue. What exactly do you want to do on your multiple processors?

robert.berger
A: 

OpenSolaris has real-time capabilities, however you should watch out if you decide to use it for real-time development: pretty much all I/O can cause priority inversions in the kernel (low-priority system worker threads can starve and cause high priority threads to be blocked, e.g. in STREAMS code).

ivant
A: 

I have also been using the FreeRTOS operating system that is available either for free under a modified GNU licence, a paid commercial licence version or an expensive safety certified version (SafeRTOS)

From the web-site there is an x86 port as follows

x86

* Supported processor families: Any x86 compatible running in Real mode only, plus a Win32 simulator
* Supported tools: Open Watcom, Borland, Paradigm, plus Visual Studio for the WIN32 simulator

This OS provides the pre-emptive or co-operative task scheduling with queues, semaphores and priority setting for the tasks. It does not provide the sort of I/O or file library functions that come with other larger OS implementations like Linux.

Ian