J.BAKSHI wrote:
Hi:Hi list,
there are 2 linux distros 1) real time linux 2) embedded linux
could any one pls provide me any clear idea what are these ? is there any good book/site to learn them ?
also pls let me know what are IPC, POSIX and POSIX IPC ?
thanks for your time.
I am taking the liberty of writing a few lines <jpm>
It is better to look at them as real-time systems and embedded-systems, and then add the role of Linux in this technology sphere.
I had the experience of working on a large system(mainframe lookalike) installed by IBM at a Steel Plant (I think it was IBM 1800). It was known as a real time system, since it was used to monitor the furnace inputs and take action. But today you may not find such mainframe lookalikes. But majority of the realtime systems used today will be systems implemented on one or more 'tiny' 32 or 64 bit systems.
So you could say that majority of real-time systems in use are based on 'embedded systems'. But there are some implemented on large hardware platforms. Typical examples are those used in Aircraft and space vehicles or even in critical Medical equipments.
But there are many embedded systems that do not have the features of RTOS kernel. A typical example will be an embedded system used as a game console like Gameboy (If I am not mistaken it uses ARM processor and Linux).
A real-time system has a number of restrictions and features:
1. Detrminism - For the environment that is selected it should have predictable performance even if there are many (assume the I/O is fully staurated) Input Output taking place simultaneously. You can include paging in/out of Virtual Memory pages also into this timing. If a particular CPU (at say 50 MHz) is failing to meet the requirement, can the designer just chnage the component to a 200MHz CPU ? No, it is possible that the OS may sometimes go through a dubious I/O routine that once in a bluemoon it may delay the application software beyond the tolerance level. So the rule is that the OS is so designed that under "NO" circumstance will it fail to give adequate response to the Real-time application running on that processor.
2. Pre-emptive kernel - The kernel itself should be pre-emptible. The old Linux kernel was not pre-emptible, ie. if a kernel routine is in control of the CPU, the next Interrupt may have to wait till the kernel routine is complete. I believe the new 2.6 kernel may be pre-emptible, and therefore suitable for RTOS category. I am quoting below from "Solaris Internals":
"The Solaris kernel is preemptive; that is, the execution of an operating system kernel thread, or user thread can be preempted if a higher priority thread becomes runnable. This feature minimizes dispatch latency and is a key component to the implementation of real-time scheduling class"
Latency reduction achives predictable preformance.
P.S. Some books and authors explain erroneously refer to pre-empting a running (user) thread as pre-emptive kernel. This is wrong as they do not consider the kernel thread itself.
Embedded systems are more common place now, as I mentioned earlier game consoles, home security systems, industrial controllers, MP3 players, Mobile phones etc...My router is also an embedded system. But they do not come under real-time systems.
What is the role of Linux in this field:
Slowly, many organizations are testing eCos ( a system derived from RedHat group) for real-time capability. LynuxWorks got their own version of Realtime system (but not GPL). If kernel 2.6 meets the basic requirement, that too can be used for real-time system development. So probably you can replace the systems with a "reliable" hardware running Linux kernel 2.6
As far as Embedded systems are concerned Linux is a good choice and as per the surveys more than 50% systems are built with Linux. There are a number of diffrent websites that support embedded system development on ARM, PowerPC (PPC) and MIPS etc. all using Linux.
I hope the significance and difference of the two are clear from the above.
I suggest reading from web more information on this than spending money on a book. There is plenty of reading material available.
P.S. You must note that Linux in general is available only on platforms that support Memory Management Unit (for support of Virtual Memory). eCos can be configured on systems without MMU. uCLinux is another distribution that supports similar features and modules for systems without MMU. So while you are very near Linux hub, you may be adopting a slightly different path for a specific platform.
Please let me know if this information was useful to you.
For IPC, I suggest you lookup and read on what services are offered by a typical kernel for applications using Inter Process Communication. This subject is more complex, and you need to read some books. Read about System V IPC : Shared Memory, Message Queues and Semaphore.
Read Chapter 6 of Unix Internals by Uresh Vahalia.
JPMathew
-------------------------------------------------------------- DPS INDIA PRIVATE LTD., CALCUTTA, INDIA
-- To unsubscribe, send mail to [EMAIL PROTECTED] with the body "unsubscribe ilug-cal" and an empty subject line. FAQ: http://www.ilug-cal.org/node.php?id=3
