Previous Entry Share Next Entry
2016-01

про микрокернелы и linux

ну или просто про микрокернелы.

http://blog.darknedgy.net/technology/2016/01/01/0/ вот тут есть чудесный разбор заблуждений на тему микрокернелов, а еще там довольно неплохо проиллюстрировано, как много этих заблуждений посеяно Торвальдсом.

это к вопросу о том, почему я считаю, что Linux очень сильно навредил развитию ядер операционных систем (да и операционных систем в целом, чего уж там).

This entry was originally posted at http://wizzard.dreamwidth.org/466077.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
mudasobwa March 13th, 2016
Слушай, ну два фрика ведь плохо опровергают успех. Я вот почему-то думаю, что у гугла был ресурс на андроид.

wizzard0 March 13th, 2016
я не уверен, что понял твою мысль, можешь переформулировать?

justy_tylor March 13th, 2016
Но Торвальдс сеет ведь не просто так
Ведь если микрокернел рулит
То виден Торвальдса хуяк-хуяк


Edited at 2016-03-13 03:25 am (UTC)

mbr March 13th, 2016
В Эмбеде в основном микроядро (или его вариации) и используется. Для десктопов и серваков - монолит. Потому как на реалтайм пофигу, а проектирование сильно проще. Собственно поэтому линукс стал полноценной системой, а миникс так и не вылез из академических задач.

Ряд заблуждений он действительно посеял, но это чистый маркетинг - кто разбирается в вопросе, просто игнорирует. С другой стороны, в линуксе огромнейшее количество оригинальных архитектурных решений. Я бы не сказал, что это тормозит развитие ОС, скорее наоборот. Некоторые вещи я честно заимствовал для разработки своей ОС - те же SLUB например.

Вот как один из вариантов заблуждений - то что микроядро медленное. Ноги растут, емнип, из MIT наработок. Пацаны запихнули проверку секьюрити при IPC непосредственно в контекст исполнения супервизора. Естественно оно сдохло, разработку свернули.

wizzard0 March 13th, 2016
Ну да, всё так.

vissarion March 13th, 2016
Этот вопрос уже перешел из технологической плоскости в филосовскую.

Идеальная концепция против плохой, но реальной.

Все знают что Haskell - самый лучший язык в мире, но Facebook ($50млрд кэшем) и VK почему-то написаны на PHP.

Все знают (и даже сам Торвальдс) что микроядра лучше, но 99.9% почему-то используют гибрид.

Это из серии "если ты такой умный, то почему ты не богатый"

wizzard0 March 13th, 2016
Не, ну в эмбеде зажило вот. И да, хаскель не лучший язык by any means (например, в нем все еще нет нормального пакетного менеджера, какого-то style guide, с IO вопрос не решен (хотя третья инкарнация в лице free monads дают некоторые надежды) и регулярно появляются breaking changes в stdlib :)

nivanych March 13th, 2016
Через N лет, с проникновением в индустрию более других языков, ситуация ещё изменится.

maxim March 13th, 2016
Самое охуенное, что я видел из написанного на С/C++ — это BeOS/Haiku: http://kernel-being.livejournal.com/2226.html
Еще NT Kernel могу читать, BSD хуйню с трудом. Linux днище.
Остальное за пределами квалификации.
А все эмбеддед красивые потому что маленькие.

Edited at 2016-03-13 01:35 pm (UTC)

vissarion March 13th, 2016
Мда, за 6 лет продвинулась с Alpha 2 до Alpha 4.

ex0_planet March 13th, 2016
Торвальдс? А почему тогда сразу не Кернигана и Ричи во вредители записать? Идеологию (файлы, процессы, пайпы... вот это все) заложили именно они.

Преимущества линукса последние лет 10-15 скорее не технические, а административно-организационные. Вместо того, чтобы иметь в каждой мелкой лавке свое говноядрышко со своими специалистами, никуда больше не пригодными, своими тараканами и мелкими амбициями итд итп, мы имеем хоть как-то унифицированную систему знаний в головах.

wizzard0 March 14th, 2016
Торвальдс пропагандирует worse is better; а K&R про другое совсем.

и да, worse is better местами дает административные преимущества

ex0_planet March 13th, 2016
Алсо, нельзя ли раскрыть тему про "навредил"? Ну вот не было бы линукса (и BSD тоже бы не было), и что? Мне вот как-то он не представляется всепожирающим монстром, душащим на корню все прорывные разработки — душат скорее сами разработчики, когда сравнивают стоимость написания своего, сколь угодно инновационного, и стоимость взятия готового и дотачивания под задачи.

ПМСМ, отсутствие до недавнего времени нормальной аппаратной виртуализации навредило гораздо сильнее.

wizzard0 March 14th, 2016
> отсутствие до недавнего времени нормальной аппаратной виртуализации

ну х86 кто только не обсырал ;)

vissarion March 13th, 2016
Мне кажется, вопрос этот важен в другом ключе.
Сейчас популярна волна microservices с теми же идеями.
Типа делать один сервис с методами getCustomers и getOrders это плохо.
Мы всех обманем и сделаем на одном серваке сервис customers с методами get и put и на втором серваке сервис orders с методами get и put. Отлично, всех обанули.
Теперь пришёл новый фичареквест - показать всех кастомеров со всеми их ордерами.
В моноядре мы бы сделали тупой джоин, признались себе что это криво, закрыли тикет и пошли домой.
В микросервисах начинается фигня - получается, что для каждого кастомера возвращаемого в поиске надо дёрнуть другой сервис - ордеров. Дёрнуть не проблема - проблема в том что всё это тормозит, т.к. сервис ордеров находится на другом хосте. Кое-как сделали.
Потом приходит новый фичреквест - что теперь нужно проверять права юзера для каждого запроса и не показывать тех кастомеров, которых не полагается видеть и не показывать те ордера которые не положено.
Фигня в том что securitymanager у нас идёт третьим, отдельным микросервисом который проверяет права пользователя
После этого начинается трэш угар и содомия и проклятия в сторону микроядра, дебажить это становится невозможно, после чего проект закрывается и пишется нормально без выкрутасов и нормально идёт в лайв.

Я сам принимал в этом участие, почувствовал на собственной шкуре лет 7 назад была популярна идея BPEL/wsdl: пишем отдельные сервиса с wsdl интерфейсом а микроядро BPEL ими дирижирует, в сущности то же самое.

В оригинале у Линуса написано так (в Русском переводе):

...Предполaгaется, что вы рaзбивaете проблемы нa тaкие мелкие чaсти, что вся сложность пропaдaет.
Мне это кaзaлось глупым. Дa, кaждaя отдельнaя чaсть получaется простой. Но при этом их взaимодействие стaновится горaздо более сложным, чем при включении рядa сервисов в состaв ядрa, кaк это сделaно в Linux. Предстaвьте себе человеческий мозг. Кaждaя его состaвляющaя простa, но их взaимодействие преврaщaет мозг в очень сложную систему. В этом-то все и дело: целое больше чaстей. Если взять проблему, рaзделить ее пополaм и скaзaть, что кaждaя половинкa вполовину проще, то при этом вы игнорируете сложность интерфейсa между половинкaми. Сторонники микроядрa предлaгaли рaзбить ядро нa пятьдесят незaвисимых чaстей тaк, чтобы кaждaя чaсть былa в пятьдесят рaз проще. Они умaлчивaли о том, что взaимодействие между чaстями окaжется сложнее исходной системы - при том, что и чaсти сaми по себе не будут элементaрными.


Мне кажется, Линус до сих пор прав.

anonim_legion March 13th, 2016
Что-то мне это напоминает.

Стена кода на дельфи в обработчиках нажатий кнопок
vs
У нас было 2 лог-таргета, 75 фабрик, 5 обсерверов, пол-исходников юнит-тестов и целое множество классов всех сортов и расцветок, автомаппер, а также стратегии, фасады, подписчики, куча boilerplate и 2 дюжины сервисов. Не то чтобы это был необходимый запас для энтерпрайз-приложения, но если начал собирать ООП-дурь, становится трудно остановиться. Единственное, что вызывало у меня опасение — это IoC. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем IoC-зомби. Я знал, что рано или поздно мы перейдем и на эту дрянь.

  • 1
?

Log in

No account? Create an account