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/