Почему завершение прерывания для главного изображения может вызвать тройную ошибку (перезагрузку)?

StackOverflow https://stackoverflow.com/questions/888603

  •  23-08-2019
  •  | 
  •  

Вопрос

Хорошо, в школе мы разрабатываем операционную систему.Мой проект заключался в разработке драйвера жесткого диска ATA.Я думал, что моя процедура обслуживания прерываний работает достаточно хорошо, когда мой профессор указал, что я отправляю команды окончания прерывания только подчиненному PIC, а не ведущему.

Моя проблема в том, что всякий раз, когда я отправляю сообщение об окончании прерывания на главный РИС, это вызывает тройную ошибку, которая затем приводит к перезагрузке моей системы.Теперь я откомментировал кучу строк, и кажется, что всякий раз, когда в коде остается функция отправки сообщения об окончании прерывания на главный рисунок, я получаю тройную ошибку.

Теперь я совершенно уверен в следующем:

  1. прерывания отключаются при вводе моего ISR
  2. Я правильно отправляю байт окончания прерывания (класс протестирован)
  3. Я не подтверждаю повторно одно и то же прерывание

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

Спасибо!

Это было полезно?

Решение

Я могу только догадываться об этом.Вот некоторые вещи, которые нужно проверить.

  • Выходит ли ВЗ за пределы лимита вашего сегмента?
  • Находится ли ВЗ на странице, доступной только для чтения?
  • Имеет ли ваш обработчик прерываний правильный уровень привилегий для доступа к EOI?
  • Используете ли вы правильный сегментный регистр?

Любой из них может привести к неисправности.Это, в свою очередь, может вызвать двойную или тройную ошибку, если таблицы дескрипторов либо повреждены, либо изначально были неправильно настроены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top