LINUX.ORG.RU
ФорумTalks

[ololo][kernel]засланные казачки

 


0

0

<opennet> 343 изменения в грядущем ядре Linux 3.0 - дело рук разработчика по имени K. Y. Srinivasan, работающего в компании Microsoft. Согласно проведенным подсчетам общее количество изменений в Linux-ядре, проделанных Microsoft, составило 361, что вывело компанию на седьмое место в списке самых активных контрибьюторов Linux-ядра (для сравнения: компании Red Hat принадлежит 1000 изменений, Intel - 839, независимым разработчикам - 1085). Среди участвующих в разработке ядра корпораций Microsoft заняла 5 место, уступив только Red Hat, Intel, Novell и IBM.

Все проделанные Microsoft изменения связаны с драйверами для поддержки интерфейса виртуализации Hyper-V, разработанных ей же и открытых под лицензией GPL в середине 2009 года. Из-за несоответствия драйверов предъявляемым требованиям качества, их код долгое время оставался частью тестовой («staging») ветки ядра Linux и уже два раза был кандидатом на полное удаление из дерева исходного кода. Однако после нескольких оправданий Microsoft все-таки довела код до требуемого состояния, в результате чего и появилось такое большое количество изменений со стороны компании.

Интересно, что если пересчитать вклад Microsoft в количестве измененных строк кода, то компания окажется на 15 месте с 11564 строками кода или 1.3% от общего количества изменений (для сравнения размер изменений от компании Intel - 163232 строк или 18.1%). </opennet>

★★★★

Последнее исправление: megabaks (всего исправлений: 3)
Ответ на: комментарий от iomould

> нет, не идеально, просто архитектурно лучше, как и по некоторым другим параметрам по сравнению с монолитом, имеет свои недостатки тоже. а то что нет реализаций хороших и годных (ну QNX еще куда ни шло) - это проблема уже времени исключительно, монолиты еще в 70х были, микроядра это уже туда к 80м, а по хорошему к началу 90х, так что еще лет 10-15 и доковыряют эту архитектуру.

Ну если долго стенку ковырять, можно таки и проковырять дырку. Проблема микрокернела в том, что он должен был быть в итоге проще, в том числе и за счёт отделения кода драйверов от основного пространства ОС. Но вместо этого его толком никак не могут допилить.

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

в нынешнее время MMU и быстрое переключение контекста

Видишь ли, мой юный друг, проблема совсем не в переключении контекста и не в ММЮ. Проблема в том, что выполнение системного вызова в монолите - это: 1) call; 2) какие-то там действия в ядре; 3) ret. А вот что-бы в микроядре тоже самое сделать надо: 2) создать сообщение; 3) отправить сообщение; 4) передать сообщение; 5) получить сообщение; 6) какие-то там действия в модуле (пусть даже и в юзерспейсе); 7) создать сообщение; 8) отправить сообщение; 9) передать сообщение; 10) получить сообщение; 11) удалить два уже ненужных сообщения. Если всё это расписать в виде call и ret, как я это сделал для монолита, получишь простыню.

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

Кроме того, когда мы говорим о монолите, подразумевается такая большая програма, которая решает конкретные задачи. А когда говорим о микроядре, всегда подразумевается ipc + primitive sched (some rr) + primitive mm. Хитро, не так ли? А как же nonprimitive? А как же tcp/ip? А как же доступ к файлам? Кто всё это будет решать? 1000 юзерспейсных програмок? Так где же они? Ты их видел где-нибудь? Нет. Потому-что даже если они и существовали когда-либо, то я увенер ни один автор не рискнул бы их показать сообществу, ибо уг. Хуже чем винда с антивирусом, проверяющим диск в фоне. Такие дела.

mi_estas
()
Ответ на: комментарий от Freiheits-Sender

В just for fun Линус писал, что, возможно, в развитии линукса наступет конец, когда какой-нибудь гик скажет: «Да ну нафиг!» и начнёт писать заново что-то своё. Вот только цитаты найти не могу.

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

Кстати у нас есть fuse. Чем не элементы микроядра? Да и всякие userspace nginx это в широком смысле конечно. Поэтому нет и не будет только монолитного ядра и сугубо микроядра...

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

Так что да - монолит излишняя сложность - бездарность.

Ой, вэй! Сколько популярных монолитных ядер вы написали? А видели? Я вот подозреваю, что в моей кофеварке за $14 линукс есть. Это будет хренадцатый девайс на линуксе в моём доме.

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

Не обманывайте себя. Вы и сами знаете, что это всё костыли, а не элементы гибридного ядра.

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

Хоть и канонично, но не то...

Как-то прямолинейно.

А здесь - прямо встаёт перед глазами картина:

«ваза с цветами» посреди комнаты

и

«горшок с гомном» в углу

Живописно! :)

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

>Видишь ли, мой юный друг, проблема совсем не в переключении контекста и не в ММЮ

рад бы быть юным, но уже не так.

Проблема в том, что выполнение системного вызова в монолите - это: 1) call; 2) какие-то там действия в ядре; 3) ret.

и прочий ваш блабла я поскипал. и так, в монолите вы за действие 2 хватаете 33 лока, которые успешно и весело блокируют другие процессы которые вошли в ядро (сделали syscall) и отыскать где что блокирует подчас очень сложно, а это уже проблема, в том же вашем лялихе - один процесс лихо может заблокировать либо fs либо блочное устройство - и это обычными действиями. Так что не надо тут мне про количество пунктиков раскрашивать. В микроядре - точно так же положил аргументы, заслал их куда надо (те сделал syscall) и пошел в сон, сервис выгреб твое сообщение, заммапил твое сообщение (если оно большое), проделал работу (только связанную с тем что он там делает), плюнул в память аргументы, да этим кусочком ответил процессу. Кто и когда словит сообщение, получит ответ пробудившись ото сна, или пробудится из сна с ошибкой какой - это все минималистичный шедулер микроядра решает, ну понятно что специфические сигналы ему посылаются теми или иными сервисами. В итоге имеем набор простых компонент, работающих автономно - поддерживать их просто и API не меняется, а то в ваших монолитах что то напишешь, потом поддерживай изза постоянной смены API, еще потом ищи на каком локе все стоит и так далее, так что, малыш - ты б это - не троллей местных читал, а глубже б вопрос изучил.

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

такая боооольшая помойка в которой все понапихано, одна подсистема что то делает в реализации другой и везде спагетти код, и API меняется - да это монолит. Конкретные задачи то ? Это тормозить, засыпать изза вообще левых процессов и обращений, сидеть на локах на SMP системах, когда можно уже на другом CPU выполнить - это да, конечно конкретные задачи, а в остальном да, как то оно еще умеет tcp/ip и эти ваши usb.

А когда говорим о микроядре, всегда подразумевается ipc + primitive sched (some rr) + primitive mm. Хитро, не так ли? А как же nonprimitive?

Мальчик, ты когда в школе будешь после каникул писать сочинение «как я провел лето», вспомни - микроядро само по себе без сервисов нафик никому не интерестно, тот же L4 круто да, вроде быстро, но как начнешь на него накидывать сервисы окажется гавном.

А как же tcp/ip? А как же доступ к файлам? Кто всё это будет решать? 1000 юзерспейсных програмок? Так где же они? Ты их видел где-нибудь? Нет.

Еще раз - это дело сервисов, глянь тот же qnx. И учись еще отвечать только за себя, я видел набор сервисов, и паровозики где в один сервис определенный набор функционала впихан и различные комбинации, и да - еще over 32 монолита тоже видел, в том числе и вашу горячо любимую помойку лялех, имел несчастье работать с ним, и приходится до сих пор.

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

ты это, повзрослей, поумней, а то излишняя самоуверенность плохо в взрослой жизни играет.

Хуже чем винда с антивирусом, проверяющим диск в фоне. Такие дела.

А ты видел антивирус то ? а винду ? внутрях то ? Да, ты не знаешь предмета, такие дела.

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

>Но вместо этого его толком никак не могут допилить.

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

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

>Ой, вэй! Сколько популярных монолитных ядер вы написали? А видели? Я вот подозреваю, что в моей кофеварке за $14 линукс есть. Это будет хренадцатый девайс на линуксе в моём доме.

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

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

>Почему? Все вокруг идиоты?

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

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

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

хахаха.

а в остальном да, как то оно еще умеет tcp/ip и эти ваши usb

вот сюда поставь любой io и окажется, что микроядро io то и не умеет. зачем оно тогда надо?

Мальчик, ты когда в школе будешь после каникул писать сочинение «как я провел лето», вспомни - микроядро само по себе без сервисов нафик никому не интерестно, тот же L4 круто да, вроде быстро, но как начнешь на него накидывать сервисы окажется гавном.

окажется говном.

собственно о чём и речь. а в остальном твой пост пис оф шлак, типа:

я видел набор сервисов

я за тебя рад

любимую помойку лялех

с чего ты взял, что она для меня любимая?

А ты видел антивирус то ? а винду ? внутрях то ? Да, ты не знаешь предмета, такие дела.

Да-да, продолжай, это поможет установить диагноз точнее. Мне пока что очевидно попбол была вызвана словом «малчик». Такие дела.

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

>вот сюда поставь любой io и окажется, что микроядро io то и не умеет. зачем оно тогда надо?

на то оно и микроядро, что умеет минимум, остальное io реализуется вне ядра - что собственно и полезно, или это не осознать.

собственно о чём и речь. а в остальном твой пост пис оф шлак, типа:

так а твой нет что ли? «не видел» «думаю что нет», я всего лишь в твоем стиле тебе же и ответил.

с чего ты взял, что она для меня любимая?

ага, то есть сказанное ты всегда прямо понимаешь, так и запишем.

Да-да, продолжай, это поможет установить диагноз точнее. Мне пока что очевидно попбол была вызвана словом «малчик». Такие дела.

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

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