Тасклеты linux - порядок исполнения

В моем университете я работаю над одним проектом, который включает в себя программирование ядра. Одна часть этого - загружаемый модуль ядра, который регистрирует обработчик прерывания для некоторого данного прерывания.

Теперь у меня есть общая структура данных, которая используется обработчиком прерываний и тасклетами, и мне интересно, могу ли я быть уверен, что тасклеты выполняются в том же порядке, в котором они запланированы, или он не определен?

Например, мой обработчик прерываний вызывается во время t1 и время t2каждый вызов выполняется tasklet_schedule(&customTasklet);, Теперь я могу быть уверен, что тасклет, который был запланирован на время t1 будет исполнен первым?

1 ответ

Решение

По расписанию tasklet хранятся в списке; система читает этот список в порядке FIFO, так что: да t1 выполняется раньше t2,

Вот некоторый код, чтобы понять механизм.

редактировать

Как напоминает CL, для каждого ЦП существует список тасклетов; поэтому при планировании тасклета вы планируете его на активном процессоре. Так тасклет сериализуется на одном и том же процессоре. Если вы планируете t1 un CPU1 и t2 на CPU2 может случиться так, что t2 выполняется раньше t1,

Другие вопросы по тегам