Real Time Operating System
RTOS is specifically designed for real time applications. It should respond the external events with in a short and predictable time frame.
The following devices are using RTOS,
Set top box
Examples for RTOS,
Realtime applications can be classified as either hard or soft realtime.
Hard realtime applications require a response to events within a predetermined amount of time for the application to function properly. If a hard realtime application fails to meet specified deadlines, the application fails. While many hard realtime applications require high-speed responses,
the granularity of the timing is not the central issue in a hard realtime application.
An example of a hard realtime application is Avionic control system where a late response will result fail in operation.
Soft realtime applications do not fail if a deadline is missed. Some soft realtime applications can process large amounts of data or require a very fast response time, but the key issue is whether or not meeting timing constraints is a condition for success.
An example of a soft realtime application is an hotel reservation system where an occasional delay is tolerable, but unwanted.
Four main tasks of OS
- Process Management
- Process creation
- Process execution control
- Interaction of the process with signal events
- Process monitoring
- CPU allocation
- Process termination
- Interprocess Communication
- Synchronization and coordination
- Deadlock and Livelock detection
- Process Protection
- Data Exchange Mechanisms
- Memory Management
- Services for file creation, deletion, reposition and protection
- Input/Output Management
- Handles requests and release subroutines for a variety of peripherals and read, write and reposition programs
Three states of CPU to schedule
- Ready - waiting to run (in ready list)
- Running - process (thread or task) is utilizing the processor to execute instructions
- Blocked - waiting for resources (I/O, memory, critical section, etc.)
The kernel scheduler
The kernel scheduler can be prevented from preempting or timeslicing the current
task, by using the following pair of functions:
void task_lock (void);
void task_unlock (void);
Provide a away for external events to control the CPU.
CPU will stop executing the current task and start executing the interrupt handler for that interrupt.
Interrupts can be prevented from interrupting the task by using the
interrupt_mask() or interrupt_mask_all() functions.
A task needs to voluntarily give up control of the CPU so that another
task at the same priority can execute, that is, terminate the current timeslice. This
is achieved with the functions:
void task_reschedule (void);
void task_yield (void);
Tasks communicate with each other using message queues.
Semaphore and Mutex
Tasks synchronize their actions with each other using semaphores and mutexes.
- Way to synchronize multiple tasks
- to ensure mutual exclusion
- Control access to a shared resource
What is preemption?
The act of suspending the execution of one thread and starting (or resuming) another. The suspended thread is said to have been "preempted" by the new thread.
A scheduler that may switch between threads at any time.
What is priority inverse?
A situation where a low-priority task holds a resource which a higher-priority task is waiting for.