@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