Может ли процесс в контексте ядра спать, удерживая мьютекс? - PullRequest
0 голосов
/ 29 марта 2019

Я знаю, что ядро ​​позволяет процессу спать, удерживая мьютекс (хотя это не очень хорошая практика).Мой вопрос заключается в том, означает ли это, что процесс будет получать pre-empted? LKD сообщает, что каждый раз, когда я получаю блокировку, process->thread_info->preempt_count будет увеличиваться, и schedule () проверяет наличие preempt_count перед вызовом планировщика.

Так что, не приведет ли упреждающий поток к перегрузке и продолжит загружать систему?

1 Ответ

0 голосов
/ 29 марта 2019

Да, держатель мьютекс вполне может спать.


LKD говорит, что каждый раз, когда я получаю замок, process->thread_info->preempt_count будет увеличиваться ...

Это примерно спин-блокировки , а не мьютексы .Держателю spinlock фактически запрещено спать.

...