Kernel semaphores are “sleeping locks”
Cannot be used in interrupt context because it is blocking kernel locking. Semaphores can only be used in process context (system calls, workqueues).
So the circumstance is limited
Blocking and single cpu can be used
special purposed binary semaphore