A list of different known realtime OS is available here: http://en.wikipedia.org/wiki/List_of_real-time_operating_systems
Notice that it also usually motivated by vendor selling their own hardware. And normally it is opensource, as this will allow the user to buy the hardware, customized it, and modify the opensource realtime software for it, and deploy it. A good summary of important RT features is summarized here: http://en.wikipedia.org/wiki/ChibiOS/RT Features[edit<http://en.wikipedia.org/w/index.php?title=ChibiOS/RT&action=edit§ion=2> ] The ChibiOS/RT microkernel <http://en.wikipedia.org/wiki/Microkernel> supports:[3] <http://en.wikipedia.org/wiki/ChibiOS/RT#cite_note-3> - Preemptive multithreading<http://en.wikipedia.org/wiki/Thread_(computer_science)> - 128 priority levels <http://en.wikipedia.org/wiki/Priority_queue> - Round-robin scheduling<http://en.wikipedia.org/wiki/Round-robin_scheduling> for threads at the same priority level - Software timers<http://en.wikipedia.org/wiki/Programmable_Interval_Timer> - Counting semaphores <http://en.wikipedia.org/wiki/Semaphores> - Mutexes <http://en.wikipedia.org/wiki/Mutex> with support for the priority inheritance <http://en.wikipedia.org/wiki/Priority_inheritance> algorithm - Condition variables <http://en.wikipedia.org/wiki/Condition_variables> - Synchronous and asynchronous Messages<http://en.wikipedia.org/wiki/Message_(computer_science)> - Event flags <http://en.wikipedia.org/wiki/Event-driven_programming> and handlers <http://en.wikipedia.org/wiki/Callback_(computer_science)> - Queues <http://en.wikipedia.org/wiki/Queue_(data_structure)> - Synchronous and asynchronous I/O with timeout<http://en.wikipedia.org/wiki/Timeout_(telecommunication)> capability - Thread-safe memory heap<http://en.wikipedia.org/wiki/Dynamic_memory_allocation> and memory pool <http://en.wikipedia.org/wiki/Memory_pool> allocators. - Hardware Abstraction Layer with support for ADC<http://en.wikipedia.org/wiki/Analog-to-digital_converter> , CAN <http://en.wikipedia.org/wiki/Controller_area_network>, GPT<http://en.wikipedia.org/wiki/Counters> , EXT <http://en.wikipedia.org/wiki/Interrupt>, I2C<http://en.wikipedia.org/wiki/I2C> , ICU <http://en.wikipedia.org/wiki/Input_capture>, MAC<http://en.wikipedia.org/wiki/Ethernet> , MMC/SD <http://en.wikipedia.org/wiki/MultiMediaCard>, PAL<http://en.wikipedia.org/wiki/General_Purpose_Input/Output> , PWM <http://en.wikipedia.org/wiki/Pulse-width_modulation>, RTC<http://en.wikipedia.org/wiki/Real-time_clock> , SDC <http://en.wikipedia.org/wiki/Secure_Digital>, Serial<http://en.wikipedia.org/wiki/Serial_port> , SPI <http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus>, USB<http://en.wikipedia.org/wiki/Universal_Serial_Bus> drivers. - Support for the LwIP <http://en.wikipedia.org/wiki/LwIP> and uIP<http://en.wikipedia.org/wiki/UIP_(micro_IP)> TCP/IP stacks. - Support for the FatFS file system library. All system objects, such as threads<http://en.wikipedia.org/wiki/Thread_(computer_science)> , semaphores <http://en.wikipedia.org/wiki/Semaphores>, timers<http://en.wikipedia.org/wiki/Programmable_Interval_Timer>, etc., can be created and deleted at runtime. There is no upper limit except for the available memory. In order to increase system reliability, the kernel <http://en.wikipedia.org/wiki/Kernel_(computer_science)> architecture is entirely static, a memory allocator is not required (but is available as an option), and there are no data structures with upper size limits like tables or arrays. The system APIs are designed to not have error conditions such as error codes or exceptions. Another good summary is here (cross with the different hardware supported): http://www.chibios.org/dokuwiki/doku.php?id=chibios:matrix Yet another feature summary from NuttX: Key features - Standards Compliant. - Core Task Management. - Modular, micro-kernel. - Fully pre-emptible. - Naturally scalable. - Highly configurable. - Easily extensible to new processor architectures, SoC architecture, or board architectures. See Porting Guide<http://nuttx.org/doku.php?id=documentation:portingguide> . - FIFO and round-robin scheduling. - Realtime, deterministic, with support for priority inheritance. - POSIX/ANSI-like task controls, named message queues, counting semaphores, clocks/timers, signals, pthreads, environment variables, filesystem. - VxWorks-like task management and watchdog timers. - BSD socket interface. - Extensions to manage pre-emption. - Optional tasks with address environments (*Processes*). - Inheritable “controlling terminals” and I/O redirection - On-demand paging. - System logging - May be built either as an open, flat embedded RTOS or as a separtely built, secure micro-kernel with a system call interface. - Well documented in the NuttX User Guide<http://nuttx.org/doku.php?id=documentation:userguide> . More on Chibi: http://www.chibios.org/dokuwiki/doku.php RTLinux: http://en.wikipedia.org/wiki/RTLinux http://www.ee.nmt.edu/~rison/ee352_spr12/Getting_Started_with_RTLinux.pdf http://users.soe.ucsc.edu/~sbrandt/courses/Winter00/290S/rtlinux.pdf Taking Linux and modifying it for realtime has been initially done by Yodaiken: http://www.yodaiken.com/papers/rtlmanifesto.pdf Another is Xenomai: http://en.wikipedia.org/wiki/Xenomai The list of hardware it supports is significant: http://www.xenomai.org/index.php/Embedded_Device_Support and source code download: http://download.gna.org/xenomai/ http://git.xenomai.org/?p=xenomai-2.6.git;a=shortlog;h=0e2a874068d248ea2f940be945c02d425ba03747 and its realtime latencies statistics: https://mail.gna.org/public/xenomai-core/2006-01/msg00160.html Details documentation: http://www.xenomai.org/index.php/Included_documentation_summary And you will be amazed at the performance achieved compared with VxWorks (which cost USD15K to USD19K???): http://code.ua.pt/attachments/download/1650/Performance_Comparison_of_VxWorks__Linux__RTAI_and_Xenomai_in_a_Hard_Real-Time_Application.pdf Another alternative: http://nuttx.org/ (which claimed "VxWorks-like task management and watchdog timers."....hmm...wonder what are so unique about VxWorks?) Measurement of timing and its errors: http://www.fsmlabs.com/images/uploads/White_Paper_TimeKeeper_Performance_v3.pdf http://low-latency.com/article/qa-victor-yodaiken-fsmlabs-time-synchronisation-made-easy http://www.drdobbs.com/measuring-periodic-task-scheduling/184401758 http://www.wallstreetandtech.com/data-management/check-the-time-majority-of-firms-have-ti/240162658 In contrast with the above, many other RTOS are also written from BSD: http://www.embeddedstar.com/weblog/2006/10/19/rtcorebsd/ RTCoreBSD: http://vigir.missouri.edu/~gdesouza/Research/RealTime%20Vision%20Sensor%20Network/d<http://vigir.missouri.edu/~gdesouza/Research/RealTime%20Vision%20Sensor%20Network/devkit_manual.pdf> evkit_manual.pdf<http://vigir.missouri.edu/~gdesouza/Research/RealTime%20Vision%20Sensor%20Network/devkit_manual.pdf> NetBSD: http://www.feyrer.de/NetBSD/bx/blosxom.cgi/index.front?-tags=realtime Audio server: https://jyx.jyu.fi/dspace/bitstream/handle/123456789/12485/URN_NBN_fi_jyu-2005243.pdf?sequence=1 Realtime testing tools (from Xenomai): - clocktest<http://www.xenomai.org/documentation/xenomai-2.6/html/clocktest/index.html> - cyclictest<http://www.xenomai.org/documentation/xenomai-2.6/html/cyclictest/index.html> - dohell<http://www.xenomai.org/documentation/xenomai-2.6/html/dohell/index.html> - irqbench<http://www.xenomai.org/documentation/xenomai-2.6/html/irqbench/index.html> - irqloop<http://www.xenomai.org/documentation/xenomai-2.6/html/irqloop/index.html> - klatency<http://www.xenomai.org/documentation/xenomai-2.6/html/klatency/index.html> - latency<http://www.xenomai.org/documentation/xenomai-2.6/html/latency/index.html> - switchbench<http://www.xenomai.org/documentation/xenomai-2.6/html/switchbench/index.html> - switchtest<http://www.xenomai.org/documentation/xenomai-2.6/html/switchtest/index.html> - xeno-test<http://www.xenomai.org/documentation/xenomai-2.6/html/xeno-test/index.html> Programming APIs for RTOS: http://francois.touchard.perso.esil.univmed.fr/RTLinuxPro/doc/lnet/pdf/lnet_book.pdf http://www.ee.nmt.edu/~rison/ee352_fall09/homepage.html What are the application areas for RTOS? Telecom: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.2575&rep=rep1&type=pdf Trading: http://en.wikipedia.org/wiki/Real-time_database Medical: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC79043/ Unmanned operations: http://www.ee.nmt.edu/~wedeward/papers/2004SPIEDRT.pdf Many others: *Embedded Systems* *General-Purpose Systems* - Missile Avionics Controls - Inertial Guidance System - Telephone Switch - Anti-lock Braking System - iPod - Radiotherapy Machine - Engine Controller - Microwave Oven - Oscilloscope - Programmable Logic Controller - Home Computer - Intrusion Detection System - Web Server - Firewalls (with very few exceptions) - Home DVR - Email Server - X-Box - Virus Scanner Appliance - Phones Using Windows Mobile - Dedicated Network Appliance Different implementation of hardware timers (and its implementation in Linux and FreeBSD): http://www.python.org/dev/peps/pep-0418/#list-of-hardware-clocks Timer functions/API in Python meant for scheduling etc: http://www.python.org/dev/peps/pep-0418/ Bottom line about realtime-ness is about kernel preemption technology: http://www.freebsd.org/doc/en/books/arch-handbook/smp-design.html And a proper balance of resources maximum limits. Development and other work in progress: https://www.osadl.org/Single-View.111+M5c936e2f973.0.html https://www.osadl.org/Single-View.111+M52b435d8b90.0.html http://www.slideshare.net/chappidi_saritha/rt-linux http://www.drdobbs.com/measuring-periodic-task-scheduling/184401758 http://www.yodaiken.com/papers/sync.pdf https://rt.wiki.kernel.org/index.php/Main_Page -- You received this message because you are subscribed to the Google Groups "linuxkernelnewbies" group. To unsubscribe from this group and stop receiving emails from it, send an email to linuxkernelnewbies+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.