OS Menuet
 Новости
 Описание
 Текущая версия
 История
 Скриншоты

Скачать
 OS Menuet
 Дистрибутивы
 Загрузчики
 Программы

Документация
 Статьи
 FAQ
 Hardware List
 Рассылки

О нашем сайте
 Наша команда
 Публикация
 Конкурс
 Форум

Ссылки
 О Menuet
 Другие OS
 Программисту

Официальный сайт/Official site MenuetOS>>
П Е Р Е К Л Ю Ч Е Н И Е    З А Д А Ч    И    О С Н О В Ы    G U I

1. Переключение задач (TASK SWITCHING)


     Menuet использует сегмент переключения задач для сохранения содержимого процессов. TSS сохраняются в памяти, начиная с 0x40000. Информация о работающих приложениях сохраняется также по адресам:

004 dword номер процесса
3000 dword счетчик процессов
2000 -> 2FFF информация об окне (фрагментами по 32 байта)

; Первое окно по смещению 0x20

+00 dword Начало по x (Левый край)
+04 dword Начало по y (Верхний край)
+08 dword Размер по x (Ширина)
+0C dword Размер по y (Высота)
+10 dword Цвет рабочей области окна
+14 dword Цвет заголовка окна
+18 dword Цвет рамки окна

3000 -> 3FFF список задач (фрагментами по 32 байта)

; Первая задача по смещению 0x20

+00 dword маска событий приложения
+04 dword process number
+0a word 0=running, state 3=zombie, 4=terminate
+0e byte window number on screen
+0f byte position in memory
+10 dword exact position in memory
+14 dword counter sum
+18 dword time stamp counter add
+1c dword cpu usage in cpu timer tics

8000 -> 8FFFF разная информация (фрагментами по 256 байт)

; Первый фрагмент по смещению 0x100

00 имя приложения

     Приложения загружаются в память, начиная с 8M.

     Планировщик на irq0 запрогрммирован так, что запускается каждые 1/100 секунды.
     Единственное исключение - вызов функции change_task.
     Например, вызов из приложения delay или event_wait приводит к этому, и приложение не захватывает больше процессорного времени, чем ему нужно.


2. Графический интерфейс пользователя (GUI )


     Основы работы GUI выглядят следующим образом: Каждое приложение на экране имеет собственный идентефикационный номер. Это позволяет располагать окна любым образом.
     Ссылки на GUI начинаются по адресу 0x400000 и каждый пиксель кодируется одним байтом.
     Допустим, у нас запущены ОС и два приложения: os=1, app1=2, app2=3.
     В памяти это будет выглядеть так:



     Почти всякий раз, когда приложение рисует что-нибудь на экране, оно сверяется с данным участком в памяти. Такая техника работает быстрее, чем может показаться. Узким местом текущей реализации GUI является система кэширования, которая еще не оптимизирована.
     Графический интерфейс расположен по адресу 0x1C00000 (28M) и отображается на видеобуфер графической карты.


Наверх / Up mailto:Webmaster
Hosted by uCoz