Здравствуйте!
Прерывание 0x20 — это прерывание таймера, связанное с системным таймером, которое происходит от программируемого таймерного контроллера (PIC) или другого таймера, настроенного для генерации прерываний о времени. Это поведение не является нормальным, если 0x20 возникает постоянно и с фиксированным интервалом, особенно если это происходит сразу после инициализации вашего ядра.
Причины, по которым вы можете видеть постоянные прерывания 0x20, могут включать следующее:
1. **Неправильная инициализация таймера**: Если вы не настроили таймер должным образом, он может продолжать генерировать прерывания, что приводит к постоянным вызовам обработчика прерываний.
2. **Запуск обработчика прерываний**: Возможно, ваш обработчик прерываний для 0x20 не завершает выполнение должным образом или неправильно обрабатывает статус прерываний. Убедитесь, что в конце вашего обработчика вы вызываете ACK (подтверждение) для PIC или APIC, в зависимости от вашей архитектуры.
3. **Неправильная работа IDT**: Если у вас неправильно настроена таблица векторизации прерываний (IDT), это может привести к тому, что процессор неправильно обрабатывает прерывания.
4. **Тестирование в QEMU**: Убедитесь, что вы правильно настроили конфигурацию QEMU. Возможно, есть какие-либо параметры, которые влияют на работу таймера.
Чтобы диагностировать эту проблему, я бы рекомендовал следующее:
- Проверьте настройки вашего таймера и убедитесь, что он конфигурирован для генерации прерываний именно так, как ожидается.
- Убедитесь, что вы правильно обрабатываете прерывания 0x20 и не забываете отправлять подтверждение на контроллер прерываний.
- Используйте отладчик, чтобы отслеживать входы в обработчик прерываний и убедиться, что никаких других ошибок не происходит.
Если вы дадите больше информации о настройках вашего IDT и обработчика прерываний, это может помочь более детально разобраться в проблеме.