Протокол немедленного потолка (ICPP) и системные вызовы - PullRequest
0 голосов
/ 04 января 2019

Каким образом ОСРВ обеспечивает совместимый с ICPP семафор, который использует один системный вызов для выполнения операций семафора и корректировки приоритетов, отличается от совместимого с ICPP семафора, который не использует системный вызов для его реализации?

Поскольку системные вызовы

У меня есть следующие соображения: если операция семафора выполняется одним системным вызовом, то этот системный вызов не может быть прерван другими задачами, пока он не завершит свое выполнение. Во время системного вызова другая задача с более высоким приоритетом становится активной и готовой к выполнению, но задача не будет запланирована, поскольку системный вызов выполняется атомарно. Например, когда задача B входит в критическую секцию после блокировки ресурса R, и приоритет задачи B повышается до потолка R из-за ICPP, пробуждается другая задача A, которая имеет более высокий приоритет, чем потолок приоритета R. Хотя задача A не использует R, она не может вытеснять задачу B, поскольку задача B использует системный вызов для операций с семафорами.

Может ли кто-нибудь высказать свое собственное мнение о том, как семафоры ICPP, использующие системные вызовы, будут вести себя иначе, чем те, которые этого не делают?

...