Любопытный вопрос - микроядро или монолит?

Internal structure and you change requests/suggestions
  • На производительность системы это не сильно влияет: в некоторых случаях Ring3-драйверы крутятся даже быстрее, чем в Ring0.

    Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите. Злонамеренные юзеры из Ring3 смогут делать с ядром (буквально) всё, что им заблагорассудится.
    Евангелие от Иоанна: стих 1

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • вот здесь та статейка, если кому интересно http://www.iakovlev.org/index.html?p=886
    Там в общих чертах расписана конструкция его оси ну и много всякого прочего написано, может, я чего-то недопонял, вы лучше поймете все тонкости, не мог же такой пожилой и умный дядька так по-детски лохануться, там наверняка есть какие-то моменты, которые я не понял)
  • Хитромудрые выверты Танненбаума оказались ненамного эффективнее тупого нагромождения ядерных модулей а-ля-Торвальдс.
    Ни по скорости, ни по размеру, ни по общей надежности кода.

    Не надо всё многообразие системных решений сводить к двум (уже всем надоевшим) академическим подходам.
    Существуют и другие пути.

    И один из них - наш.

    P.S. "...полная сборка системы, требующая более 120 компиляций, укладывается в 10 секунд" - вах! :mrgreen:
    Last edited by art_zh on Thu Apr 10, 2014 1:07 pm, edited 1 time in total.
  • Ну вам виднее, я не спец в этом деле, поэтому и спросил))
    просто стало любопытно)
    Мне вообще все эти юниксы и прочие оси не очень нравятся - в них не встроен гуй :D При этом весят ого-го - больше винды.
    Я, конечно, понимаю, что единственный интуитивно-понятный интерфейс — это женская грудь, но если сравнивать между гуем и командной строкой, то первое проще в освоении))
  • На каждый плюс микроядра найдётся свой минус.
    Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
    Танненбаум сделал reincarnation manager - специальное приложение которое пингует критические сервисы и перезапускает их в случае падения. Приложения должны учитывать это и восстанавливать ресурсы после восстановления сервисов. Программисты конечно в восторге, вместо abort() им предлагают сделать вид, что ничего страшного не случилось.
    Теперь представте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.
  • Дак я и не спорю, я понял, что нет простого решения, которое позволило бы разом увеличить надежность и ничего при этом не потерять) Ось - это слишком сложная система, в ней любая задача может быть достигнута только с помощью комплексных мер))
  • art_zh wrote:Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите.
    А кто говорит о свободном доступе? Несколько предопределенных системных процессов, каждый в аппаратно защищенной области памяти, выполняют предопределенные функции. Все.
    Serge wrote:На каждый плюс микроядра найдётся свой минус.
    Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
    Вообще-то падение драйвера принтера не должно приводить ни к чему, кроме невозможности отправить документ на печать.
    Serge wrote: Теперь представьте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.
    Зачем они это делают? :) И почему сервер после n падений не может отказаться от затеи с поднятием такого драйвера? :)

    На мой необразованный вкус главный плюс микроядерности в более легкой модификации и развитии системы из раздельных модулей с инкапсулированными данными и установленными протоколами связи по сравнению с монолитной системой, где все зашито, переплетено и черт ногу сломит :)
  • irkant

    Драйверы Ring-3 в Колибри есть, и уже давно. Работают на прямую с железом, причем (в отличие от Ring-0 драйверов) будучи полноценными пользовательскими приложениями, они могут иметь свое окно (со всеми API-печеньками) и тестироваться в отладчике.

    Что вообще нужно полноценному драйверу устройства? чаще всего - порты, прерывания (выделенные или расшаренные - непринципиально), сервисы для работы с конфигурационным пространством PCI и чтение из MSR. Это все есть.

    Часто нужен доступ к MMIO : он тоже есть. Только у одной программы и только к одному PCI-устройству. Чайникам такую бритву в руки давать нельзя, поэтому MMIO-доступ по умолчанию не активизирован (надо раскомментировать одну строчку и перекомпилировать ядро).

    Реже требуется DMA, причем у каждой железяки он свой, нестандартный. Еще реже - расширенный конфигспейс PCIe, APIC и MSI-прерывания.
    Это все тоже есть, в Колибри-А.
  • art_zh, спасибо за подробности, буду углубляться.
  • Вообще-то падение драйвера принтера не должно приводить ни к чему, кроме невозможности отправить документ на печать.
    А падение usb оставит без клавиатуры и мыши.
    Btw, 3D драйверы в Линуксе и Колибри работают в user-mode.
  • Serge wrote:А падение usb оставит без клавиатуры и мыши.
    Но не мешает, скажем, запущенной дефрагментации. Не могу согласиться, что падение драйвера должно быть равно BSOD. Без клавиатуры и мыши система могла бы спокойно доделать не требующие участия пользователя дела, вывести инфу и штатно перезагрузиться.
    Serge wrote:Btw, 3D драйверы в Линуксе и Колибри работают в user-mode.
    Уже уяснил. Справочной информации остро не хватает. Все-таки, что по поводу viewtopic.php?f=1&t=677&start=645#p58603? Разумно ведь сначала обсудить и описать как все "должно быть в идеальной вселенной", тогда видно направление и есть где с чувством выполненного долга ставить галочки :)
  • План такой:
    1. Готовлю опросник на тему как я провел лето как чего фунциклирует (сейчас, и что нужно доделать / как должно быть на самом деле).
    2. Люди в теме и прочие праздношатающиеся качают txt файлик, набивают в него ответы и присылают мне обратно. Свои общие соображения (ибо никакой конкретики от меня на данном этапе ждать не стоит) выложу в первую очередь, чтобы особо ленивые могли просто написать "сделать все наоборот" ;)
    3. Делаю из ответов компиляцию.
    4. Обсуждение компиляции. На этом этапе надо понимать, что любая критика будет критикой одного человека против обобщенного мнения "всех". Принимаются расширения, дополнения, конкретизация, но не смена парадигмы.
    5. По результатам обсуждения пишу справку и SDK.
    6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )

    П.С. Да, на пункт 1 нужны будут консультации / правки.
  • irkant wrote: 5. По результатам обсуждения пишу справку и SDK.
    6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )
    Как показывает статистика (да, тоже та еще лживая наука, но все зависит от честности человеков-ведущих) тот кто больше всего занимается обсуждением реализации сам не готов эту реализацию воплощать, вот и получается п.6.

    З.Ы. Ничего личного - только по делу и если я ошибусь в своих подозрениях, то я буду только рад.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4 Я надеюсь как на самоценность полученного (если) документа, так и на участие в его реализации.
  • Who is online

    Users browsing this forum: No registered users and 3 guests