21 lines
834 B
Plaintext
21 lines
834 B
Plaintext
@startuml
|
|
skinparam backgroundColor transparent
|
|
skinparam shadowing false
|
|
skinparam defaultFontName Monospace
|
|
skinparam defaultFontSize 12
|
|
skinparam rectangleBorderColor #2c7794
|
|
skinparam rectangleBackgroundColor #edf6fa
|
|
title A8 PATTERNS — choose the synchronization contract
|
|
rectangle "01 Critical section\nvery short CPU-local invariant\nnever block" as critical
|
|
rectangle "02 Scheduler suspension\ndefer scheduling\ninterrupts still run" as suspend
|
|
rectangle "03 Mutex\nownership + priority inheritance\ntask context only" as mutex
|
|
rectangle "04 Gatekeeper task\nsingle resource owner\nmessage-based access" as gatekeeper
|
|
critical -[hidden]right- suspend
|
|
suspend -[hidden]right- mutex
|
|
mutex -[hidden]right- gatekeeper
|
|
note bottom of mutex
|
|
FC08 selects this contract.
|
|
A binary semaphore would not prove PIP.
|
|
end note
|
|
@enduml
|