44
Resource Sharing in Real-time Microkernels – Training: real-time, embedded and concurrent programming – Martijn van den Heuvel - Reinder J. Bril - Johan J. Lukkien System Architecture and Networking (SAN) Department of Mathematics and Computer Science Eindhoven University of Technology The Netherlands 19th July 2010 Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 1 / 24

Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Resource Sharing in Real-time Microkernels– Training: real-time, embedded and concurrent programming –

Martijn van den Heuvel - Reinder J. Bril - Johan J. Lukkien

System Architecture and Networking (SAN)Department of Mathematics and Computer Science

Eindhoven University of TechnologyThe Netherlands

19th July 2010

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 1 / 24

Page 2: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Outline

1 Introduction

2 Task Synchronization

3 Stack Resource Policy in microC/OS-II

4 Conclusions

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 2 / 24

Page 3: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Introduction to Microkernels

An embedded system typically has:

a simpel microcontroller (e.g. TI MSP-430x1611);

very limited resources, especially RAM (∼ 10 kB);

peripherals to be controlled.

A RTOS provides:

abstractions (e.g. tasks and synchronization primitives);

interaction between hardware and application;

simplified debugging;

I/O libraries (support for platform hardware).

Microkernel objective

Provide a reduced, configurable system that fits on a typicalsystem-on-chip.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 3 / 24

Page 4: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Introduction to Microkernels

An embedded system typically has:

a simpel microcontroller (e.g. TI MSP-430x1611);

very limited resources, especially RAM (∼ 10 kB);

peripherals to be controlled.

A RTOS provides:

abstractions (e.g. tasks and synchronization primitives);

interaction between hardware and application;

simplified debugging;

I/O libraries (support for platform hardware).

Microkernel objective

Provide a reduced, configurable system that fits on a typicalsystem-on-chip.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 3 / 24

Page 5: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Introduction to Microkernels

An embedded system typically has:

a simpel microcontroller (e.g. TI MSP-430x1611);

very limited resources, especially RAM (∼ 10 kB);

peripherals to be controlled.

A RTOS provides:

abstractions (e.g. tasks and synchronization primitives);

interaction between hardware and application;

simplified debugging;

I/O libraries (support for platform hardware).

Microkernel objective

Provide a reduced, configurable system that fits on a typicalsystem-on-chip.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 3 / 24

Page 6: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II Basics

microC/OS-II is

a commercial RTOS;

targeted at embedded systems;

open source;

available at http://micrium.com/.

It provides

a portable and configurable kernel;

a fixed-priority, preemptive task scheduler;

basic synchronization services.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 4 / 24

Page 7: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II: Task States

The scheduler selects the highest-priority, ready task.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 5 / 24

Page 8: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II: Scheduling using the Ready Table

At each time instant a task must have a unique priority.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 6 / 24

Page 9: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Outline

1 Introduction

2 Task Synchronization

3 Stack Resource Policy in microC/OS-II

4 Conclusions

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 7 / 24

Page 10: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Basic Synchronization Services

Disable and enable interrupts

share variables or data structures with an ISR.

Software events:

Mailboxes

communicate messages between tasks;FIFO or Priority-based.

Flags

synchronize the occurrence of multiple events.

(Counting) semaphores

e.g. signaling of tasks

Mutexes

resolve priority inversion

Blocking for an event means keeping track of waiting tasks!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 8 / 24

Page 11: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Basic Synchronization Services

Disable and enable interrupts

share variables or data structures with an ISR.

Software events:

Mailboxes

communicate messages between tasks;FIFO or Priority-based.

Flags

synchronize the occurrence of multiple events.

(Counting) semaphores

e.g. signaling of tasks

Mutexes

resolve priority inversion

Blocking for an event means keeping track of waiting tasks!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 8 / 24

Page 12: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Basic Synchronization Services

Disable and enable interrupts

share variables or data structures with an ISR.

Software events:

Mailboxes

communicate messages between tasks;FIFO or Priority-based.

Flags

synchronize the occurrence of multiple events.

(Counting) semaphores

e.g. signaling of tasks

Mutexes

resolve priority inversion

Blocking for an event means keeping track of waiting tasks!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 8 / 24

Page 13: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Disable and Enable Interrupts

The easiest and fastest way to gain exclusive access to a shared resource

Be careful, because:

disabling interrupts for too long affects the response to interrupts(i.e. interrupt latency);

a non-preemptive system becomes easily not schedulable.

However,

it is the only way that a task can share variables or data structureswith an ISR;

Keep interrupts disabled for as little time as possible!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 9 / 24

Page 14: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Disable and Enable Interrupts

The easiest and fastest way to gain exclusive access to a shared resource

Be careful, because:

disabling interrupts for too long affects the response to interrupts(i.e. interrupt latency);

a non-preemptive system becomes easily not schedulable.

However,

it is the only way that a task can share variables or data structureswith an ISR;

Keep interrupts disabled for as little time as possible!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 9 / 24

Page 15: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Disable and Enable Interrupts

The easiest and fastest way to gain exclusive access to a shared resource

Be careful, because:

disabling interrupts for too long affects the response to interrupts(i.e. interrupt latency);

a non-preemptive system becomes easily not schedulable.

However,

it is the only way that a task can share variables or data structureswith an ISR;

Keep interrupts disabled for as little time as possible!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 9 / 24

Page 16: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

MicroC/OS-II: Disable and Enable Interrupts

The easiest and fastest way to gain exclusive access to a shared resource

Be careful, because:

disabling interrupts for too long affects the response to interrupts(i.e. interrupt latency);

a non-preemptive system becomes easily not schedulable.

However,

it is the only way that a task can share variables or data structureswith an ISR;

Keep interrupts disabled for as little time as possible!

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 9 / 24

Page 17: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Mutual Exclusion: Priority Inversion Problem

The price of increased preemptiveness:

What really happened on Mars Rover Pathfinder?Risk Forum (Dec. 1997).

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 10 / 24

Page 18: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Mutual Exclusion: Priority Inheritance Protocol

A solution:

Multi-resource issues:

deadlocks;

chained-blocking.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 11 / 24

Page 19: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Mutual Exclusion: Priority Inheritance Protocol

A solution:

Multi-resource issues:

deadlocks;

chained-blocking.Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 11 / 24

Page 20: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II’s mutexes: Priority calling

Priority calling is similar to priority inheritance protocol (PIP):

Priority Inheritance Rule:

when a higher-priority task blocks on a resource,the lower-priority task holding the resource inherits the higher priority;

Priority Calling Priority Inheritance

unique priority for each resource run-time priority adaption

inherits a predefined priority transitive priority inheritance

non-transparent transparent

It is not: Highest Locker Protocol (HLP) or Stack Resource Policy (SRP).

microC/OS-II: a task inherits a higher priority only when a higherpriority task is blocked;in HLP/SRP a task immediately inherits a priority when it locks aresource.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 12 / 24

Page 21: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II’s mutexes: Priority calling

Priority calling is similar to priority inheritance protocol (PIP):

Priority Inheritance Rule:

when a higher-priority task blocks on a resource,the lower-priority task holding the resource inherits the higher priority;

Priority Calling Priority Inheritance

unique priority for each resource run-time priority adaption

inherits a predefined priority transitive priority inheritance

non-transparent transparent

It is not: Highest Locker Protocol (HLP) or Stack Resource Policy (SRP).

microC/OS-II: a task inherits a higher priority only when a higherpriority task is blocked;in HLP/SRP a task immediately inherits a priority when it locks aresource.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 12 / 24

Page 22: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II’s mutexes: Priority calling

Priority calling is similar to priority inheritance protocol (PIP):

Priority Inheritance Rule:

when a higher-priority task blocks on a resource,the lower-priority task holding the resource inherits the higher priority;

Priority Calling Priority Inheritance

unique priority for each resource run-time priority adaption

inherits a predefined priority transitive priority inheritance

non-transparent transparent

It is not: Highest Locker Protocol (HLP) or Stack Resource Policy (SRP).

microC/OS-II: a task inherits a higher priority only when a higherpriority task is blocked;in HLP/SRP a task immediately inherits a priority when it locks aresource.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 12 / 24

Page 23: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II: protocol classification

microC/OS-II’s synchronization protocol suffers from deadlock:

0 50 100

Task1

Task2

Idle

Legend:

active

holdingmutex

Conclusion:microC/OS-II implements a non-transparent, priority-inheritance protocol

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 13 / 24

Page 24: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II: protocol classification

microC/OS-II’s synchronization protocol suffers from deadlock:

0 50 100

Task1

Task2

Idle

Legend:

active

holdingmutex

Conclusion:microC/OS-II implements a non-transparent, priority-inheritance protocol

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 13 / 24

Page 25: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Outline

1 Introduction

2 Task Synchronization

3 Stack Resource Policy in microC/OS-II

4 Conclusions

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 14 / 24

Page 26: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: Stack Resource Policy (SRP)

Each resource has a statically determined resource ceiling:

Definition of a resource ceiling:

the maximum priority of any task that could use the resource.

A dynamically updated system ceiling is maintained:

Definition of the system ceiling

the maximum resource ceiling of any resource currently being locked in thesystem.

A task can only be selected for execution if1 it has the highest priority among all ready tasks;2 its priority is higher than the current system ceiling.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 15 / 24

Page 27: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: Stack Resource Policy (SRP)

Each resource has a statically determined resource ceiling:

Definition of a resource ceiling:

the maximum priority of any task that could use the resource.

A dynamically updated system ceiling is maintained:

Definition of the system ceiling

the maximum resource ceiling of any resource currently being locked in thesystem.

A task can only be selected for execution if1 it has the highest priority among all ready tasks;2 its priority is higher than the current system ceiling.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 15 / 24

Page 28: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: Stack Resource Policy (SRP)

Each resource has a statically determined resource ceiling:

Definition of a resource ceiling:

the maximum priority of any task that could use the resource.

A dynamically updated system ceiling is maintained:

Definition of the system ceiling

the maximum resource ceiling of any resource currently being locked in thesystem.

A task can only be selected for execution if1 it has the highest priority among all ready tasks;2 its priority is higher than the current system ceiling.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 15 / 24

Page 29: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: SRP is Non-blocking

SRP provides non-blocking primitives:

blocking occurs upon an attempt to preempt, rather thanupon an attempt to access a resource (no wait queues).

it therefore allows tasks to share their execution stack;

Sharing of the execution stack is possible, if

two tasks execute non-interleaved.

Why does stack-sharing not work in microC/OS-II?

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 16 / 24

Page 30: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: SRP is Non-blocking

SRP provides non-blocking primitives:

blocking occurs upon an attempt to preempt, rather thanupon an attempt to access a resource (no wait queues).

it therefore allows tasks to share their execution stack;

Sharing of the execution stack is possible, if

two tasks execute non-interleaved.

Why does stack-sharing not work in microC/OS-II?

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 16 / 24

Page 31: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: SRP is Non-blocking

SRP provides non-blocking primitives:

blocking occurs upon an attempt to preempt, rather thanupon an attempt to access a resource (no wait queues).

it therefore allows tasks to share their execution stack;

Sharing of the execution stack is possible, if

two tasks execute non-interleaved.

Why does stack-sharing not work in microC/OS-II?

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 16 / 24

Page 32: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: SRP’s Implementation Consequences

SRP is non-transparent:

similar to microC/OS-II’s PIP-like implementation.each resource has a statically computed ceiling(represents the highest priority task that uses the resources).

Maintaining the system ceiling can be implementedusing a stack data structure:

we stack the resource ceilings of used resourcesin a monotonically increasing order;the top of the stack represents the system ceiling.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 17 / 24

Page 33: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Intermezzo: SRP’s Implementation Consequences

SRP is non-transparent:

similar to microC/OS-II’s PIP-like implementation.each resource has a statically computed ceiling(represents the highest priority task that uses the resources).

Maintaining the system ceiling can be implementedusing a stack data structure:

we stack the resource ceilings of used resourcesin a monotonically increasing order;the top of the stack represents the system ceiling.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 17 / 24

Page 34: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II: Our SRP extension

Deadlocks are resolved when critical sections are properly nested:

0 50 100

Task1

Task2

Idle

Legend:

active

holdingmutex

Easy implementations (approx. 170 lines of code);

Extended microC/OS-II scheduler with SRP’s preemption rule.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 18 / 24

Page 35: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

microC/OS-II: Our SRP extension

Deadlocks are resolved when critical sections are properly nested:

0 50 100

Task1

Task2

Idle

Legend:

active

holdingmutex

Easy implementations (approx. 170 lines of code);

Extended microC/OS-II scheduler with SRP’s preemption rule.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 18 / 24

Page 36: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Alternative SRP implementation

Assuming fixed-priority scheduling:

Immediate Priority Ceiling exhibits the same execution behavior as SRP

Instead of changing the scheduler:

Lock: raise a task’s priority equal to the resource ceiling;Unlock: restore a task’s priority.

Note 1: Immediate Priority Ceiling == Highest Locker Protocol

Note 2: SRP/IPC/HLP do not need waiting lists of blocked tasks!

Advantages or disadvantages?

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 19 / 24

Page 37: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Alternative SRP implementation

Assuming fixed-priority scheduling:

Immediate Priority Ceiling exhibits the same execution behavior as SRP

Instead of changing the scheduler:

Lock: raise a task’s priority equal to the resource ceiling;Unlock: restore a task’s priority.

Note 1: Immediate Priority Ceiling == Highest Locker Protocol

Note 2: SRP/IPC/HLP do not need waiting lists of blocked tasks!

Advantages or disadvantages?

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 19 / 24

Page 38: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Alternative SRP implementation

Assuming fixed-priority scheduling:

Immediate Priority Ceiling exhibits the same execution behavior as SRP

Instead of changing the scheduler:

Lock: raise a task’s priority equal to the resource ceiling;Unlock: restore a task’s priority.

Note 1: Immediate Priority Ceiling == Highest Locker Protocol

Note 2: SRP/IPC/HLP do not need waiting lists of blocked tasks!

Advantages or disadvantages?

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 19 / 24

Page 39: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Outline

1 Introduction

2 Task Synchronization

3 Stack Resource Policy in microC/OS-II

4 Conclusions

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 20 / 24

Page 40: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Conclusions

We presented:

an overview of microC/OS-II’s task-communication methods;

a classification of microC/OS-II’s priority-inversion protocol;

an efficient task-level SRP implementation;

Keep in mind:

Make a minimal number of modifications to MicroC/OS-II;

Keep durations of disabled interrupts short and predictable;

Be aware of the consequences of blocking.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 21 / 24

Page 41: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Conclusions

We presented:

an overview of microC/OS-II’s task-communication methods;

a classification of microC/OS-II’s priority-inversion protocol;

an efficient task-level SRP implementation;

Keep in mind:

Make a minimal number of modifications to MicroC/OS-II;

Keep durations of disabled interrupts short and predictable;

Be aware of the consequences of blocking.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 21 / 24

Page 42: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

References

T. Baker.Stack-based scheduling of realtime processes.Real-Time Systems, 3(1):67–99, March 1991.

G. Buttazzo.Hard real-time computing systems - predictable scheduling algorithmsand applications (2nd edition).Springer, 2005.

L. Sha, R. Rajkumar, and J. Lehoczky.Priority inheritance protocols: an approach to real-timesynchronisation.IEEE Trans. on Computers, 39(9):1175–1185, September 1990.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 22 / 24

Page 43: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

References (Continued)

P. Gai, G. Lipari, and M. Di Natale.Minimizing memory utilization of real-time task sets in single andmulti-processor systems-on-a-chip.In 22nd RTSS, pages 73 – 83, Dec. 2001.

J. J. Labrosse.Microc/OS-II.R & D Books, 1998.

M. M. H. P. van den Heuvel, R. J. Bril, J. J. Lukkien, andM. Behnam.Extending a HSF-enabled open-source real-time operating system withresource sharing.In Proc. 6th OSPERT, pages 71–81, July 2010.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 23 / 24

Page 44: Resource Sharing in Real-time Microkernelsmholende/ooti/ooti_rt_course_srp.pdf · 2010. 7. 23. · Resource Sharing in Real-time Microkernels { Training: real-time, embedded and concurrent

Questions

1 What are the disadvantages of SRP compared to PIP?

2 What are the (dis)advantages of both SRP implementation methods?

3 Implement SRP in microC/OS-II.

4 Make 3 test-cases and exchange the test-cases with your neighbor.

5 Make a test application with at least two tasks that need mutualexclusive access to the UART device,i.e. two concurrent tasks try to print a string to the serial port.

Martijn van den Heuvel (TU/e, SAN) Resource Sharing in Real-time Microkernels 19th July 2010 24 / 24