Любопытный вопрос - микроядро или монолит?
-
Я на днях наткнулся на занятную статейку одного амстердамского товарища, который занимается проектированием ос(автор Minix). Так вот, он весьма убедительно доказывал, что для надежной работы ос необходимо, чтобы все драйвера были вынесены из ядра и выполнялись в пространстве пользователя, типа в таком случае ошибка в коде драйверов не будет приводить к краху всей системы, при этом от честно отметил, что при таком подходе общая производительность системы уменьшается на 5-10 процентов. Что вы обо этом думаете?))
На производительность системы это не сильно влияет: в некоторых случаях Ring3-драйверы крутятся даже быстрее, чем в Ring0.
Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите. Злонамеренные юзеры из Ring3 смогут делать с ядром (буквально) всё, что им заблагорассудится.
Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите. Злонамеренные юзеры из Ring3 смогут делать с ядром (буквально) всё, что им заблагорассудится.
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
вот здесь та статейка, если кому интересно http://www.iakovlev.org/index.html?p=886
Там в общих чертах расписана конструкция его оси ну и много всякого прочего написано, может, я чего-то недопонял, вы лучше поймете все тонкости, не мог же такой пожилой и умный дядька так по-детски лохануться, там наверняка есть какие-то моменты, которые я не понял)
Там в общих чертах расписана конструкция его оси ну и много всякого прочего написано, может, я чего-то недопонял, вы лучше поймете все тонкости, не мог же такой пожилой и умный дядька так по-детски лохануться, там наверняка есть какие-то моменты, которые я не понял)
Хитромудрые выверты Танненбаума оказались ненамного эффективнее тупого нагромождения ядерных модулей а-ля-Торвальдс.
Ни по скорости, ни по размеру, ни по общей надежности кода.
Не надо всё многообразие системных решений сводить к двум (уже всем надоевшим) академическим подходам.
Существуют и другие пути.
И один из них - наш.
P.S. "...полная сборка системы, требующая более 120 компиляций, укладывается в 10 секунд" - вах!
Ни по скорости, ни по размеру, ни по общей надежности кода.
Не надо всё многообразие системных решений сводить к двум (уже всем надоевшим) академическим подходам.
Существуют и другие пути.
И один из них - наш.
P.S. "...полная сборка системы, требующая более 120 компиляций, укладывается в 10 секунд" - вах!
Last edited by art_zh on Thu Apr 10, 2014 1:07 pm, edited 1 time in total.
Ну вам виднее, я не спец в этом деле, поэтому и спросил))
просто стало любопытно)
Мне вообще все эти юниксы и прочие оси не очень нравятся - в них не встроен гуй При этом весят ого-го - больше винды.
Я, конечно, понимаю, что единственный интуитивно-понятный интерфейс — это женская грудь, но если сравнивать между гуем и командной строкой, то первое проще в освоении))
просто стало любопытно)
Мне вообще все эти юниксы и прочие оси не очень нравятся - в них не встроен гуй При этом весят ого-го - больше винды.
Я, конечно, понимаю, что единственный интуитивно-понятный интерфейс — это женская грудь, но если сравнивать между гуем и командной строкой, то первое проще в освоении))
На каждый плюс микроядра найдётся свой минус.
Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
Танненбаум сделал reincarnation manager - специальное приложение которое пингует критические сервисы и перезапускает их в случае падения. Приложения должны учитывать это и восстанавливать ресурсы после восстановления сервисов. Программисты конечно в восторге, вместо abort() им предлагают сделать вид, что ничего страшного не случилось.
Теперь представте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.
Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
Танненбаум сделал reincarnation manager - специальное приложение которое пингует критические сервисы и перезапускает их в случае падения. Приложения должны учитывать это и восстанавливать ресурсы после восстановления сервисов. Программисты конечно в восторге, вместо abort() им предлагают сделать вид, что ничего страшного не случилось.
Теперь представте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.
Дак я и не спорю, я понял, что нет простого решения, которое позволило бы разом увеличить надежность и ничего при этом не потерять) Ось - это слишком сложная система, в ней любая задача может быть достигнута только с помощью комплексных мер))
А кто говорит о свободном доступе? Несколько предопределенных системных процессов, каждый в аппаратно защищенной области памяти, выполняют предопределенные функции. Все.art_zh wrote:Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите.
Вообще-то падение драйвера принтера не должно приводить ни к чему, кроме невозможности отправить документ на печать.Serge wrote:На каждый плюс микроядра найдётся свой минус.
Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
Зачем они это делают? И почему сервер после n падений не может отказаться от затеи с поднятием такого драйвера?Serge wrote: Теперь представьте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.
На мой необразованный вкус главный плюс микроядерности в более легкой модификации и развитии системы из раздельных модулей с инкапсулированными данными и установленными протоколами связи по сравнению с монолитной системой, где все зашито, переплетено и черт ногу сломит
irkant
Драйверы Ring-3 в Колибри есть, и уже давно. Работают на прямую с железом, причем (в отличие от Ring-0 драйверов) будучи полноценными пользовательскими приложениями, они могут иметь свое окно (со всеми API-печеньками) и тестироваться в отладчике.
Что вообще нужно полноценному драйверу устройства? чаще всего - порты, прерывания (выделенные или расшаренные - непринципиально), сервисы для работы с конфигурационным пространством PCI и чтение из MSR. Это все есть.
Часто нужен доступ к MMIO : он тоже есть. Только у одной программы и только к одному PCI-устройству. Чайникам такую бритву в руки давать нельзя, поэтому MMIO-доступ по умолчанию не активизирован (надо раскомментировать одну строчку и перекомпилировать ядро).
Реже требуется DMA, причем у каждой железяки он свой, нестандартный. Еще реже - расширенный конфигспейс PCIe, APIC и MSI-прерывания.
Это все тоже есть, в Колибри-А.
Драйверы Ring-3 в Колибри есть, и уже давно. Работают на прямую с железом, причем (в отличие от Ring-0 драйверов) будучи полноценными пользовательскими приложениями, они могут иметь свое окно (со всеми API-печеньками) и тестироваться в отладчике.
Что вообще нужно полноценному драйверу устройства? чаще всего - порты, прерывания (выделенные или расшаренные - непринципиально), сервисы для работы с конфигурационным пространством PCI и чтение из MSR. Это все есть.
Часто нужен доступ к MMIO : он тоже есть. Только у одной программы и только к одному PCI-устройству. Чайникам такую бритву в руки давать нельзя, поэтому MMIO-доступ по умолчанию не активизирован (надо раскомментировать одну строчку и перекомпилировать ядро).
Реже требуется DMA, причем у каждой железяки он свой, нестандартный. Еще реже - расширенный конфигспейс PCIe, APIC и MSI-прерывания.
Это все тоже есть, в Колибри-А.
art_zh, спасибо за подробности, буду углубляться.
А падение usb оставит без клавиатуры и мыши.Вообще-то падение драйвера принтера не должно приводить ни к чему, кроме невозможности отправить документ на печать.
Btw, 3D драйверы в Линуксе и Колибри работают в user-mode.
Но не мешает, скажем, запущенной дефрагментации. Не могу согласиться, что падение драйвера должно быть равно BSOD. Без клавиатуры и мыши система могла бы спокойно доделать не требующие участия пользователя дела, вывести инфу и штатно перезагрузиться.Serge wrote:А падение usb оставит без клавиатуры и мыши.
Уже уяснил. Справочной информации остро не хватает. Все-таки, что по поводу viewtopic.php?f=1&t=677&start=645#p58603? Разумно ведь сначала обсудить и описать как все "должно быть в идеальной вселенной", тогда видно направление и есть где с чувством выполненного долга ставить галочкиSerge wrote:Btw, 3D драйверы в Линуксе и Колибри работают в user-mode.
План такой:
1. Готовлю опросник на темукак я провел лето как чего фунциклирует (сейчас, и что нужно доделать / как должно быть на самом деле).
2. Люди в теме и прочие праздношатающиеся качают txt файлик, набивают в него ответы и присылают мне обратно. Свои общие соображения (ибо никакой конкретики от меня на данном этапе ждать не стоит) выложу в первую очередь, чтобы особо ленивые могли просто написать "сделать все наоборот"
3. Делаю из ответов компиляцию.
4. Обсуждение компиляции. На этом этапе надо понимать, что любая критика будет критикой одного человека против обобщенного мнения "всех". Принимаются расширения, дополнения, конкретизация, но не смена парадигмы.
5. По результатам обсуждения пишу справку и SDK.
6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )
П.С. Да, на пункт 1 нужны будут консультации / правки.
1. Готовлю опросник на тему
2. Люди в теме и прочие праздношатающиеся качают txt файлик, набивают в него ответы и присылают мне обратно. Свои общие соображения (ибо никакой конкретики от меня на данном этапе ждать не стоит) выложу в первую очередь, чтобы особо ленивые могли просто написать "сделать все наоборот"
3. Делаю из ответов компиляцию.
4. Обсуждение компиляции. На этом этапе надо понимать, что любая критика будет критикой одного человека против обобщенного мнения "всех". Принимаются расширения, дополнения, конкретизация, но не смена парадигмы.
5. По результатам обсуждения пишу справку и SDK.
6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )
П.С. Да, на пункт 1 нужны будут консультации / правки.
Как показывает статистика (да, тоже та еще лживая наука, но все зависит от честности человеков-ведущих) тот кто больше всего занимается обсуждением реализации сам не готов эту реализацию воплощать, вот и получается п.6.irkant wrote: 5. По результатам обсуждения пишу справку и SDK.
6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )
З.Ы. Ничего личного - только по делу и если я ошибусь в своих подозрениях, то я буду только рад.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4 Я надеюсь как на самоценность полученного (если) документа, так и на участие в его реализации.
Who is online
Users browsing this forum: No registered users and 4 guests