Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
1392.
o`kante
(12.03.2007 10:10)
0
К видеорежимам современных видеокарт
Разработка операционной системы рано или поздно доходит до интерфейса взаимодействия с пользователем. Это взаимодействие подразумевает как ввод, то есть клавиатуру и мышь (не обязательно), так и вывод, то есть видео и аудио. 90% информации человек получает визуальным путем, поэтому и мы подробнее остановимся на нем.
Ещё хочу высказать свое мнение по поводу разработки ОС. Мне кажется, что если и решать рано или поздно в своих планах доходить до процесса разработки интерфейса взаимодействия с пользователем, то делать это следует все-таки рано. Почему? Хотя бы для предотвращения различного рода опасных влияний на разработчиков. Ведь именно разработчики проводят с будущей ОС на страпелях большое количество времени, и так уж получается, что большое количество этого большого количества времени проводится за компьютером. Разумеется есть время проектирования архитектуры, когда за компьютером сидеть даже вредно, гораздо приятнее и полезнее прогуляться по природе и подметить заодно у неё несколько фенечек, которые очень даже неплохо смотрелись бы в приложении к компьютерам, порисовать диаграммы и графы и вообще предаться гуманитарной литературе, однако реальность берет свое и вот уже надо писать исходный код.
Поэтому эргономика операционной системы играет большую роль с самого начала ее проектирования, желательно с начала проектирования ядра. Общаться с будущей ОС вы будете также через её уже имеющиеся интерфейсы, вы ведь тоже человек, хотя и лучший его представитель ---разработчик (homo praxis). И чем раньше вы настроите интерфейсы, тем лучше и удобнее будет от этого вам, а чем удобнее вам тем лучше и быстрее процесс разработки.
Никто не смеет умолять и разработку таких вещей как управление памятью, планирование заданий (если ОС многозадачна, если она однозадачна, то задания планирует пользователь). Однако и не надо сосредотачиваться лишь на них одних, паралелльно с ними должна вестись разработка интерфейсов ввода вывода.
Как уже говорилось добрый разработчик ОС должен закладываться не только на технические параметры будущей ОС, но и на многие другие, в том числе везде знать свою меру в общем, и свои бюджеты в частности. Мало того технология --- лишь интструмент в руках зодчего и не самый важный. Уильям Гейтс заботился о бюджете собственной ОС и добился успеха. Линус Торвальдс и иже с ним заботились о социальных аспектах жизни разработчиков ОС и также добился успеха. Андрю Танненбаум не заботился ни о том ни о другом и остался не у дел. Об этом сказано.
А раз так, то наилучшим выбором для видеоинерфейса на начальном этапе создания исходного кода является стандарт VESA. Его поддерживают почти все видеократы, поэтому пока можно не заботится о драйверах, которые могут своим дурным и невообразимым количеством сломать или/и разбалансировать архитертуру будущей ОС. Итак об этом видеорежиме.
В стандарте VESA выделим пока две версии: 1.2 и 2.0.
Версия 1.2 предназначена для работы в реальном режиме процессора. Доступ к видеопамяти осуществляется через так называемое окно памяти --- область размером (в нашем случае) 65535 байт. Дело в том, что при режиах современных мониторов, таких как 1024х768х32бита память видеобуффера существенно больше --- около 4 Мбайт. А надо сохранить совместимость с 16-разрядным DOS и режимом VGA. Поэтому доступ к памяти осуществляется в два шага: 1) накладываем окно и 2) меняем память в пределах окна. Потому можно наложить окно в другое место и т. д. Это --- неудобно, однако для работы в реальном режиме на мой взгляд нет другого выбора.
Версия 2.0 поддреживает работу в защищеном режиме. Для этого специальной функцией прерывания (0Ah) запрашивается интерфейс защищенного режима. Этот интерфейс представляет собой таблицу указателей на функции, порты и участки памяти. Более подробно о формате таблицы описано в [1]. Вот пример кода:
mov ah, 4Fh ; Признак SVGA mov al, 0Ah ; Получить интерфейс для защищенного режима. xor bl, bl ; bl=0 int 10h ; прерывание 10h ; Теперь в AX --- статус ; ES - сегмент таблиы ; DI - адрес таблицы ; CX - длина таблицы
Таким образом получаем абслоютный адрес, который буцдет правильным в защищеном режиме.
Другой особенностью версии 2.0 является линейный кадровый буфер (LFB). Он позволяет представить видеобуффер как линейное адресное пространство и не обращаться к нему посредство окон памяти, что просто хорошо.
Таким образом стандарт VESA предоставляет нам интерфейсы как дляреального режима, так и для защищенного, что позволяет работать с ним с самого начала разработки ОС.
В [2] описан стандарт VESA 1.2 по-человечески, однако на английском языке. Там же приведен алгоритм построения программы, которая будет работать с этим стандартом.
Список литературы:
1. http://www.codenet.ru/progr/video/vesa201.php 2. ftp://binboy.sphere.pl/specifications/graphics/vesasp12.zip
|
1391.
Dolphin
(03.03.2007 14:12)
0
>>В моем релизе появилось ядро .
ГДЕ ЯДРО??? Один джамп это еще не ядро.... А где системныефункции, которые вызывает программа пользователя? Где собсно программа пользователся?
Самый главный недочет: ваше "ядро" не вызывает программ пользователя. Оно сразу после загрузки предлагает выключить компьютер... Когда ж программа пользователя при таком раскладе успеет вызвать системную функцию ядра?
PS Вызов из юзермода системных функция ядра - по меньшей мере нестабильно. Опыт 95 винды ничему не научил?
Ответ: Вы слишком многого хотите . Всему свое время . Пока я структурно отделил код ядра от кода прикладной программы . И вызов системных функций оформил через обращение к системному прерыванию . А на место прикладной программы , которая выводить только сообщения , звук и отключение можно загрузить другую прикладную программу с другими целями , к примеру редактор текста , ммплеер , игру .
|
1390.
ZлоY
(03.03.2007 10:58)
0
Интересно узнать, и какие же у вашегр ядра системные фунуции?
Ответ: Будут такие какие нужны для прикладных программ .
|
1389.
(03.03.2007 09:33)
0
Уважаемый тов. Горлов, А где же русские коментарии на русском языке для русских разработчиков?
Ответ: А вы разработчик ?
|
1388.
Горлов А.В.
(03.03.2007 00:54)
0
В моем релизе появилось ядро . Теперь программа пользователя вызывает системные функции ядра .
CODESEGM SEGMENT PARA ''CODE'' ASSUME CS:CODESEGM,DS:CODESEGM,ES:CODESEGM,SS:CODESEGM ORG 100H START: JMP MAIN ;----------------------------------------------------------------------------
;---------------------------------------------------------------------------- MAIN PROC NEAR CALL KERNEL CALL USER_TASK MAIN ENDP ;---------------------------------------------------------------------------- KERNEL PROC NEAR JMP METKA2 ;----------------------------------------------------------------------------
;---------------------------------------------------------------------------- CALL INIT_INT_F0H RETN KERNEL ENDP ;---------------------------------------------------------------------------- INIT_INT_F0H TAKE_INT_FUNC OUT_TEXT SOUND CHECK_KB POWER_OFF ;---------------------------------------------------------------------------- USER_TASK PROC NEAR ;---------------------------------------------------------------------------- TEXT_1 DB ''PRIVET$'' TEXT_2 DB ''POWER_OFF$'' ;---------------------------------------------------------------------------- LEA BX,TEXT_1 MOV AX,0001H INT F0H ;OUT_TEXT MOV AX,0002H INT F0H ;SOUND LEA BX,TEXT_2 MOV AX,0001H INT F0H ;OUT_TEXT MOV AX,0003H INT F0H ;CHECK_KB MOV AX,0004H INT F0H ;POWER_OFF RETN USER_TASK ENDP
CODESEGM ENDS END START
|
1387.
Михаил
(28.02.2007 17:08)
0
Мужики! Вы реальные вещи делаете! Я не умею программировать операционные системы и языки программирования! Но рад Вы это умеете! Если операционная система будет лучше windows и проста в использовании! Я обязательно куплю её! Обязательно лицензионную! Да даже сам фактор того что она русская будет меня к ней тянуть! :) Удачи ВАМ!
Ответ: Спасибо за поддержку . Моральная поддержка лучше необоснованной критики .
|
1386.
Dolphin
(28.02.2007 08:20)
0
>>Это исходник моего релиза .
ЭТО вы называете ОС?
>>3. вызовы своих процедур без системных функций Не понял.
>>6. передача данных в стек и возврат их из стека делается при отлюченном прерывании При каком? Все прерывания отрубаются?
>>7. Формат программы - сом с возможностью тестирования в ДОСе Так я не понял - мы делаем свою ОС или программы под ДОС?
Ответ: По порядку . Это то что загружает загрузчик и это единственная программа которая работает на компьютере до его отключения . Значит это ОС . Ваша программа может использовать только свои процедуры . Если они будут хорошими , от их в последующих выпусках релиза можно включить в перечень системных процедур . Пример , вы передаете через стек параметры в процедуру и в это время срабатывает прерывание от таймера . Куда вы вернетесь после того как его обработчик завершит свою работу ? В реальном режиме работает ДОС . Значит свою программу можно сделать в формате сом чтобы проверить ее работу .
|
1385.
o`kante
(27.02.2007 17:40)
0
> часто переработка архитектуры в ходе реализации приводит к кашмару, анархие и бардаку.
Да, вы правы. Это происходит довольно часто. Просто в жизни все несколько сложнее. Может так получиться что есть не очень опытный архитектор и достать другого нету никакой возможности. Тогда возможно внесение изменений в изначально дурную архитектуру в процессе разработке окажется и не так уж плохо.
Другой случай может быть когда сам проект достаточно сложен, сложен так, что продумать его архитектуру без реализации очень сложно. Например, разработка ОС. Понятно, да?
Ответ: Хорошее сообщение .
|
1384.
Горлов Александр
(27.02.2007 16:28)
0
Новости для тех кто желает разрабатывать дополнения моего релиза . 1. Модульная структура . 2. Объявление в начале переменных , констант , буфера под временные переменные . 3. вызовы своих процедур без системных функций 4. вызов системных процедур через системное прерывание 5. код должен быть понятным при минимальных комментариях , использование аналогов команд для оптимизации и быстродействия недопустимо 6. передача данных в стек и возврат их из стека делается при отлюченном прерывании 7. Формат программы - сом с возможностью тестирования в ДОСе 8. прилагать хелп с комментириями о программе . Хорошо ?
|
1383.
Горлов А.В.
(27.02.2007 16:15)
0
Новости . 1. Формализация данных - глабальные переменные и константы - локальные переменные и константы - временные переменные . Хранение данных - глабальные в начале программы - локальные в начале каждой процедуры - временные в стеке Модели абстракции - системная абстракция - процедурная абстракция - временная абстракция - аппаратный уровень
|
1382.
Горлов А.В.
(27.02.2007 13:38)
0
Это исходник моего релиза .
CODESEGM SEGMENT PARA ''CODE'' ASSUME CS:CODESEGM,DS:CODESEGM,ES:CODESEGM,SS:CODESEGM ORG 100H START: JMP MAIN ;------------------------------------------------------ ;это область для глобальных констант и переменных
;------------------------------------------------------ ;это область для сообщений TEXT_1 DB 10,10,07H,''ВАС ПРИВЕТСТВУЕТ РУССКАЯ ОПЕРАЦИОННАЯ СИСТЕМА$'' TEXT_2 DB 15,10,07H,''ВЫ ХОТИТЕ ВЫКЛЮЧИТЬ КОМПЬЮТЕР? ДА(ENTER)$'' ;------------------------------------------------------ MAIN PROC NEAR CALL SET_VMODE LEA AX,TEXT_1 CALL OUT_MESS CALL SOUND LEA AX,TEXT_2 CALL OUT_MESS CALL CHECK_KB CALL POWER_OFF MAIN ENDP ;------------------------------------------------------ ;это область для вызывемых процедур
SET_VMODE OUT_MESS SOUND CHECK_KB POWER_OFF ;------------------------------------------------------ CODESEGM ENDS END START
|
1381.
Dolphin
(26.02.2007 12:18)
0
>>Если есть желающие улучшать мой релиз - приглашаю .
Я желаю. Но как мне ео улучшать, если я его не вижу? Хотя бы мало-мало описание напишите-то. Из вашего сайта можно понять только, что релиз состоит из "имитатора загрузчика" и все. Что еще вы уже сделали?
Ответ: Я сейчас навожу порядок в исходниках своего релиза . И по мере готовности к публикации буду печатать их в блоге . Хорошо ?
|
1380.
(26.02.2007 09:00)
0
>>Таким образом полная открытость позволяет оптимизировать и дорабатывать архитектуру проекта в процессе разработки.
Гнать надо таких архитекторов ) часто переработка архитектуры в ходе реализации приводит к кашмару, анархие и бардаку.
Ответ: Общаться не запрещяется ни до начала реализации проекта ни во время непосредственной разработки . А из проекта нужно гнать тех кто не желает общаться .
|
1379.
Anonymos.ru
(26.02.2007 08:56)
0
>Открытось, закрытость.
Для модульности, открытость или закрытость не так уж важна.
В первую очередь важно разработать интерфейсы модулей, и строго использовать только эти интерфейсы.
Ответ: Да , нужно определиться с перечнем объектов и вариантами их абстракции . Как говориться : " Нужно понять гравное - ложки не существует . "
|
1378.
Борис
(25.02.2007 13:22)
0
>Открытось, закрытость. яб сюда добавил индивидуальность. Предположим есть человек пишет окончательную версию. И есть какое то кол-во программистов которые по задумке того же архитектора пишут различные части системы и передают код вот этому человеку, он в свою очередь изучает этот код, вносит если нужно в него свои изменения и добовляет в окончательный вариант.
Ответ: До окончательной версии еще далеко . Я пишу свой релиз путем его последовательного улучшения . Сроков конкретных себе не ставлю . Я делаю то что мне интересно . Если есть желающие улучшать мой релиз - приглашаю . Хорошо ?
|
|
|
|