Новая ветка ядра
-
И кстати умный Торвальдс занимается только ядром и не лезет ни в какие ниши.Last edited by Serge on Wed Jan 27, 2010 8:42 am, edited 1 time in total.
Никто из нас не может претендовать на место подобное Торвальдсу. Такое случается очень редко. Однако, конечно можно ерничать сколько угодно и строить фантастические планы подобно мышонку Брейну.
Я не говорил, что "мне нравится текущее ядро", не надо ничего за других додумывать. Достаточно просто их выслушать.maximYCH wrote: Относительно встроенного ядра. Собственно, я не вижу в этом проблемы. Текущее ядро человека, который этим занимается, устраивает. Что мешает ему самому над ним дальше работать, учитывая, что только ему это и интересно и все остальные (!!) думают в противоположном направлении (микроядро)? В branches и все. Тем более, что до окончания проектировки я чувствую, ой как много ...
... путь Linux нам не повторить. Путь Windows тем более. Во встроенных и без нас есть, ну а среди нас и так есть, кто занимается этими вопросами. Я больше не вижу коммерческих путей развития.
То что все люди думают по-разному - не плохо.
Плохо, когда не думают.
Мне нравится сама идея монолитной Колибри и те уникальные фишки, которых ни в одной "нормальной" оси, связаной по рукам и ногам стандартами POSIX и RTOS, невозможно себе представить. Где еще можно организовать DMA без IRQ? А как в WinЦЕ или в Lynx без драйвера серверная карта может прочитать системную переменную или семафор? А как насчет прямой трансляции картинки из TV-карты в видеопамять? Только ДОС позволял подобные выгибоны, но - в Real Mode, и для одной-единственной задачи.
Любого сисадмина кондрашка хватит от подобных перспектив, поэтому разработчикам и приходится изобретать всякие SLI-извращения для непосредственного "межбортового" общения устройств (хотя архитектура PCI изначально задумывалась как децентрализованная мультипроцессорная шина, а PCI-express - это вообще сеть point-to-point , ее даже на аппаратном уровне приходится за уши натягивать на PC-платформу). Или нагромождать четырехэтажные драйверы, чтобы опосредовать такое общение в рамках стандартной ОСи.
С точки зрения десктоп-системы это неприемлемо и обязательно будет заколочено вместе с другими зияющими дырами в системной защите.
Появится еще одна третьеразрядная самодельная мини-оська, одна из сотни подобных.
Но в сегодняшней Колибри это пока еще возможно, вот я и гребу против течения. Пока я один, до 'branches' дело не дойдет. Я ведь не программист, для меня разработать новую видеокарту легче, чем написать под нее приличный драйвер. Я лишь один из множества инженеров, которым позарез нужна Embedded-KOS как платформа для разработки, тестирования и внедрения новой электроники.
Уже много раз говорил, и еще раз повторю: самый быстрый путь к коммерциализации Колибри лежит через embedded-сектор.
Там - целый сектор вообще никем не занят: (взято отсюда: http://en.wikipedia.org/wiki/Embedded_system)
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
art_zh
А я вот пишу драйвер для видеокарты.
Для микроядра вообще фиолетово как общаются между собой драйвер и диспетчер устройств. А простота доступа к железу в Колибри с лихвой компенсируется отсутствием многих необходимых функций. Чтобы запустить звук пришлось переписать половину ядра. Для драйвера ATI тянуть из Линукс код работы с PCI. Нормально работать с IRQ можно только в ядре и так далее.
А я вот пишу драйвер для видеокарты.
Для микроядра вообще фиолетово как общаются между собой драйвер и диспетчер устройств. А простота доступа к железу в Колибри с лихвой компенсируется отсутствием многих необходимых функций. Чтобы запустить звук пришлось переписать половину ядра. Для драйвера ATI тянуть из Линукс код работы с PCI. Нормально работать с IRQ можно только в ядре и так далее.
Зато для железа не фиолетово, по какому адресу сейчас находится системный семафор. Даже при наличии драйвера ничто не может быть зафиксировано.Serge wrote: Для микроядра вообще фиолетово как общаются между собой драйвер и диспетчер устройств.
Чтобы претендовать на звание Embedded, надо будет переписать больше чем половину кода. (не вдруг и сразу, - шаг за шагом).Serge wrote:А простота доступа к железу в Колибри с лихвой компенсируется отсутствием многих необходимых функций. Чтобы запустить звук пришлось переписать половину ядра. Для драйвера ATI тянуть из Линукс код работы с PCI. Нормально работать с IRQ можно только в ядре и так далее.
И разумеется добавить множество необходимых функций.
И все же это более реальная цель, чем микрокернел и даже netbook-OS.
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
art_zh
Какой семафор и где не может быть зафиксировано ?
Так проблема в том что проще написать заново чем переписать то что есть. Это всё равно что полностью заменить в многоэтажке пару этажей в середине и половину фундамента да ещё и подвал сделать. Да так чтобы жильцы и не заметели что что-то поменялось. Реально ?
Какой семафор и где не может быть зафиксировано ?
Так проблема в том что проще написать заново чем переписать то что есть. Это всё равно что полностью заменить в многоэтажке пару этажей в середине и половину фундамента да ещё и подвал сделать. Да так чтобы жильцы и не заметели что что-то поменялось. Реально ?
Полная аналогия с системным семафором, только переключается не программным потоком/задачей, а реальным железом.Serge wrote: Какой семафор и где не может быть зафиксировано ?
Для бесконфликтной работы 2 или нескольких равноправных задатчиков, сидящих на одной шине и разделяющих общий ресурс (например, общий блок системной памяти, или видеобуфер, или другое подчиненное устройство), им требуется опрос/установка некоего системного семафора.
В "нормальных" ОСях устройство для начала должно сгенерить прерывание и сообщить драйверу, что оно желает опросить/установить семафор. Драйвер героически разруливает эту в общем-то примитивную задачку и гордо водружает флаг семафора в нужный бит известного порта устройства. На весь цикл опроса улетает прорва времени и ресурсов, драйверы распухают от кода множества подобных обработчиков ерунды, а межбортовое взаимодействие тормозится и усложняется до полного абсурда.
В Колибри более-менее башковитое устройство (а все задатчики PCI - очень непростые штучки) может само разрулить шинный семафор, захватив шину всего на несколько тактов. Причем не просто без IRQ - вообще без драйвера! Все что для этого требуется от системы - зафиксировать семафор в статическом блоке и передать устройству его физический адрес.
Так что несовершенство Колибри кое-где вполне может быть компенсировано ее офигенно либеральной архитектурой.
Сравнение с многоэтажкой - пусть и яркая, но всего лишь метафора. К тому же неубедительная. Горбачев тоже когда-то использовал ту же ложную метафору, и даже свой катастрофический эксперимент назвал "перестройкой". А китайцы просто работали, последовательно приводя в порядок тот бардак, который им достался от Кормчего. Причем многие "жильцы" там до сих пор думают, что все идет как и было им предначертано. (пардон за метафоруSerge wrote: Так проблема в том что проще написать заново чем переписать то что есть. Это всё равно что полностью заменить в многоэтажке пару этажей в середине и половину фундамента да ещё и подвал сделать. Да так чтобы жильцы и не заметели что что-то поменялось. Реально ?
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
art_zh, разница лишь в том, что для Вашего ядра потребуется переписать половину и последовательно, а для ядра, к которому стремятся некоторые другие разработчики - все и с нуля. Кроме того, все что Вы описываете (по моему скромному мнению и определенным знаниям по архитектуре) порядком сложнее даже задачи переписки ядра.
art_zh
Наверное это неправильные оси.
Меня например интересует быстрое микроядро с удобным доступом к железу. Для такого ядра проще сделать порт драйверов с Линукс. И систему проще сконфигурировать под любое применение. Некоторые разработкии в этом направлении у меня есть, правда под 32 бита.
Наверное это неправильные оси.
Такой сервис есть в любом приличном ядре. В Линукс с этим точно нет проблем. Выделяется ДМА память, запрашивается физический адрес.art_zh wrote:Все что для этого требуется от системы - зафиксировать семафор в статическом блоке и передать устройству его физический адрес
Вот и я предлагаю не перестраивать а как китайцы построить новое. Рядом. На специально огороженной территории.art_zh wrote:Горбачев тоже когда-то использовал ту же ложную метафору, и даже свой катастрофический эксперимент назвал "перестройкой"
Меня например интересует быстрое микроядро с удобным доступом к железу. Для такого ядра проще сделать порт драйверов с Линукс. И систему проще сконфигурировать под любое применение. Некоторые разработкии в этом направлении у меня есть, правда под 32 бита.
Давайте соберем все за и против микроядра. Вещь звучит заманчиво, но правильная ли она в рамках KOS? Я не уверен.
Аргументы про безопасность и про возможность безболезненного восстановления серверов я считаю мифом.
Представьте себе падение драйвера (одного из, ведь для доступа к файлам получится цепочка из кучи серверов). Допустим его можно перезагрузить. Допустим мы сохраняем состояние драйвера перед его падением (когда оно еще работает нормально). Допустим это состояние корректно и актуально, т.е. при его восстановлении драйвер не упадет тут-же. Допустим ближайшие сервера готовы к падению близнеца и в состоянии подождать, когда он очухается. Уже понимаете к чему я клоню :-). А что будет с приложениями, которые в этот момент хотели читать/писать файл? Многие из вас обрабатывают ошибки ФС? Какая должно быть ошибка в такой ситуации? Или кто-то будет кешировать все запросы на запись в надежде что драйвер очухается и обработает их позже, что бы приложение продолжило функционировать. Или запрос будет отложен без возврата управления приложению, или всё-же специфическая ошибка.
Т.е., что бы этот аргумент состоялся, нужно выполнить прорву условий, к падению драйвера должны быть готовы все. Если я записываю только что напечатанных 1000 строк кода, а тут такой сюрприз, к которому приложение не было готово, то мне абсолютно пополам, что интернет-радио всё еще звучит и система проявляет признаки жизни :-).
А что можно сказать в пользу микроядра в данном проекте? Мне ничего не приходит на ум, что будет гарантированно лучше монолита.
POSIX. Зачем нам POSIX? Рассказать миф про стандарты и API в Linux :-) ? Простота переноса софта, например, с Linux. Ерунда. Многим из вас приходилось повышать версию glibc и при этом всё гарантированно продолжало работать? А что если вы вздумаете взять альтернативную libc, вешайтесь ребята :-). Софт сейчас пишется под совершенно определенные версии библиотек, а обратная совместимость в этих библиотеках организована крайне отвратительно. Так что при портировании чего-либо куда-либо всё равно понадобится активнейшее участие программиста с писанием как своего кода, так и исправлением чужого. Тогда зачем прогибаться под POSIX (что бы было приятно только сишникам)? Понадобится промежуточный код для портирования, но не стоит всю систему ломать под это мировоззрение.
Я понимаю Mario, но не могу полностью с ним согласиться. У KOS может быть реальное применение, возможно к этому стоит стремиться. Но я к данному проекту испытываю исключительно академический интерес (это хобби) и лично меня это полностью устраивает, т.е. дополнительно меня мотивировать ненужно. Возможно у остальных - иначе. Что касается применения KOS: Тонкие клиенты X, VNC, RPC и т.д., а почему нет, хотя с этим справится и Linux. Медийная коробка (Boxee), а почему нет, справится, без сомнения, так же как и Linux. Узкозаточенный сервер из коробки, например, СУБД на базе PostgreSQL, с минимальным обслуживанием для организаций без возможности держать админа с мозгом, можно и Linux присобачить :-). Лично меня все эти три варианта заинтересовали бы, как конечного потребителя.
p.s. Извините за многа букав. Хотел еще написать, что меня интересует в ОС, как прикладника, ну это потом.
p.p.s. Возвращаясь к борьбе с падающими приложениями, этот вопрос решается очень легко -- интерпретирующая ВМ, можно и с JIT компилятором. Тогда и адресное пространство изолировать нет большой необходимости. Мне так кажется.
Аргументы про безопасность и про возможность безболезненного восстановления серверов я считаю мифом.
Представьте себе падение драйвера (одного из, ведь для доступа к файлам получится цепочка из кучи серверов). Допустим его можно перезагрузить. Допустим мы сохраняем состояние драйвера перед его падением (когда оно еще работает нормально). Допустим это состояние корректно и актуально, т.е. при его восстановлении драйвер не упадет тут-же. Допустим ближайшие сервера готовы к падению близнеца и в состоянии подождать, когда он очухается. Уже понимаете к чему я клоню :-). А что будет с приложениями, которые в этот момент хотели читать/писать файл? Многие из вас обрабатывают ошибки ФС? Какая должно быть ошибка в такой ситуации? Или кто-то будет кешировать все запросы на запись в надежде что драйвер очухается и обработает их позже, что бы приложение продолжило функционировать. Или запрос будет отложен без возврата управления приложению, или всё-же специфическая ошибка.
Т.е., что бы этот аргумент состоялся, нужно выполнить прорву условий, к падению драйвера должны быть готовы все. Если я записываю только что напечатанных 1000 строк кода, а тут такой сюрприз, к которому приложение не было готово, то мне абсолютно пополам, что интернет-радио всё еще звучит и система проявляет признаки жизни :-).
А что можно сказать в пользу микроядра в данном проекте? Мне ничего не приходит на ум, что будет гарантированно лучше монолита.
POSIX. Зачем нам POSIX? Рассказать миф про стандарты и API в Linux :-) ? Простота переноса софта, например, с Linux. Ерунда. Многим из вас приходилось повышать версию glibc и при этом всё гарантированно продолжало работать? А что если вы вздумаете взять альтернативную libc, вешайтесь ребята :-). Софт сейчас пишется под совершенно определенные версии библиотек, а обратная совместимость в этих библиотеках организована крайне отвратительно. Так что при портировании чего-либо куда-либо всё равно понадобится активнейшее участие программиста с писанием как своего кода, так и исправлением чужого. Тогда зачем прогибаться под POSIX (что бы было приятно только сишникам)? Понадобится промежуточный код для портирования, но не стоит всю систему ломать под это мировоззрение.
Я понимаю Mario, но не могу полностью с ним согласиться. У KOS может быть реальное применение, возможно к этому стоит стремиться. Но я к данному проекту испытываю исключительно академический интерес (это хобби) и лично меня это полностью устраивает, т.е. дополнительно меня мотивировать ненужно. Возможно у остальных - иначе. Что касается применения KOS: Тонкие клиенты X, VNC, RPC и т.д., а почему нет, хотя с этим справится и Linux. Медийная коробка (Boxee), а почему нет, справится, без сомнения, так же как и Linux. Узкозаточенный сервер из коробки, например, СУБД на базе PostgreSQL, с минимальным обслуживанием для организаций без возможности держать админа с мозгом, можно и Linux присобачить :-). Лично меня все эти три варианта заинтересовали бы, как конечного потребителя.
p.s. Извините за многа букав. Хотел еще написать, что меня интересует в ОС, как прикладника, ну это потом.
p.p.s. Возвращаясь к борьбе с падающими приложениями, этот вопрос решается очень легко -- интерпретирующая ВМ, можно и с JIT компилятором. Тогда и адресное пространство изолировать нет большой необходимости. Мне так кажется.