LINUX.ORG.RU
ФорумTalks

Невесёлые мысли


0

1

Прочитал перепалку между Торвальдсом и Таненбаумом 20-ти летней давности. Поначалу получал много лулзов, но потом задумался, а не прав ли был последний, когда говорил, что монолитные ядра должны вымереть... Может мы пошли не тем путём? [Понимаю, что у истории нет сослогательного наклонения]

Если бы народ не оттянулся на создание нечта под названием «линукс», у нас была бы полноценная микроядерная ОС[читай хурд допилили]? И не было бы 1000 и одного костыля, называемого удавом и ежи с ним... Объективно говоря, микроядра ведь на порядок защищённее монолитных, а линукс остаётся стабильным только за счёт централизации. Всё, что за пределами ядра может в любой момент обрушить всю систему, при таком подходе любой проприетарный модуль страшно устанавливать... ИМХО поэтому их почти и нет(палка о двух концах), а разработчики видео прикладывают недюжинные усилия...

Ответ на: комментарий от true_admin

Оверхед слишком большой, имхо. Представляешь переключать контекст на каждый чих?

ничего страшного. Железо можно подправить под микроядро.

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

4.2. То, что в макоси используется сильно модифицированный Mach, еще не значит, что она микроядерна.

а что это значит, лол?

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

Только вот исправить его было бы значительно сложнее, потому что его причина не ошибка в коде, а сама архитектура.

в архитектуре не может быть ошибок, если она теоретически подкреплена.

А может быть был бы у нас тогда баг похлеще 12309 из-за издержек IPC в микроядре.

ты сначала этот 12309 найди, ага. Еще и не такие баги полезут в скоре.

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

в архитектуре не может быть ошибок, если она теоретически подкреплена.

Коммунизм тоже таким казался.

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

в архитектуре не может быть ошибок, если она теоретически подкреплена.

во-первых - коммунизм основан на философии и психологии. А они не обладают очевидной аксиоматикой, в отличие от математики и информатики.

во-вторых - коммунизм не опровергнут, и вполне работоспособен.

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

Баги? В скоре? Теперь ясно, откуда у некоторых 5 звезд

ms-dos32
()
Ответ на: комментарий от true_admin

Короче, имхо, идея микроядра слабовата.

Жесть.

От глюков всё равно полностью не страхует

Она страхует от краха. Почему думаешь в области эмбеддеда все в сторону микроядер смотрят? Потому что одмина с кнопкой ресет - нету. ЗАкатал железку - должна 10 лет работать.

В общем, мой выбор - гибридные ядра.

Гибридныё ядра - это недоосиленые микроядра. Сам процесс гибридизации идет потому что все идет к микроядрам.

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

в архитектуре не может быть ошибок, если она теоретически подкреплена.

Как раз теоретически вполне понятно, что у микроядра будут большие издержки из-за IPC. Вместо того, чтобы записать файл без смены контекстов надо переключаться между 4-5 процессами. Исправить проблему отзывчивости можно только сделав более частые переключения контекстов, но для этого нужен более быстрый процессор.

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

Железо можно подправить под микроядро.

и под ЯП :). Но это, имхо, слишком радикально. Хотя аппаратная поддержка ява-кода встречается.

Вообще хочу создать новый тред про «post-unix и будущее железо». Интересно почитать что у народа в голове творится помимо фантомОС и сингулярити.

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

DNA_Seq

NT изначально заявлялась как микроядро

а я ещё застал эпоху развитого социализма.

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

r

Ты наверное пропустил такие себе qnxы и симбианы.

да. эти пропустил.

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

XNU гибридное, а не микро

Только надо понимать что гибридизация - это движение от монолита в стороно микроядер, а не наоборот.

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

Только все с точностью до наоборот. Mach был не у них, а у NeXT, который его стырил в Карнеги-Мелоне, и они вообще могли его не брать, а сделали бы OSX на бздевом ядре. Но они скрестили Mach с бздей чтобы добавить микрокернельных функций где можно, а бзде оставили весь тот мешок посикса который взяли из фри. В XNU есть четкие ограничения. когда можно писать ядерный драйвер - когда драйвер напрямую взаимодействует с прерываниями или когда в нем нуждается само ядро. Если это не так - тогда вперед в песочницу IOKit. Там в ядро безусловно разрешаются только три вещи - сеть, фс и клавиатура.

И чем дальше тем меньше там остается грязных рук в BSDдевое ядро. Тот же IOKIt. В 10.6 появился Grand Central Dispatch призванный заменить треды, процессы, семафоры, сигналы, таймеры, полл/селект, блокировки. В 10.7 появился File Coordination - то есть read/write пошли нафиг, XPC - заменил бздевый IPC. А процессы, защита памяти и виртуальная память изначально управляется Mach - BSDчасть ядра просто обертка вокруг него.

Так что гибриды это не там где микроядра переделываются в монолиты, это там где микроядра постепенно вытесняют монолиты.

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

Как раз теоретически вполне понятно, что у микроядра будут большие издержки из-за IPC. Вместо того, чтобы записать файл без смены контекстов надо переключаться между 4-5 процессами. Исправить проблему отзывчивости можно только сделав более частые переключения контекстов, но для этого нужен более

Это можно исправить поправив архитектуру чуток.

быстрый процессор.

это вроде как не проблема уже.

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

К стати если бы не анальная политика эпла (только сегодня с этим маразмом сталкивался - даже бесплатный апп не проинсталишь без ввода кредитки) - у них может получится неплохое ядро. Недостаток ядра линукс ИМХО в том что оно экспортирует свои функции в виде сяшных примитивов - что в 21 веке уже неахти. Банально что-то в параллельном треде запустить - начинаются упражнения с pthread, если есть еще какой-то общий ресурс на который надо синхронизироваться - и надо применять все thread-mutex-deadlock-evasion-fu. В XNU же с GCD все просто - надо чето асинхронно - пжалста

dispatch_async(queue, ^() { doit(); }); 

Все. Даже сишничек для этого модифицировали запихнув туда замыкания. Надо зафигачить паралелльных одинаковых вычислений - одна строчка:

dispatch_apply(10000, queue, ^(size_t i) {
  //считаем тут
});

То есть по сути GCD - это реализация модных сейчас параллельных либ - только в эпле она поддерживается ядром, а не «берите жабу/моно или гугл го». ObjectiveC они так же форсят для написания всего - не суперахти - но урвнем всеж повыше сишечек.

А линукс застыл в C99.

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

коммунизм не опровергнут, и вполне работоспособен.

Интересно, сколько же вам нужно ещё эпик фейлов, чтобы его опровергнуть? Хотя о чём это я, сектантам доказательства не нужны.

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