OSDev

для всех
Текущее время: 27 апр 2024, 10:03

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 22 ноя 2012, 03:13 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Приветствую сообщество!

До недавних пор, я считал, что VmWare достаточно уважающая себя контора, которая веников не вяжет. Как же я был наивен и глуп. В дополнение к ранее озвученной проблеме с таймером локального APIC была обнаружена еще одна более суровая проблема связанная с диспетчеризацией прерываний. В отличие от APIC-а в понимании компании Intel, APIC в понимании компании от VmWare способен генерировать вложенные прерывания с ОДНИМ И ТЕМ ЖЕ приоритетом посредством Self IPI. Согласно интеловской документации, вложенные прерывания возможны, но только в том случае, когда каждое последующее вложенное прерывание обладает большим приоритетом (классом приоритета), чем предыдущее.

В частности мной был получен стек следующего характера

21h A2h A2h
SystemCallInt -> GpTaskSwitch -> GpTaskSwitch

То есть обработчик прерывания 0xA2 был вытеснен еще одним обработчиком прерывания 0xA2. Полагаю, что первый обработчик был инициирован через пользовательский API, второй - обработчиком прерывания таймера локального APIC (F4h). По нормальному, второе прерывание инициированное из обработчика таймера должно было забуферизоваться в регистре IRR APIC и быть пущено в ход только по завершении обработчика первого прерывания.

В общем, моя первая реакция бала рука-лицо. Доверие к компании подорвано окончательно.

P.S.: Порекомендуйте мне плиз какую-нибудь нормальную виртуальную машину/эмулятор. Требования поддержка многоядерности/многопроцессорности, flat - файлы для эмуляции жестких дисков, уверенная эмуляция Pentium II/III.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 03:21 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
P.P.S.: Обе проблемы с APIC-ом возникают на фазе старта/разогрева виртуальной машины. То есть либо вы их словите в первые секунды работы после пуска машины, либо не словите вообще. Но проводить десять пусков, для того чтобы тебе улыбнулась удача - это извращение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2012, 01:27 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
ZarathustrA писал(а):
P.S.: Порекомендуйте мне плиз какую-нибудь нормальную виртуальную машину/эмулятор. Требования поддержка многоядерности/многопроцессорности, flat - файлы для эмуляции жестких дисков, уверенная эмуляция Pentium II/III.
qemu-kvm, если проц поддерживает. Bochs или AMD SimNow, если нужна офигенная точность эмуляции (симуляция).

И да, в VmWare, VirtualBox, QEmu (и других продуктах с неким балансом между скоростью и точностью, т.е. точность принесена в жертву скорости) закладываются на традиционные ОС, собранные традиционными компиляторами. А на всякие маргинальные мелочи, используемые любителями (используемые, потому что им (любителями) кажется что так круче получится, или им просто хочется во что бы то ни стало найти багу, или и правда так круче, но в больших ОС это уже не внедрить) там клали болт. Можно репортить баги (да и нужно, пожалуй), но вопрос ценности таких результатов открыт.

Уж пардон, но таковы (современные) реалии.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2012, 17:28 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Программное прерывание может быть вытеснено аппаратным прерыванием - может быть дело в этом. И очень примечательно, что это происходит только на стадии инициализации ОС. Наверно процедура инициализации неустойчивая.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB