OSDev

для всех
Текущее время: 28 мар 2024, 17:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9
Автор Сообщение
 Заголовок сообщения: PlutOS - подгонка концепции
СообщениеДобавлено: 28 мар 2017, 17:39 
Аватара пользователя

Зарегистрирован: 27 апр 2012, 00:27
Сообщения: 22
Откуда: Узбекистан, Ташкент
Нeт, не продвинулся я в написании собственной операционки.
(Если не считать подобия ядра на собственном 8-битном процессоре с многозадачностью)

Концепция же операционки несколько трансформировалась (не изменилась, а получила упрощение).
Так, после того, как приложение загружается в память и получает управление, ему предоставляется полный объём адресного пространства - 4Гб (именно адресного пространства - не ОЗУ). Все эти 4Гб, естественно, разбиты на повторяющияся параграфы по 4кб, зеркально ссылаясь на некую область (допустим, стек).
Однако, теперь доступ к портам обеспечивает программирование этих параграфов. Т.е. если аппаратно процессор обеспечивает индексацию до 65536 разных устройств через инструкции out/outs/in/ins, то через механизм исключения с опциональным чтением всех 32-бит регистра EDX, через старшие 16-бит регистра теперь индексируется и сам параграф.
Код:
    mov ebx,0x12340000  ; Указатель на 64кб буфера клавиатуры
    mov edx,ebx         ; Подправляем указатель так,
    and edx,0xFFFF0000  ; чтобы передать ядру параграф
    or  edx,0x0000DEF1  ; и указываем на порт определений
    lea eax,Console_in  ; Теперь нужно передать соответствующую
    out dx,eax          ; непосредственно в порт
    mov al,[ebx]        ; С этого момент можно читать вводимый текст
    ... ... ...
Console_in:db "/dev/con/",0
Как видите, ничего существенно не изменилось. Если EDX=0x000ADEF0, а в порт отправить ссылку на "/dev/ega/", то, как логично ожидать, область 000A000..000AFFFF станет зеркалом EGA-графики.
Главное отличие в том, что если в классических OS нужно обращаться через int/call API-интерфейс, здесь симулируется программирование памяти через порты ввода-вывода. Что не требует вовлечения в адресное пространство приложения ни байта системного кода.
Подчеркну, что таким же образом мы можем параграфы памяти переключить на отображение классического API, будь то DirectX, OpenGL или OpenAL и пр…
P.S.: Если кто-то ожидал от меня большего - извиняюсь за разочарование…
Прошедший период времени занимался реализацией мульти-процессорного "движка" на примере i8080A.
(Обычно же эмулятор - это длинное switch-case дерево с адским процессом отладки. Мой "движок", получая краткий, но подробный шаблон с описанием процессора, автоматически генерирует всю необходимую среду для него: эмулятор+ассемблер+дизассемблер)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB