LINUX.ORG.RU
ФорумTalks

ядросрач


0

0

объясните несведующему, почему за монолитность ругают линакс, а солярис, *бзд таким нападкам не подвергается?

★☆

солярис и бсд - рип, венда как пример канонического говна - должна быть монолитной. Все понятно?

wfrr ★★☆
()

<fat>
Потому что ещё не растолстело. Вот добавят в него поддержку СТОЛЬКИХ устройств - будут ругать. И настанет тогда linux-капец, и будут на Земле властвовать программы Корпорации.
</fat>

AITap ★★★★★
()

>почему за монолитность ругают?

вот мой вопрос. плюсы и минусы есть как у монолитных систем, так и у микроядерных.

RedPossum ★★★★★
()

Про соплярис открываем Немет 2е изд. там написано - ядро конфигурируется во время загрузки, загружая нужное и выкидывая ненужное.

Deleted
()
Ответ на: комментарий от Deleted

Про соплярис открываем Немет 2е изд. там написано - ядро конфигурируется во время загрузки, загружая нужное и выкидывая ненужное.

А разве линупс нет?

a3
()
Ответ на: комментарий от drull

если я правильно понял, то в микроядре кривой драйвер может перезапуститься и продолжить работу, а в монолитном вызвать кернелпаник

timth ★☆
() автор топика
Ответ на: комментарий от anon11111

У линукса гибридное ядро. Завидуйте, хрыщи!

alex4
()
Ответ на: комментарий от AITap

А какая разница? Сконпилировались модули для всех этих устройств и лежат на диске, пока не понадобятся, есть не просят.

alex4
()
Ответ на: комментарий от z0D5e8n7x_2

> а разве линукс не гибрид?

Нет, не гибрид. Гибрид - это чуть-чуть расширенное микроядро, включающее только базовую поддержку некоторого функционала для увеличения скорости работы. Например, ядро может предоставлять объекты для зашаривания памяти, а в классической микроядерной системе для этого придётся обратиться к специальному серверу. Далее, в микроядерной системе даже обработка юспейс фолтов может роутиться в юзерспейс, в гибридной - все фолты целиком обрабатываются в ядре. Ну и т. д. Наличие в линуксовом ядре виртуальной файловой системы, TCP/IP стека, прочих подсистем, драйверов не позволяет его отнести к гибридным системам. В них это всё должно работать в юзерспейсе.

fang
()
Ответ на: комментарий от fang

>Наличие в линуксовом ядре ... драйверов не позволяет его отнести к гибридным системам. В них это всё должно работать в юзерспейсе.

Драйверы устройств могут работать в kernel mode даже в микроядерных системах.

imhotep
()
Ответ на: комментарий от fang

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

Зашибись определение.

> Например, ядро может предоставлять объекты для зашаривания памяти, а в классической микроядерной системе для этого придётся обратиться к специальному серверу.

Как назывался этот сервер в классическом Mach?

> Далее, в микроядерной системе даже обработка юспейс фолтов может роутиться в юзерспейс

Ну ты системы-то называй, не стесняйся. Заодно и объясни, что такое "юспейс фолт" и что значит "роутится в юзерспейс"

> Наличие в линуксовом ядре виртуальной файловой системы, TCP/IP стека, прочих подсистем, драйверов не позволяет его отнести к гибридным системам.

А наличие всего этого в ядре Macos (ядро - это то, что тработает в режиме ядра) позволяет отнести ядро Macos к гибридным?

tailgunner ★★★★★
()

Windows с Vista Уже тоже сильно гибрид.

Драйвера видео и аудио 100% hot/re-pluggable. Вплоть до того, что умер драйвер видео, система может выставить вместо него Vesa.

tempuser002
()

Вообще микроядерность/гибридность/монолитность — понятия размытые, ибо фактически чистых представителей того или иного вида нет. Тот же Darwin обладает признаками и микроядра, и гибридного. Точно так же в зависимости от выбранных признаков и нужного результата Linux относят то к гибриду, то к монолиту.
А если правильно выбрать признаки, то можно и NT назвать гибридом.
По сабжу — потому что солярис и бздя не сильно угрожают винде, вот GTF для них и не выпускается.

dogbert ★★★★★
()
Ответ на: комментарий от anon11111

> У макоси гибридное ядро. Завидуйте, прыщи!

Во-первых 4.2, у нее обычное монолитное ядро (ФС и подсистема BSD там в режиме ядра, все сервисы ядра в одном контексте). Во-вторых макось при ошибке в драйвере (например разыменование нулевого указателя) паникует. А линукс делает oops и продолжает работать. Чему завидовать-то?

Relan ★★★★★
()

BTW, одной из самых Ъ микроядерных считается Symbian. Все на симбу?

dogbert ★★★★★
()
Ответ на: комментарий от tailgunner

> Зашибись определение.

Укажи на неточность, если такая есть, или дополни, если определение неполное.

> Как назывался этот сервер в классическом Mach?


В mach это делается в ядре. Mach вообще не микроядро, даже на гибрид не претендует, это недомонолит. Там block layer и куча драйверов находятся в ядре. Вместо этого Minix3 хотя бы смотри (servers/vm).

>> Далее, в микроядерной системе даже обработка юспейс фолтов может роутиться в юзерспейс


> Ну ты системы-то называй, не стесняйся.


В L4 именно так и делается.

> Заодно и объясни, что такое "юспейс фолт"


Фолт, который произошёл, когда процесс работал в пространстве пользователя.

> и что значит "роутится в юзерспейс"


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

> А наличие всего этого в ядре Macos (ядро - это то, что тработает в режиме ядра) позволяет отнести ядро Macos к гибридным?


Нет.

fang
()
Ответ на: комментарий от fang

>> Зашибись определение.

> Укажи на неточность, если такая есть, или дополни, если определение неполное.

Вот правильное определение: "Гибридное ядро - маркетинговый термин, популяризованный в начале 90-х Microsoft для продвижения своей ОС Windows NT. Кроме желания использовать в рекламных целях популярную тогда идеологию микроядерных ОС, смысла не имеет. Позднее использован в рекламе Mac OS X".

> Mach вообще не микроядро, даже на гибрид не претендует, это недомонолит.

Как интересно.

>>> Далее, в микроядерной системе даже обработка юспейс фолтов может роутиться в юзерспейс

>> Ну ты системы-то называй, не стесняйся.

> В L4 именно так и делается.

То есть Mach, Chorus и прочие - это не микроядра? Интересно было бы услышать твое определение микроядра.

>> Заодно и объясни, что такое "юспейс фолт"

> Фолт, который произошёл, когда процесс работал в пространстве пользователя.

Мде. Поглядев в магический кристалл, прозреваю, что имеется в виду page fault.

>> и что значит "роутится в юзерспейс"

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

Ты описал SIGSEGV, для которого микроядро нафиг не нужно. И который, кстати, использовался для реализации VM в userspace.

tailgunner ★★★★★
()
Ответ на: комментарий от fang

>> Зашибись определение.

> Укажи на неточность, если такая есть, или дополни, если определение неполное.

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

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

fang
()
Ответ на: комментарий от tailgunner

> Вот правильное определение: "Гибридное ядро - маркетинговый термин, популяризованный в начале 90-х Microsoft для продвижения своей ОС Windows NT. Кроме желания использовать в рекламных целях популярную тогда идеологию микроядерных ОС, смысла не имеет. Позднее использован в рекламе Mac OS X".

Ну, мысль понятна: ОС, в которой системная часть распределена между ядром и юзерспейсом. Только такое определение черезчур уж размыто. А уж в windows NT так вообще гуйня в ядре находится, а это исключительно пользовательский функционал.

> Интересно было бы услышать твое определение микроядра.


Посмотри лучше Танненбаума, что ли. Не собираюсь я копипастом заниматься. И посмотри код L4, ядра minix3, coyotos.

> Мде. Поглядев в магический кристалл, прозреваю, что имеется в виду page fault.


> Ты описал SIGSEGV, для которого микроядро нафиг не нужно. И который, кстати, использовался для реализации VM в userspace.


Обращение по неправильному адресу - это лишь небольшая часть. Сюда также относятся и замапленные страницы файла, которые ещё не прочитаны с диска, страницы, скинутые в своп и т. д.

fang
()
Ответ на: комментарий от fang

>> Вот правильное определение: "Гибридное ядро - маркетинговый термин, популяризованный в начале 90-х Microsoft для продвижения своей ОС Windows NT. Кроме желания использовать в рекламных целях популярную тогда идеологию микроядерных ОС, смысла не имеет. Позднее использован в рекламе Mac OS X".

> Ну, мысль понятна: ОС, в которой системная часть распределена между ядром и юзерспейсом.

Замечательная мысль, только не имеет отношения к определению гибридного ядра..

>> Интересно было бы услышать твое определение микроядра.

> Посмотри лучше Танненбаума, что ли. Не собираюсь я копипастом заниматься. И посмотри код L4, ядра minix3, coyotos.

А ты посмотри что-нибудь еще, кроме Танненбаума. И будь поосторожнее с терминами, а то получится, что нет бога, кроме Танненбаума, а до L4 микроядер и не было.

> Обращение по неправильному адресу - это лишь небольшая часть. Сюда также относятся и замапленные страницы файла, которые ещё не прочитаны с диска, страницы, скинутые в своп и т. д.

С помощью SIGSEGV это всё делалось.

tailgunner ★★★★★
()
Ответ на: комментарий от drull

>почитай сначала про отличия класических монолитных ядрер которые нафиг устарели и современных модульных

>Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми функциями, предоставляемыми ядром. Поэтому модульные ядра продолжают оставаться монолитными.

сам себя высек

timth ★☆
() автор топика
Ответ на: комментарий от timth

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

drull ★☆☆☆
()
Ответ на: комментарий от tailgunner

> Замечательная мысль, только не имеет отношения к определению гибридного ядра..

Ошибься, да, уже заметил. Давай тогда определимся с понятием ядра вообще. Я придерживаюсь трактовки, что это весь код работающий с CPL=0. Не согласен? -- Приведи формальное, полное определение ядра (ну или ткни носом в ресурс, в котором я такое правильное с твоей точки зрения определение смогу прочитать сам), опираясь на которое, можно провести чёткое отличие между монолитным ядром и гибридным. Определение, озвученное тобой, не делает этого. Друзья, запостившие в en.wikipedia.org статью "Hybrid kernel", кстати говоря, этого не делают так же. Разница всего навсего в терминологии (обозвали компоненты ядра серверами, работающими в пространстве ядра, взаимодействующими через определённый протокол), а суть не изменилась ни разу. Монолитом было -- монолитом и осталось. Весь код, имеющий пользовательскую семантику -- по-прежнему в просранстве ядра, и при падении любого из компонентов систему в большинстве случаев придётся перезагрузить полностью.

> А ты посмотри что-нибудь еще, кроме Танненбаума


Читал. Ещё много чего. Хочешь, чтобы перечислил? И опыт в разработке и микроядерных, и монолитных (здесь не очень большой, в виде linux) систем имею. А пост был к тому, что я не предлагаю своих определений, а придерживаюсь классических и копипастить их смысла не вижу.

> до L4 микроядер и не было.


Ну почему же не было -- minix появился раньше.

> С помощью SIGSEGV это всё делалось.


SIGSEGV не для этого. А вообще, проблем сделать это через сигналы пока не вижу. Только вот в монолитных и гибридных системах типы фолтов, отличных от "invalid memory reference" обрабатываются в ядре.

fang
()
Ответ на: комментарий от fang

> Разница всего навсего в терминологии (обозвали компоненты ядра серверами, работающими в пространстве ядра, взаимодействующими через определённый протокол), а суть не изменилась ни разу. Монолитом было -- монолитом и осталось.

То есть ты согласен, что термн hybrid kernel не имеет технического смысла?

> я не предлагаю своих определений, а придерживаюсь классических

Прекрасно. И какую же систему ты назвал "классической микроядерной системой"?

>> до L4 микроядер и не было.

> Ну почему же не было -- minix появился раньше.

Ты написал minix3, таким образом исключив более ранние версии. В любом случае, Mach старше любого из minix.

> SIGSEGV не для этого.

Он для этого тоже.

> монолитных и гибридных системах типы фолтов, отличных от "invalid memory reference"

Ну ты приведешь список фолтов, или как?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Он для этого тоже.

Да ну? Открываем posix и видим там: "SIGSEGV A Invalid memory reference." Получается, мы либо забиваем на posix, либо сталкиваемся со следующим затруднением: приложение хочет установить свой обработчик SIGSEGV для отлова обращений к невалидным адресам. А тут оказывается, что кто-то уже использует этот сигнал для других целей. Как выкрутиться?

>> Прекрасно. И какую же систему ты назвал "классической микроядерной системой"?

Повторяю ещё раз (последний): minix и L4. Что они единственные такие, ни в коем случае не утверждаю. А gnu mach -- да, сюда не вписывается ни разу. А от копипаста, как и прежде, воздержусь. Нужны подробные объяснения? Начни отсюда: http://en.wikipedia.org/wiki/Microkernel. Самое что ни на есть классическое определение.

> Ну ты приведешь список фолтов, или как?

Два из них уже привёл: а) замапленные страницы файла, ещё не прочитанные с диска б) Страницы, находящиеся в свопе.

Случай №3: процесс создаёт анонимный маппинг большого размера. Ядро создаёт регион в виртуальной памяти процесса, но страницы в page table не отображает, если при маппе не был указан флаг MAP_POPULATE. При обращении к любой из этих страниц в ядре возникает фолт, по которому соответствующую запись в таблицу страниц необходимо внести.

Случай №4: страницы, имеющие семантику copy-on-write.

Хватит пока?

fang
()
Ответ на: комментарий от tailgunner

> То есть ты согласен, что термн hybrid kernel не имеет технического смысла?

Согласно приведённому мной определения термина "ядро" вполне себе имеет.

fang
()
Ответ на: комментарий от fang

>> Он для этого тоже.

> Да ну?

Ну да.

> Открываем posix и видим там: "SIGSEGV A Invalid memory reference."

И что?

>> Прекрасно. И какую же систему ты назвал "классической микроядерной системой"?

> Повторяю ещё раз (последний): minix и L4.

Minix уже любой версии? Скажи, как называется в Minix1 (да хоть и в Minix3) "специальный сервер для расшаривания памяти".

> Хватит пока?

Ты не на экзамене, так что не надо демонстрировать знания флагов mmap. Всё, что ты назвал - это виды page fault. Ты только о них говоришь?

>> То есть ты согласен, что термн hybrid kernel не имеет технического смысла?

> Согласно приведённому мной определения термина "ядро" вполне себе имеет.

Мде. Ну и ладно. Удачи в разработке микроядерных ОС.

tailgunner ★★★★★
()
Ответ на: комментарий от fang

>Давай тогда определимся с понятием ядра вообще. Я придерживаюсь трактовки, что это весь код работающий с CPL=0.

Как же вас батенька на х86 заклинило. То что есть процессоры без mmu/mpu и есть микроядерные ос работающие на них вас не смущает ?

imhotep
()
Ответ на: комментарий от tailgunner

> Minix уже любой версии?

Признаюсь, весь путь развития minix не прослеживал. Знакомился сразу с minix3.

> И что?

Приведи решение описанной проблемы.

> Скажи, как называется в Minix1 (да хоть и в Minix3) "специальный сервер для расшаривания памяти".

В minix3 - vm. Если доверять списку апдейтов, появился только в 3-ей версии. Как работало до этого - без понятия. Занимается всеми маппингами вообще, в том числе shared. И page фолты обрабатывает.

> Всё, что ты назвал - это виды page fault. Ты только о них говоришь?

Да. Page fault имеют место и в kernel mode (К. О., да). Употреблённое "юспейс фолты" относилось к этому.

> Мде. Ну и ладно. Удачи в разработке микроядерных ОС.

Я, между прочим, не троллинга/самоутверждения ради спросил про определение термина "ядро". Если я что-то не так понимаю, хотелось бы это выяснить. Первоначальное значение термина "гибридное ядно", согласно тому, что я нагуглил, похоже, соответствует указанному вами. Согласен. Только вот смысла оно, действительно, не имеет никакого. Интересует, соответствует ли современная трактовка первоначальной.

fang
()
Ответ на: комментарий от imhotep

> Как же вас батенька на х86 заклинило

А так же на mips, sparc, powerpc и многих других.

> То что есть процессоры без mmu/mpu и есть микроядерные ос работающие на них вас не смущает ?


Это просто single adress space системы. Они модульные, да, но микроядерность тут уже совершенно не при чём.

fang
()
Ответ на: комментарий от fang

> Признаюсь, весь путь развития minix не прослеживал. Знакомился сразу с minix3.

Походу, ты упустил поколение микроядер, которые и являются классическими. Или два поколения.

> Я, между прочим, не троллинга/самоутверждения ради спросил про определение термина "ядро". Если я что-то не так понимаю, хотелось бы это выяснить.

Я спрашивал не об определении ядра вообще, а именно гибридного ядра.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.