OSDev http://osdev.su/ |
|
Express OS http://osdev.su/viewtopic.php?f=4&t=178 |
Страница 4 из 19 |
Автор: | Himik [ 03 ноя 2008, 17:49 ] |
Заголовок сообщения: | Re^3: Express OS |
Управлять окном вывода не проблема, есть функция Int 10h AX 4F07h. И есть интерфейс для вызова из защищённого режима, его выдаёт Int 10h AX 4F0Ah. |
Автор: | Himik [ 04 ноя 2008, 01:35 ] |
Заголовок сообщения: | Re^4: Express OS |
Проверил время заполнения видеобуфера по счётчику тактов процессора (инструкцией rdtsc), время оказалось одинаковым для видимой и невидимой памяти. Проверил 2 разных видеокарты, Radeon и Nvidia, в 16 и 32 битном цвете, ускорения нет. |
Автор: | SII [ 04 ноя 2008, 05:24 ] |
Заголовок сообщения: | Re^5: Express OS |
Так ускорение может быть только в том случае, если процессор должен останавливаться, дожидаясь завершения операции записи в память. А этого, вероятно, не происходит. Вероятно, сказывается очень малое время доступа к нынешней видеопамяти, лишь малую долю пропускной способности которой отъедает необходимость отображения информации; ну и плюс наличие всяких кэшей. |
Автор: | Himik [ 04 ноя 2008, 17:24 ] |
Заголовок сообщения: | Re^6: Express OS |
Хочешь сказать, что на самом деле ускорение есть, просто на счётчике тактов процессора это не отображается? |
Автор: | SII [ 04 ноя 2008, 21:03 ] |
Заголовок сообщения: | Re^7: Express OS |
Не знаю. Ускорение может быть, но по тем или иным причинам не фиксироваться (как и всё, что есть в ИА-32, подсчёт тактов реализован криво, и чтобы получить действительно реальные значения, нужны бывают танцы с бубнами; по этому поводу ещё Касперски что-то писал). Но скорее причина в другом: ускорения действительно нет, потому что процессор не способен по полной программе нагрузить пропускную способность видеопамяти, и на выборку информации из неё для отображения на дисплюе оставшейся вполне хватает. Двойная буферизация в ДХ связана с другим: чтобы не нарушать выводимую в данный момент на экран картинку. |
Автор: | Himik [ 05 ноя 2008, 00:37 ] |
Заголовок сообщения: | Re^8: Express OS |
Я разделил количество тактов процессора в секунду на количество тактов заполнения видеобуфера, получается 62 (1024x768 32bit) и 75 (1024x768 16bit). Тоесть можно даже кино смотреть с частотой кадров 75Гц. Проверю вывод реальной картинки на практике, авось и правда быстро. |
Автор: | Himik [ 05 ноя 2008, 01:25 ] |
Заголовок сообщения: | Re^9: Express OS |
Да, вывод на экран на самом деле быстрый, 120 (а не 75) кадров в секунду при 16 битном цвете, прямо в видимую область. Это я значит прокрутку окна неправильно сделал. Перемещаю данные прямо в видеобуфере, при этом одновременное чтение и запись тормозится. Или чтение видеопамати вообще тормозное, об этом где-то слышал. В общем, вопрос решён. |
Автор: | phantom-84 [ 05 ноя 2008, 11:41 ] |
Заголовок сообщения: | |
Доступ к видимой и невидимой областям видеопамяти одинаковый. Преимущество использования видеостраниц и переключения между ними появляется только тогда, когда есть свободное время на подготовку видеоизображения в невидимой области памяти. Читать видеопамять - это полный изврат! Все что выводится в видеопамять и может читаться, должно кэшироваться в основной памяти. |
Автор: | SII [ 06 ноя 2008, 05:21 ] |
Заголовок сообщения: | Re^10: Express OS |
Большое падение скорости при чтении-записи может вызываться, например, тем, что приходится постоянно открывать-закрывать строки модулей памяти то на чтение, то на запись. Операция открытия занимает много времени, и высокая скорость достигается только тогда, когда после открытия идёт много обращений одного вида к подряд расположенным ячейкам памяти. |
Автор: | Himik [ 11 ноя 2008, 02:50 ] |
Заголовок сообщения: | Re: Express OS |
Выложил оптимизированную версию, экран теперь не тормозит. Добавились часы на экране. В консоли добавилась команда date. В API добавилась GetLocalTime() и GetSystemTime(). http://wiki.osdev.ru/index.php/Express_OS |
Страница 4 из 19 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |