OSDev http://osdev.su/ |
|
Эмуляторы http://osdev.su/viewtopic.php?f=18&t=471 |
Страница 3 из 5 |
Автор: | ZarathustrA [ 30 ноя 2011, 03:47 ] |
Заголовок сообщения: | Re: Эмуляторы |
phantom-84 писал(а): Хочу сказать, что все это сильно зависит от того, что тестируется. Если тестов много и их можно (пере)запускать непосредственно в разрабатываемой системе без потери контроля, то и на реальном железе можно поработать. А если здесь же есть и средства разработки, с помощью которых можно подправить тестовую программу и откомпилировать ее заново, то вообще хорошо. Тестируется ОС, да и вообще практически любое системное ПО. Не видел еще ни одного товарища который тестит разрабатываемый драйвер или модуль ядра на том же самом компе, на котором его и кодирует. А с прикладным ПО, согласен, все намного проще. С его помощью обычно не получается пилить сук на котором сидишь :) |
Автор: | phantom-84 [ 30 ноя 2011, 10:01 ] |
Заголовок сообщения: | Re: Эмуляторы |
Да ладно есть масса драйверов, которые можно и нужно тестировать непосредственно на целевой платформе. Речь идет не о стабильности их работы, а о правильном управлении устройствами с их стороны. От того что звук выводится с хрипотцой или принтер печатает не то, что должен, оси пока не падают. У меня часть драйверов запускается непосредственно менеджером задач. Они при необходимости могут быть перезапущены без перезагрузки. До печати и звука я еще не дошел, но вот драйверы файловых систем таким способом тестирую постоянно: монтирую ФС на тестовом носителе, выполняю на нем операции с файловой системой, демонтирую и прогоняю тест на целостность файловой системы или просто сравниваю с заранее подготовленным шаблоном результата. Кроме того, всю логику работы драйвера на время или навсегда можно вынести в юзермод, оставив в кернелмоде только выполнение привилегированных команд по взаимодействию с устройством. Тогда даже нестабильные драйверы можно будет перезапускать. |
Автор: | Yoda [ 30 ноя 2011, 10:26 ] |
Заголовок сообщения: | Re: Эмуляторы |
SII писал(а): Не просто для работы, а для разработки низкоуровневого ПО, а это -- разные вещи. То, что в эмуляторах успешно работают стандартные ОС, не делает эти эмуляторы пригодными для разработки новых ОС. Делает. Я с кривостями эмуляции ЦПУ не сталкивался. Кривости BIOS и периферии не так далеко заходят, чтобы сказать - "это нерабочая машина". В любом случае в РЕАЛЬНОМ железе встречаются куда большие кривости. Таким образом, могу констатировать, что если есть девайс (в данном случае виртуальный), который ближе к реальному железу, чем некоторые реальные представители, и если на этом девайсе нормально работает ВСЁ существующее системное ПО, то этот (виртуальный) девайс вполне годится для разработки нового системного ПО. Здесь мы сталкиваемся с общепринятой парадигмой "кто виноват". Подавляющее большинство разработчиков принимает т.н. "ленивый" подход. Т.е. если его программа работает на 9 машинах из 10, то они просто декларируют, что десятая машина кривая и что пользователь сам виноват, что приобрёл такое гуано. Я же предпочитаю заставить ПО работать в 10 случаях из 10. А применительно к конкретной ситуации не утверждать, что Бокс кривой и непригоден для серьёзной работы, а преспокойно работать с ним, не испытывая ни малейших затруднений. При этом не забывая периодически проверять работу на другом железе. Кстати, пока ещё ни разу не было, чтобы результат разработки в Боксе не заработал на реальном компе. Вру. Было. Из-за кривизны БИОСа одного из реальных компов :) ZarathustrA писал(а): Не знаю как вам, а мне VmWare Workstation сильно облегчает жизнь. В свое время написан фреймворк, который позволяет собирать тестировать мои поделки в два клика: 1-й в Вижле на сборку прокта, 2-й в VmWare на запуск машины. Параллельно почти каждый день, up to date копию на дискете переношу и запускаю на физическом (контрольном) сервере. Бенефит по удобству/производительности разработки на лицо. Так что, лично я рекомендую активное использование виртуальных машин. Вот именно! Два клика - и готово! Так и есть - один клик на сборку проекта, второй - на запуск. Как можно после этого утверждать об отсутствии пользы? phantom-84 писал(а): pavia писал(а): по поводу far jmp... Да, я ошибся. Раньше было написано, что не влияет (это так и было - я проверял), а сейчас написано, что обнуляет. Т.е. либо в современных процессорах изменили поведение инструкции, либо современная документация - полное... Вот об этом я и говорю. Влезая в экстраординарные конструкции не стоит сразу винить в Бокс в проф-непригодности. Лучше отказаться от экстраординарности в пользу надёжности, переносимости и совместимости по железу. |
Автор: | phantom-84 [ 30 ноя 2011, 10:40 ] |
Заголовок сообщения: | Re: Эмуляторы |
Yoda писал(а): Вот об этом я и говорю. Влезая в экстраординарные конструкции не стоит сразу винить в Бокс в проф-непригодности. Лучше отказаться от экстраординарности в пользу надёжности, переносимости и совместимости по железу. Так я так и делаю. Но это вовсе не означает, что при этом нельзя поругать бокс за то, что в нем не реализована фишка, на которую изначально ориентировалась твоя программа. Кстати, некоторые решения, продиктованные боксом, оказались более простыми и эффективными, так что его "недоделанность" делает наши программы не только более универсальными, но иногда еще и более эффективными. А ситуация с far jump'ом мне запомнилась потому, что по сути она была обратная. Т.е. поведение бокса скрывало реальное поведение процессора. Ситуация не прояснилась до сих пор, хотя 32-разрядная инструкция в любом случае нивелирует все возможные негативные последствия. Но теперь мне просто интересно в этом разобраться (есть вероятность, что в новой документации написано полное... - кто ж откажется от возможности постебаться над Intel :) ).
|
Автор: | Himik [ 30 ноя 2011, 11:20 ] |
Заголовок сообщения: | Re: Эмуляторы |
SII писал(а): Может быть, не спорю. Но, насколько понимаю, VMware не даёт возможности вести низкоуровневую отладку? Нет. Использую его для проверки более высокоуровневого функционала с применением самодиагностики. Если нужно ковыряться в железе, то беру Bochs. Там обычно достаточно заглянуть в журнал выполнения bochsout.txt чтобы найти причину сбоя, без всякой отладки. Один раз случился подвох с Bochs, потому что у него физическая память изначально обнулена, а на реальном железе содержит мусор. Поэтому было трудно выявить неочищенные структуры в системе. |
Автор: | pavia [ 01 дек 2011, 22:08 ] |
Заголовок сообщения: | Re: Эмуляторы |
Пишу свой эмулятор. Да уж если раньше я более или менее нормально относился к x86, то теперь понимаю, какой это отстой. Сделал половину команд х286. Думал к концу недели закончить с командами. Есть идеи на чём проверить? И к концу года сделать достаточную эмуляцию периферийного железа. Железо будет классическое - PIIX4 мой домашний тестовый компьютер. |
Автор: | SII [ 02 дек 2011, 00:10 ] |
Заголовок сообщения: | Re: Эмуляторы |
А если пробовать ещё эмулировать поведение разных процессоров... Ведь они не полностью совместимы даже снизу вверх, причём не все отличия описаны в документации. Про недокументированные функции вообще молчу... |
Автор: | phantom-84 [ 02 дек 2011, 09:23 ] |
Заголовок сообщения: | Re: Эмуляторы |
pavia, есть тесты специально для эмуляторов. |
Автор: | Himik [ 02 дек 2011, 12:27 ] |
Заголовок сообщения: | Re: Эмуляторы |
pavia писал(а): Есть идеи на чём проверить? Для начала на DOS-е. Он хорош тем, что работает исключительно на функционале BIOS, так что эмуляции железа не требуется вообще. Как всё отладишь, то пробуй запустить GRUB - это ворота во все современные ОС. |
Автор: | pavia [ 03 дек 2011, 10:47 ] |
Заголовок сообщения: | Re: Эмуляторы |
Цитата: pavia, есть тесты специально для эмуляторов. Можно подробнее? А то я поискал не нашёл. Цитата: Для начала на DOS-е. Он хорош тем, что работает исключительно на функционале BIOS А информация 100% ? Одна из причин зачем решил делать эмулятор это то что мне не понравилась как устроен режим vm86 в IA32 видимо его поэтому и выкинули из x64. Уж больно они его криво присобачили. Хочу эмулировать прерывания биоса с прямым доступом к железу. То есть вызывать прерывания биоса из защищенного режима. |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |