ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
1056837 Топик полностью
fk0, легенда (30.11.2020 22:14, просмотров: 203) ответил AlexG на Вызов обработчика прерывания практически ничем не отличается от переключения операционки на выполнение другого процесса. Проблемы те-же.
Другие. Во-первых в прерываниях не будет выполняться произвольный код, библиотеки и т.п. Только код обработчика прерывания. Во-вторых и самое главное, в прерывании нельзя заблокироваться (на мьютексе, семафоре...) И наконец прерывание имеет гарантию, что его может вытеснить более высокоуровневое прерывание только, а не пользовательский код. 

Как следствие: прерывание может использовать атомарные инструкции, не может использовать блокирующиеся примитивы синхронизации, не может использовать спинлоки, может использовать очень ограниченное подмножество функций ОС. В итоге обычно прерывание ограничено нехитрыми алгоритмами почти не требующими синхронизации, работает со своей преаллоцированной памятью и старается взвалить работу на задачу в ОС посредством доступных в прерывании механизмов IPC.


Прерывание с точки зрения пользовательского кода и более низкоприоритетных прерываний выполняется атомарно, чем может пользоваться реализуя любые lockless алгоритмы (пока не конфликтует с более приоритетными прерываниями) на совершенно любом процессоре.

[ZX]