Новости
Описание
Текущая версия
История
Скриншоты
OS Menuet
Дистрибутивы
Загрузчики
Программы
Статьи
FAQ
Hardware List
Рассылки
Наша команда
Публикация
Конкурс
Форум
О Menuet
Другие OS
Программисту
|
|
|
|
П Е Р Е К Л Ю Ч Е Н И Е З А Д А Ч И О С Н О В Ы 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) и отображается на видеобуфер графической карты.
|
|