190 likes | 205 Views
Topics Covered. What is Real Time Operating System (RTOS) Standard for RTOS VxWorks Features as RTOS Layer Structure Microkernal Functions: Multitasking Scheduling Interrupt Service Code Shared Code and Reentrancy Intertask Communications Applications for VxWorks.
E N D
Topics Covered • What is Real Time Operating System (RTOS) • Standard for RTOS • VxWorks Features as RTOS • Layer Structure • Microkernal Functions: • Multitasking • Scheduling • Interrupt Service Code • Shared Code and Reentrancy • Intertask Communications • Applications for VxWorks
What is Real Time OS (RTOS) • RTOS Characteristics • Processing must be done within a time constraint or the system will fail. • All delays in the system will be bounded; from the retrieval of stored data to the time RTOS finishes the request. • Types of RTOS • Hard RTOS • Soft RTOS
Standard for RTOS • Standard requirement for RTOS • POSIX 1003.1b by ISO/IEEE chapter. POSIX interfaces: • Queued signals • Scheduling • Clocks and timers • Asynchronous I/O • Semaphore • Message queues • Memory management
Layer Structure Real-Time Embedded Application Internet Graphics Multiprocessing Java Support POSIX Library File System WindNet Networking Core OS: Wind Microkernal
Multitasking P R D S • Suspended – used primarily for debugging • Ready – wait for CPU, • a single primitive=create+activate • Pended – blocked, wait t time for recourses. After t - Error. • Delay – asleep for t time, after t goes to ready state. • On a context switch, a task’s context is saved in TCB. All code executes in a single common space. Memory isn’t saved.
Scheduling, One CPU • Priority-based preemptive scheduling • Each task has priority (from 0 - highest to 255 - lowest). Each priority has its own queue. • If two tasks are in the ready state, a lower priority task would be pre-empted by one of a higher priority. • Round-robin scheduling • After time slice for a task expires, another task with the same priority will execute during the given time slice. • Preemption locks • These locks prevent task context switching, but do not prevent interrupt handling.
Interrupt Service Code Via interrupts, the system is informed of external events. • Interrupt Service Routines (ISRs) run outside any task context. • Interrupt handling involves no task context switch. • Limitations of ISR: • All ISRs share the same stack • ISR has no context that can be suspended • Cannot take the semaphore, but can give the semaphores, releasing any task waiting on them. • Cannot perform I/O through drivers except pipe.
Shared Code and Reentrancy • Shared Code - a single copy of code executed by multiple tasks. • Shared Code must be reentrant. A subroutine is reentrant if a single copy of the routine can be called simultaneously from several task contexts without conflict. • Reentrancy Techniques: • Dynamic Stack Variables • Global and Static Variables Guarded by Semaphores • Task Variables
Shared Code and Reentrancy, Continued Dynamic Stack Variables Task Stacks Common Function Tasks Task1( ){ ….. comFun(myData1) } myData1 comFun(yourData){ } Task2( ){ ….. comFun(myData2) } myData2
Shard Code and Reentrancy, Continued • Guarded Global and Static Variables • Mutual-exclusion mechanism - only one task at a time can be in a critical section of the code. • Task Variables • Four byte variables are added to the task context block (TCB).
Intertask Communications, One CPU Types of Intertask Communications: • Shared Data • Message Queue • Pipes - Virtual I/0 • Network Intertask Communication • Sockets • Remote Procedure Call
Intertask Communication, Shared Data Tasks Memory Access SharData 1. Access SharData SharData 2. Access SharData 3.
Semaphores Semaphore - mechanism for mutual exclusion and intertask communication. • Binary Semaphore Semaphore available TimeOut= No_Wait NO Task is pended for timeOut NO NO YES YES Task cont. Semaphore taken Task cont. Semaphore not taken
Semaphores, Continued • Counting Semaphore • Every time is semaphore is given count ++ • Every time is semaphore is taken count -- • If count=0, task that tried to take semaphore is blocked • If semaphore is given and task is blocked, task is unblocked • Is semaphore is given and no tasks are blocked, count ++ • Special Semaphore Option (Not in POSIX) • Timeout • Time the task is willing to wait (time in ticks) in pended state. If time > timeout, ERROR occurs.
Intertask Communication, Message Queue • Allows a variable number of messages to be queued • Any task or ISR can send a message to a queue. • Multiple tasks can send and receive from the same message queue. • Timeout Parameter: • Send message: how long to wait for buffer space to place message. • Receive message: how long to wait to obtain message.
Applications for VxWorks Some usage of RTOS • Flight simulators • Radio and optical telescopes • Navigation systems • Deep sea instrumentation • Traffic control systems • Modems • Printers • Digital cameras • Hand-held computing devices • Routers, switches, and other network devices … any systems where rigid time requirement have been placed on the operation of a processor or the flow of the data.
Thank You Any Questions ?
Bibliography VxWorks 5.4 Programmer Guide