тасклеты linux - порядок выполнения
-
26-12-2019 - |
Вопрос
В моем университете я работаю над одним проектом, который включает в себя некоторое программирование ядра.Одной из частей этого является загружаемый модуль ядра, который регистрирует обработчик прерываний для некоторого заданного прерывания.
Теперь у меня есть общая структура данных, которая используется обработчиком прерываний и тасклетами, и мне интересно, могу ли я быть уверен, что тасклеты выполняются в том же порядке, в котором они запланированы, или это не определено?
Например, мой обработчик прерываний вызывается во время t1
и время t2
, каждый вызов выполняется tasklet_schedule(&customTasklet);
.Теперь, могу ли я быть уверен, что тасклет, который был запланирован вовремя t1
будет выполнен первым?
Решение
Планируемый tasklet
хранятся в списке;система прочитала этот список в ФИФО порядок, так что:да t1
выполняется до t2
.
Здесь какой-то код чтобы понять механизм.
редактировать
Как напоминает cl, существует список задачлетов для каждого процессора;таким образом, когда вы распределяете тасклет, вы планируете его на активном процессоре.Таким образом, тасклеты сериализуются на одном и том же процессоре.Если вы запланируете t1
CPU1 оон и t2
на CPU2 может случиться так, что t2
выполняется до t1
.