Ответ 1
Все прерывания обрабатываются ядром. Это делается обработчиком прерываний, написанным для этого конкретного прерывания. Для обработчика прерываний есть стек IRQ. Настройка стеков обработчиков прерываний - это вариант конфигурации. Размер ядра не всегда может быть достаточным для работы ядра и пространства, требуемого Процедуры обработки IRQ. Следовательно, в стек попадает 2 стека.
- Hardware IRQ Stack.
- Программное обеспечение IRQ Stack.
В отличие от обычного стека ядра, который выделяется для каждого процесса, два дополнительных стека выделяются для каждого процессора. Всякий раз, когда происходит аппаратное прерывание (или обрабатывается softIRQ), ядро должно переключиться на соответствующий стек. Исторически обработчики прерываний не получали свои собственные стеки. Вместо этого обработчики прерываний будут совместно использовать стек текущего процесса, они прерываются. Стек ядра имеет две страницы; как правило, это 8 КБ на 32-разрядных архитектурах и 16 КБ на 64-битных архитектурах. Поскольку в этой настройке обработчики прерываний совместно используют стек, они должны быть исключительно экономными с теми данными, которые они выделяют там. Конечно, стеки ядра ограничены для начала, поэтому весь код ядра должен быть осторожным.