OSDev
http://osdev.su/

Еще одна ОС: Genos
http://osdev.su/viewtopic.php?f=4&t=893
Страница 2 из 2

Автор:  iz56 [ 19 апр 2014, 14:07 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Это не классическая ОС. Цели у вас другие. :D

Автор:  Mirmik [ 19 апр 2014, 18:54 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Никто не говорил, что она классическая :)... Я вообще не утверждаю, что это ОС...

Решил, что надо писать какую-то документацию (Пока сумбурно и самопально.):
http://genos.esy.es


P.S. Подскажите простенький конструктор html страниц.

Автор:  Mirmik [ 05 май 2014, 20:03 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Сегодня у меня окончательно оформилась одна мысль, которую я запишу.

Идея общения системы с пользователем в том, чтобы независимо от аппаратной части пользователь мог пользоваться одним и тем же терминалом.
То есть, есть некоторое аппаратно независимый терминал, который обрабатывает команды, пришедшие неведомо откуда. И есть что-то, что преобразует непосредственную входную информацию в команды, понятные терминалу.

Но, вот скажем, общаемся мы с устройством по telnet. Мы должны не только считать входную информацию, но еще и выдать в канал эхо. Кто должен сгенерировать эхо? Внешний обработчик или консоль. Если внешний обработчик, то консоль не сможет в случае чего запретить, например, эхо без танцев с бубном (она ведь не должна знать, кто с ней разговаривает, иначе какая нафиг модульность)... Но и писать обработку ответа в консоль тоже нельзя, потому что, консоль понятия не имеет, в каком формате надо отвечать.

Опять же... Вывод может быть на страницу видеопамяти... А вход с клавиатуры.
Вывод на страницу видеопамяти, а вход с телнета...
И, блин... Вывод на страницу видеопамяти, при сквозном входе с клавиатуры (то бишь вообще без консоли).

В процессе работы над системой GenOS я раз двадцать переписывал внутренние интерфейсы.
Я всегда ставил во главу угла символьную обработку, но тягать символы внутри ядра очень неудобно. Передача команд, а она, порой, нужна сквозная, требует соответствующей обработки внутри каждого модуля. Очень неудобно.

И тут до меня наконец-то дошло, на каком языке на самом деле общаются между собой части базовой системы.

... Барабанная дробь.

Это - язык клавиатурных команд. Причём, самих команд, а не каких-то кодирующих их символов. Если пользователь нажимает backspace, то он хочет, чтобы консоль стёрла символ. Если консоль говорит backspace, это значит, что она хочет, чтобы поток вывода каким-то ему ведомым способом выполнил этот backspace.

Если пользователь говорит backspace, а в консоле символов нет, то она и у себя ничего стирать не будет, и не будет говорить backspace потоку вывода...

Немного расширив функциональность команд, например сделав backspace с параметром... Мы уже можем довольно резво форматировать выходной поток и прочее... И нам пофиг, кто у нас на выходе, и слушает ли вообще кто-то этот вывод...

Таким образом, внутри ядра модули могут изъясняться обобщенными командами клавиатуры, представленными в виде соответствующих функций...

Возможности такой системы, очевидно, достаточно полны, ибо человек пользуется клавиатурой и ему достаточно удобно.
А если не хватит, функционал в случае чего всегда можно нарастить дополнительными функциями. Типо "убить всех" или "вывести отладочную информацию"

С точки зрения реализации все модули, поддерживающие этот интерфейс будут наследниками класса предка этого интерфейса (напоминаю, c++). Реализовывать все функции предка, кстати, необязательно... Тоесть если кто то будет работать только с char, то пусть и работает. При приходе "левой" команды с командой разберется функция заглушка "предка"...





Хм... Это надо обмозговать....

Автор:  эмбрион [ 06 май 2014, 12:35 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Mirmik писал(а):
Но, вот скажем, общаемся мы с устройством по telnet. Мы должны не только считать входную информацию, но еще и выдать в канал эхо. Кто должен сгенерировать эхо? Внешний обработчик или консоль. Если внешний обработчик, то консоль не сможет в случае чего запретить, например, эхо без танцев с бубном (она ведь не должна знать, кто с ней разговаривает, иначе какая нафиг модульность)... Но и писать обработку ответа в консоль тоже нельзя, потому что, консоль понятия не имеет, в каком формате надо отвечать.
Вы подходите к вопросу традиционным для начинающих способом - снизу, от ассемблера, так сказать. Но из гущи деревьев не видно леса. Это я к тому, что надо об архитектуре думать сверху.
Mirmik писал(а):
Это - язык клавиатурных команд.
...
Хм... Это надо обмозговать....

Это называется протокол. Давно обмозговано. И давно используется. А конкретная реализация протокола в виде клавиатурных команд - это ваш "ход лошадью". Смысл вашего желания в попытке перехода на высокий уровень, на взгляд сверху, что в целом правильно. Но вас постоянно тянет в ассемблер, в скан-коды какие-то и т.д. Для человека существует кнопка на клаве, но нет ни каких скан-кодов. Вот и нужно делать что-то понятное человеку - универсальная кнопка или что-то эдакое. И забыть про скан-коды, потому что это погружение даже не в лес, но зарывание себя в почву под корнями.

Ну и не забывайте - помимо абстракции "универсальная кнопка" есть ещё масса других интересных абстракций. Но пока архитектурный уровень не стал для вас обыденностью, лучше не парьтесь про другие абстракции, но ваяйте то, что для вас понятно и просто. Постепенно понятным и простым станет всё остальное.

Автор:  Mirmik [ 06 май 2014, 12:55 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Логично...

Я танцую от того, от чего будет танцевать мой пользователь... А мой пользователь скажет фи, как только я попытаюсь навязать ему архитектуру.

Я не могу забыть про скан коды, потому, что первое, что спросит мой полдьзователь, начав осваивать новую архитектуру, о которой я вообще может быть ничего не знаю...

- А как ты, о чувак, который эту хрень думал, предлагаешь мне интегрировать мою гипернутую психохрень с нестандартными кодами в твою систему?

Поэтому я... Ну никуда не денусь от абстрактного ассемблера. :ugeek:

Автор:  pavia [ 06 май 2014, 19:25 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Тут нет архитектуры. Как кому что нравиться. Тот так и реализует. Так что обмозговывать тут особо нечего тут делать надо.
Как известно ядро это всего лишь почтальон, который доставляет данные от одного процесса к другомму. Это по сути определение микро ядра.
Что касается организации протокола передачи. То тут совет простой разделить поток данные и управляющие потоки.

Автор:  Himik [ 10 май 2014, 22:38 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

Mirmik писал(а):
Поэтому я... Ну никуда не денусь от абстрактного ассемблера. :ugeek:

А как же платформо-независомость, полиморфность?
И откуда консоль узнает о скан-коде клавиши "Backspace" нестандартной клавиатуры?

Автор:  Mirmik [ 11 май 2014, 01:18 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

... Вы видите какой-то выход из этой щекотливой ситуации :) ?

Автор:  Yoda [ 12 май 2014, 10:25 ]
Заголовок сообщения:  Re: Еще одна ОС: Genos

1. Использование языков высокого уровня там, где нет явной необходимости в ассемблере.
2. Использование промежуточного уровня "абстрагирования от конкретного оборудования".
Только не спрашивайте какой ЯВУ лучше использовать, на этот вопрос я ответить не смогу :(

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/