Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

µC/OS-III is a preemptive kernel, which means that µC/OS-III always runs the most important task that is ready-to-run as shown in Figure 1-2.

Anchor
Figure - µC/OS-III is a preemptive kernel
Figure - µC/OS-III is a preemptive kernel

Panel
borderWidth0
titleFigure - µC/OS-III is a preemptive kernel

Image Added


Panel
bgColor#f0f0f0

(1) A low-priority task is executing.

(2) An interrupt occurs, and the CPU vectors to the ISR responsible for servicing the interrupting device.

(3) The ISR services the interrupt device, but actually does very little work. The ISR will typically signal or send a message to a higher-priority task that will be responsible for most of the processing of the interrupting device. For example, if the interrupt comes from an Ethernet controller, the ISR simply signals a task, which will process the received packet.

(4) When the ISR finishes, µC/OS-III notices that a more important task has been made ready-to-run by the ISR and will not return to the interrupted task, but instead context switch to the more important task.

(5) The higher-priority task executes and performs the necessary processing in response to the interrupt device.

(6) When the higher-priority task completes its work, it loops back to the beginning of the task code and makes a µC/OS-III function call to wait for the next interrupt from the device.

(7) The low-priority task resumes exactly at the point where it was interrupted, not knowing what happened.


Kernels such as µC/OS-III are also responsible for managing communication between tasks, and managing system resources (memory and I/O devices).

...