1 / 22

Real-Time Operating Systems

Real-Time Operating Systems. Suzanne Rivoire November 20, 2002. http://www.stanford.edu/~skrufi/rtospres.ppt. Motivating Example. void main() { do forever{ check keypad; measure temperature; control oven power; decrement timer; update display;

andra
Télécharger la présentation

Real-Time Operating Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Real-Time Operating Systems Suzanne Rivoire November 20, 2002 http://www.stanford.edu/~skrufi/rtospres.ppt

  2. Motivating Example void main() { do forever{ check keypad; measure temperature; control oven power; decrement timer; update display; wait for clock tick; } }

  3. Motivating Example - 2 void main() { do forever{ check keypad; measure temperature; check keypad; control oven; check keypad; } }

  4. Presentation Outline • Definition of real-time • Characteristics of RTOS’s • Examples • c-OS • AvrX • RTLinux • QNX Neutrino

  5. What is real-time? • Correctness of output depends on timing as well as result • Hard vs. soft real-time • Are Windows and Linux real-time?

  6. In a Hard RTOS… • Thread priorities can be set by the client • Threads always run according to priority • Kernel must be preemptible or bounded • Interrupts must be bounded • No virtual memory

  7. In a Soft RTOS… • Like a hard RTOS: • Priority scheduling, with no degradation • Low dispatch latency • Preemptible system calls • No virtual memory (or allow pages to be locked) • Linux: guarantees about relative timing of tasks, no guarantees about syscalls

  8. Basic RTOS References • http://www.dedicated-systems.com/encyc/publications/faq/rtfaq.htm • http://www.steroidmicros.com/mtkernel.html • http://www.qnx.com/developer/articles/dec1200b/ • Silberschatz and Galvin, Operating System Concepts.

  9. Example RTOS’s • Micrium c-OS II http://www.ucos-ii.com/ • AvrX http://www.barello.net/avrx/ • RTLinux http://fsmlabs.com/developers/man_pages/ • QNX Neutrino http://www.qnx.com/

  10. c-OS II • Features • Sample main() function • Calling OSTaskCreate() • Creating a task

  11. C-OS II • Ports to the AVR, ATmega103 • Comes with book: Micro-C OS: The Real-Time Kernel by Jean Labrosse ($52) • Features • Semaphores and mutexes • Event flags • Message mailboxes and queues • Task management (priority settings)

  12. C-OS Sample Code void main (void) { /* Perform Initializations */ ... OSInit(); ... /* Create at least one task by calling OSTaskCreate() */ OSStart(); }

  13. C-OS Sample Code INT8U OSTaskCreate ( void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);

  14. C-OS Sample Code void UserTask (void *pdata) { pdata = pdata; /* User task initialization */ while (1) { /* User code goes here */ /* You MUST invoke a service provided by µC/OS-II to: */ /* ... a) Delay the task for ‘n’ ticks */ /* ... b) Wait on a semaphore */ /* ... c) Wait for a message from a task or an ISR */ /* ... d) Suspend execution of this task */ }}

  15. AvrX • Specs • Internal structures • Sample code: task creation

  16. AvrX Specs • Code size: 500-700 words (2x bigger with debug monitor) • 16 priority levels • Overhead: 20% of CPU • Version 2.3 for assembly code, 2.6 for C interface

  17. AvrX Internals • Routine _Prolog saves state, _Epilog restores it • Task info stored in a PID block and a task control block • Modules for timers, semaphores, etc.

  18. An AvrX Task AVRX_TASKDEF(myTask, 10, 3){    TimerControlBlock MyTimer;    while (1)    {        AvrXDelay(&MyTimer, 10); // 10ms delay        AvrXSetSemaphore(&Timeout);    }} Arguments: task name, additional stack bytes, priority

  19. RTLinux • Additional layer between Linux kernel and hardware • Worst-case dispatch latency on x86: 15 s

  20. RTLinux: Basic Idea

  21. QNX Neutrino • Powerful hard RTOS • Includes GUI • Memory protection and fault tolerance

  22. Summary • Hard real-time, soft real-time • Characteristics of an RTOS • Example RTOS’s • Specs • Internal structure/ideas • Sample code

More Related