Тасклеты linux - порядок исполнения
В моем университете я работаю над одним проектом, который включает в себя программирование ядра. Одна часть этого - загружаемый модуль ядра, который регистрирует обработчик прерывания для некоторого данного прерывания.
Теперь у меня есть общая структура данных, которая используется обработчиком прерываний и тасклетами, и мне интересно, могу ли я быть уверен, что тасклеты выполняются в том же порядке, в котором они запланированы, или он не определен?
Например, мой обработчик прерываний вызывается во время t1
и время t2
каждый вызов выполняется tasklet_schedule(&customTasklet);
, Теперь я могу быть уверен, что тасклет, который был запланирован на время t1
будет исполнен первым?
1 ответ
По расписанию tasklet
хранятся в списке; система читает этот список в порядке FIFO, так что: да t1
выполняется раньше t2
,
Вот некоторый код, чтобы понять механизм.
редактировать
Как напоминает CL, для каждого ЦП существует список тасклетов; поэтому при планировании тасклета вы планируете его на активном процессоре. Так тасклет сериализуется на одном и том же процессоре. Если вы планируете t1
un CPU1 и t2
на CPU2 может случиться так, что t2
выполняется раньше t1
,