OSDev
http://osdev.ru/

Ошибки эмуляторов PC
http://osdev.ru/viewtopic.php?f=7&t=784
Страница 1 из 1

Автор:  Himik [ 16 авг 2013, 00:07 ]
Заголовок сообщения:  Ошибки эмуляторов PC

После переделки менеджера памяти в своей ОС, у меня неожиданно всплыла ошибка с контроллером прерываний Local APIC + IO/APIC (видимо время задержек по памяти изменилось, что вызвало изменение реакции на прерывания). Суть проблемы в том, что в эмуляторе команда EOI разблокирует сразу все прерывания находящиеся в обработке, а должна разблокировать только последнее поступившее в обработку. Так, если в процессе обработки прерывания поступило и обработалось другое прерывание, то в текущий обработчик поступит вложенное прерывание до выдачи EOI. В моём конкретном случае, когда между прерываниями клавиатуры вклиниваются прерывания таймера, то драйвер клавиатуры зависает из-за нарушения порядка поступления прерываний. Ошибка проявляется в Bochs 2.6.2 и VMware Workstation 9.0.2. Естественно, ошибка не проявляется на реальном PC.

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

PS. Предлагаю в этой теме собирать все найденные ошибки эмуляторов.

Автор:  phantom-84 [ 16 авг 2013, 06:05 ]
Заголовок сообщения:  Re: Ошибки эмуляторов PC

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

Автор:  Himik [ 16 авг 2013, 11:35 ]
Заголовок сообщения:  Re: Ошибки эмуляторов PC

Не знаю, у меня это первая найденная ошибка. Вот и хотелось бы узнать больше, на всякий случай :)

Автор:  Bargest [ 16 авг 2013, 11:40 ]
Заголовок сообщения:  Re: Ошибки эмуляторов PC

Была уже тема с багами эмуляторов.

Автор:  Himik [ 16 авг 2013, 11:51 ]
Заголовок сообщения:  Re: Ошибки эмуляторов PC

Ссылки на сообщения тоже хорошо.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/