С марта пишу операционную систему на C/C++ и ассемблере под x86. Прошел классический путь: от вывода первой строчки в текстовом режиме до самописного GUI с грязными прямоугольниками, двойной буфферизацией , кастомными шрифтами и тасками в голубых тонах. Раньше тестировал сборки исключительно на реальном железе с Intel Celeron D 326 и встроенной графикой, которая старше меня. Чтобы не бегать постоянно с флешкой и dd, в свежей версии 3.17.9 решил вернуть поддержку QEMU. Попытка усидеть на двух стульях закончилась проблемой, которую я не могу расковырять уже несколько дней.
В чем суть бага?
В QEMU система работает идеально. Но на реальном Celeron D начинается нервотрёпка:
1. Система работает примерно в два раза медленнее, чем должна. Причем тормозит в полном покое, даже если мышь и клава вообще не двигаются. Любое мгновенное действие занимает секунду.
2. При этом системный динамик (PC Speaker / пищалка), который настроен пропищать ровно 2 секунды, отрабатывает за 1 секунду. То есть звук ускорился в два раза, а ядро замедлилось в два раза.
3. Графика работает нормально, но курсор мыши даже не отрисовывается также как и время на экране.
Если закомментировать инициализацию мыши (mouse_init), звук пищалки пролетает еще быстрее.
Ссылка на мой гитхаб:
https://github.com/larcenkokirill91-max/AnalOS.git