Может ли это привести к проблеме, аналогичной инверсии приоритетов?
В моем проекте есть практика уменьшения приоритета потока при записи в файл и его изменения после завершения операции записи. Это сделано потому, что операция записи в файл может занять важные ресурсы, время и ограничить выполнение другими важными потоками своих задач.
Но представьте, что мой поток работает с приоритетом 30. Во время операции записи файла я меняю приоритет на 5. Не означает ли это, что другой поток с приоритетом 10 может заблокировать мой поток, который обычно имеет приоритет 30,
Я понимаю, что это звучит как инверсия приоритетов, но во время моего исследования сценарий инверсии приоритетов обычно включает в себя критический раздел, но в моем сценарии его нет. Наши приложения используют политику планирования RR, но операционная система (QNX) использует как RR, так и FIFO. Любая помощь приветствуется.
1 ответ
Сценарий для инверсии приоритета дается только тогда, когда ваша задача с prio 10 также хочет использовать файл, а задача с prio 5 блокирует ресурс. Или задача с prio 10 блокируется задачей с prio 5 любым другим способом.
Я понимаю, почему вы хотели бы снизить prio задачи, используя IO для записи файла. Таким образом, вы не блокируете свою систему ожиданиями операций ввода-вывода. Но если вы хотите предотвратить инверсию prio, вы должны увеличить приоритет, когда задача с более высоким приоритетом хочет превзойти тот же файл.