Я пытаюсь понять, как работает переключатель контекста процесса и механизм подкачки процесса , особенно когда процесс получает блокировку.
Предположим, что процесс A приобрел либо Mutex , либо Spinlock . Пожалуйста, исправьте меня, если я ошибаюсь ниже.
В случае Спинлок : Когда процесс получил Спинлок , приоритетное действие ядра отключено, следовательноне будет переключения контекста , так правда ли, что отключение вытеснения (переключение контекста) также предотвращает выгрузку процесса? Или есть другой способ, которым ядро помечает процесс как «не подлежащий обмену», пока он удерживает Spinlock ?
В случае Mutex: процесс может переходить в состояние сна, удерживая мьютекс , а также выгрузка не отключена . можно ли заменить этот процесс, удерживая мьютекс ? Если нет, то как этот процесс будет предотвращен от замены?
Извините за неясное объяснение проблемы.
Платформа: Linux на x86