Обработка программного обеспечения ядра
Я читаю книгу о Windows Internals, и я кое-что не понимаю:
"Ядро обрабатывает программные прерывания либо как часть обработки аппаратных прерываний, либо синхронно, когда поток вызывает функции ядра, связанные с программным прерыванием".
Значит ли это, что программные прерывания или исключения будут обрабатываться только при следующих условиях:
**** а. Когда ядро выполняет функцию из указанного потока, связанную с программным исключением (trap) b. когда он уже работает с аппаратной ловушкой ****
Правильно ли мое понимание этого?
Следующий бит:
"В большинстве случаев ядро устанавливает интерфейсные функции обработки ловушек, которые выполняют общие задачи обработки ловушек до и после передачи управления другим функциям, которые выставляют ловушку".
Я не совсем понимаю, что это означает под "функциями обработки ловушек переднего конца" и "выставить ловушку"?
Может кто-нибудь мне помочь?
1 ответ
Программные прерывания - это не ловушки, а части обработки аппаратных прерываний, отложенные из контекста аппаратных прерываний. Примером может служить стек TCP/IP - копирование пакетов из сетевой карты в буферы ОС выполняется / инициируется из процедуры аппаратного прерывания, но обработка протокола (ethernet -> IP -> UDP/TCP) откладывается до программного прерывания. В литературе по операционной системе их часто называют нижними половинами (в отличие от верхних половин, которые напрямую взаимодействуют с аппаратным обеспечением). Это делается для того, чтобы уменьшить объем отключаемых аппаратных прерываний и уменьшить задержку планирования ОС. Как таковые они обычно вызываются в конце общей записи прерывания / прерывания, но после того, как прерывание (я) повторно включено (-и), и / или выделенным потоком ядра программного прерывания.