2008-09-20 7 views

ответ

3

При создании семафора мьютекса в VxWroks у вас есть два варианта решения нескольких задач, стоящих в очереди (ожидания) для семафора: FIFO или задачи с наивысшим приоритетом.

Если вы используете параметр SEM_INVERSION_SAFE, задача, в которой выполняется мьютекс, будет сбиваться с тем же приоритетом, что и задача с наивысшим приоритетом, ожидающая семафора.

Если вы должны были использовать очередь FIFO для семафора, ядру пришлось бы пройти очередь задач, ожидающих, пока мьютекс найдет ту, которая имеет наивысший приоритет. Эта операция не является детерминированной, поскольку время прохождения очереди изменяется по мере изменения количества задач в очереди.

Когда вы используете параметр SEM_PRIORITY_Q, ядро ​​просто должно посмотреть задачу во главе очереди, так как это самый высокий приоритет. Это операция с постоянным временем.