Cooperative scheduling is a style of scheduling in which the OS never interrupts a running process to initiate a context switch from one process to another. Processes must voluntarily yield control periodically or when logically blocked on a resource.
Preemptive Scheduling
Preemptive Scheduling is a multitasking strategy which permits the preemption of tasks. Preemption is the act of interrupting a task currently running on the CPU, usually to execute a higher-priority task, with the intention of resuming the interrupted task at a later time.
Time Slicing
Time Slicing is an RTOS scheduling method that distributes CPU cycles to multiple threads in a weighted manner.
Round-Robin Scheduling
Round-Robin Scheduling is a method used by an RTOS to run threads in a circular fashion, letting each thread run until it becomes “blocked,” or relinquishes its turn.
Context Switch
A context switch is the process of storing the state of a process, thread, or processor operating mode so that it can be restored at a later point to resume execution.
Priority Inversion
Priority inversion is a scenario in scheduling in which a high priority task is indirectly preempted by a lower priority task effectively inverting the relative priorities of the two tasks.
Priority Inheritance
Priority Inheritance is a mechanism employed by an RTOS to prevent deadlock in a case of priority inversion.
Active Object [AO]
The active object design pattern decouples method execution from method invocation for objects that each reside in their own thread of control. Typically, an active object is constructed using an internal thread and a queue of operations or events that will be executed on the active object’s thread. The goal is to enable concurrency using asynchronous invocation, and to eliminate the need for an object to worry about managing threading details itself: that’s all taken care of under the hood.
From Around the Web
- What is an Active Object? by Matthew Eshleman
- Active Objects (Actors) by Miro Samek
- Programming embedded systems: active objects in real-time by Miro Samek
- Beyond the RTOS by Miro Samek
- Programming embedded systems: event-driven active objects by Miro Samek
- Quantum Programming for Embedded Systems: Toward a Hassle-Free Multithreading by Miro Samek
- Managing Concurrency in Complex Embedded Systems by Dr. David M. Cummings
- Prefer Using Active Objects Instead of Naked Threads by Herb Sutter
- Know When to Use an Active Object Instead of a Mutex by Herb Sutter
- Message Passing for Intertask Communication by Dr. David Kalinsky
- New Directions in RTOS Kernels by Dr. David Kalinsky
- The Actor Model: Towards Better Concurrency by Dror Bereznitsky
- Active Object by Rainer Grimm
Semaphore
A protected variable that restricts access to a shared resource. Mutexes and conditions are both different types of semaphore.
Mutex
A lock that provides mutually exclusive access to a shared resource.