Делал на i8080 АСУ.
Там были железные прерывания:
0. таймер;
1. приёмник юарт;
2. передатчик юарт.
Они как бы с разным приоритетом, но друг друга не прерывают.
Приёмник юарт, например, только берёт байт из железа и суёт его в софтовый буфер. И всё.
И говорит переключателю задач, что надо бы вызвать подпрограмму завершения для приёмника.
Переключатель, если не выполняется более приоритетная задача, переключается на неё и после этого прерывания разрешаются.
"Подпрограмма завершения прерывания" — это такое название в одной книжке подглядел — достаёт байт из софтового буфера и разбирается, что с ним делать.
А закончив, сообщает переключателю задач, что ей проц больше не нужен.
Получается как бы три уровня:
железные прерывания с коротким временем обработки;
подпрограммы завершения, которые уже не торопясь реагируют на результаты прерываний;
фоновая задача, которая крутится, пока проц никому не нужен.
ЗЫ
Интересно, зачем я это пишу?
Недержание писательства, наверное!!!