: . Главная . : . Форум . : . Загрузка . : . Пользователи . : . ЧаВо . : . Документация . :


Операционная система 3OS -> Форумы -> Идеология проекта
<< Предыдущая тема | Следующая тема >>   

Зачем?

Перейти к странице Предыдущая -1-2-3-4-5-6-7-8-9-10-11-12-13 Следующая
Автор Отправлено
AlexanderK
Wednesday 09.02.2005 16:56 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
Vadim Ushakov писал(а): ...
На мой взгляд специфика проекта требует микроядро, либо даже экзоядро, поверх которого работает объектно-ориентированная runtime-среда.
Любая ОС предоставляет POSIX, этого достатоточно для реализации чего угодно.
Наверх
czarker
Wednesday 09.02.2005 17:18 Цитата

Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
AlexanderK
Хорошо быть оптимистом...
P.S.: глубока POSIX-совместимость MenuetOS, OpenVMS, QNX, наконец...

Но это всё, конечно, моё сугубо личное мнение.
Наверх
AlexanderK
Wednesday 09.02.2005 19:20 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
И зачем ты их перечислил? Чтобы показать что в правилах бывают исключения? Тем не менее осей с нормальной раелизацией POSIX немало.
Наверх
AlexanderK
Wednesday 09.02.2005 19:24 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
К стати в QNX Neutrino, POSIX очень даже ничего. http://www.qnx.com/developers/docs/momentics621_docs/neutrino/sys_arch/kernel.html
Наверх
czarker
Thursday 10.02.2005 01:17 Цитата

Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
Они сами писали, что не обеспечивают полной POSIX-совместимости.
И вообще, ядер много, хороших ядер почти нет.

Но это всё, конечно, моё сугубо личное мнение.
Наверх
AlexanderK
Thursday 10.02.2005 01:31 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
А знаешь сколько всякой фигни в полной реализации? Она нафиг не нужна такая хорошая.
Наверх
Vadim Ushakov
Thursday 10.02.2005 05:57 Цитата
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
AlexanderK писал(а): ...
Любая ОС предоставляет POSIX, этого достатоточно для реализации чего угодно.
Мы здесь копья ломаем: писать собственное ядро или не писать. А решение оказывается простое - хотел бы я посмотреть, как объекты, выстроившись в колонну, дружно отправляются на stdout. А лучше на stderr.

POSIX, да святится имя твое,
Да пребудут в вечном GPF системы, не поддерживающие тебя,
Аминь.
Наверх
Vadim Ushakov
Thursday 10.02.2005 06:33 Цитата
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
czarker писал(а): ...
функционально ядро и runtime для .NET представляют единое целое и должны выполняться с одинаковым приоритетом
Как я не старался, так и не смог понять скрытый смысл этой фразы. Слова "должны выполняться с одинаковым приоритетом" как будто бы указывают на то, что runtime будет работать в отдельном процессе/потоке. По-моему, имелось ввиду нечто другое. Czarker, поясните свою мысль.

На мой взгляд, у 3ОС не может быть ядра в обычном понимании этого слова. Ядро 3ОС - это HAL для доступа к аппаратным ресурсам + runtime. Здесь возможны два варианта.
1. HAL работает в 0-м кольце, runtime - в 3-м кольце. В этом случае очевидно, что HAL представляет собой экзоядро. Такая модель позволяет сделать систему очень гибкой. Мы можем при желании запускать в отдельных процессах приложения, предназначенные для других прикладных подсистем: POSIX, Win32API, OS/2 и т.д. Для этого нужно написать runtime, для каждой конкретной подсистемы.
2. И HAL и runtime работают в 0-м кольце. Здесь мы теряем в гибкости, но получаем определенный запас устойчивости системы. Вынесение runtime подальше с глаз прикладного кода оставляет меньше шансов, что объект намеренно или случайно "выполнит недопустимую операцию." Этот вариант можно условно назвать "объектно-ориентированным микроядром."

Ни в первом ни во втором варианте не предусмотрено включение в состав "ядра" (которого на самом деле нет ) каких-либо сторонних компонентов. Поэтому мне также непонятно следующее высказывание:
czarker писал(а): ...
Специфика проекта требует модульное ядро, так что выбор резко сужается.
Вопрос: какие еще компоненты/модули, по вашему мнению, должны быть в ядре?
[ Редактирование Thursday 10.02.2005 06:35 ]
Наверх
czarker
Thursday 10.02.2005 09:54 Цитата

Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
AlexanderK
AlexanderK писал(а): ...
А знаешь сколько всякой фигни в полной реализации?
Не надо! Либо мы имеем UNIX-основную ОС, и тогда логичней нести бремя предельной совместимости, либо мы имеем UNIX-несовместимую ОС, и тогда реализация через POSIX или его части - зло.

Vadim Ushakov
Vadim Ushakov писал(а): ...
хотел бы я посмотреть, как объекты, выстроившись в колонну, дружно отправляются на stdout. А лучше на stderr.
А stderr и stdout - объекты сами по себе. Просто их так никто не называет, но они объектами являются. Кстати, а какие данные Вы на stderr посылаете?
Vadim Ushakov писал(а): ...
czarker писал(а): ...
функционально ядро и runtime для .NET представляют единое целое и должны выполняться с одинаковым приоритетом
Czarker, поясните свою мысль.
Всё просто: код должен выполняться с одним приоритетом, т.е. либо в одном процессе (в ядре), либо в одном круге, если мы будем делать безъядерную систему.
nB: Что-то я разошёлся... "Мы будем делать"... Я-то ничего делать не буду.
Vadim Ushakov писал(а): ...
Вопрос: какие еще компоненты/модули, по вашему мнению, должны быть в ядре?
Драйверы. Протоколы.
Если мы запихиваем в ядро .NET, то микроядерность тут же теряется - ядро слишком тяжёлое. Выполнять .NET с приоритетом выше драйверов нельзя - система будет неработоспособна.

Но это всё, конечно, моё сугубо личное мнение.
Наверх
Vadim Ushakov
Thursday 10.02.2005 13:10 Цитата
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
czarker писал(а): ...
А stderr и stdout - объекты сами по себе.
Согласен. Точно также встроенные в Windows элементы управления являются объектами (только вместо методов у них сообщения), однако никто их так не называет.

czarker писал(а): ...
Кстати, а какие данные Вы на stderr посылаете?
На stderr я обычно посылаю все те нехорошие слова, которые программа говорит пользователю, не умеющему с ней работать .

czarker писал(а): ...
Vadim Ushakov писал(а): ...
Вопрос: какие еще компоненты/модули, по вашему мнению, должны быть в ядре?

Драйверы. Протоколы.

На самом деле я имею очень смутное представление о .NET, так что все написанное ниже может являться бредом, однако все-таки выскажусь.

Я говорил о HAL + runtime, имея ввиду, что runtime только координирует работу объектов. Если для .NET runtime нужна серьезная поддержка со стороны каких-либо драйверов, то толкать его в 0-е кольцо нет смысла, независимо от того, используем ли мы модульный подход или "микроядерный" (в том смысле, о котором я писал ранее).

Если в 0-м кольце будут жить HAL, драйвера, runtime, то мы рискуем наступить на те же грабли, что и Microsoft: "Этот драйвер не тестировался на совместимость с Windows, вы уверены, что хотите продолжить установку?" Я считаю, что в системе не должно быть ни одной "легальной" возможности добавить сторонний код в нулевое кольцо, иначе наша система будет работать "от BSOD-а до BSOD-а."

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

Между прочим, слова Czarker о драйверах, работающих прямо в ядре, противоречат его же высказыванию:
czarker писал(а): ...
Или вы считаете, что драйверы периферийных устройств в прогрессивной объектно-ориентированной системе должны работать ниже файловой системы?
Но если уже мы "докатились" до разделения объектов на "нижнеуровневые" и "верхнеуровневые", то пусть все они работают в 3-м кольце. Тогда, по крайней мере, сбой одного из драйверов не утащит на тот свет всю систему.

Нет никакой необходимости в модульном ядре - вот, что я пытаюсь доказать. Все, что раньше по историческим причинам работало в 0-м кольце, может быть вынесено в обычные процессы/потоки/объекты (в зависимости от идеологии системы). При этом гарантируется:
а) увеличение устойчивости
б) улучшение инкапсуляции
в) упрощение разработки программ
Также возможно повышение производительности (если все будет спроектировано не просто правильно, а идеально).
Наверх
Перейти к странице Предыдущая -1-2-3-4-5-6-7-8-9-10-11-12-13 Следующая

Модераторы: Roman I Khimov, netwizard.

Переход:     Наверх