О шароваре и десктопном Линуксе
Sep. 17th, 2009 01:46 pmВнезапно всплывший перевод интервью двухлетней давности с кернел-разработчиком, который пытался улучшить поведение декстопного Линукса, но не мог толком эти улучшения продемонстрировать, вызвал очередные дискуссии про перспективы Линукса на десктопе.
Да нет у него никаких перспектив.
Основная его проблема - мало нужного, качественного и удобного софта. И главная ее причина, на мой взгляд, - отсутствие бинарной совместимости. Когда есть куча плохо совместимых дистрибутивов, в них куча несовместимых версий, единственный более-менее работающий способ распространения софта - в исходниках, со сборкой на месте. Кому это подходит?
Сильно дорогой софт может себе позволить распространяться в исходниках или поставляться сразу с настроенной системой и даже аппаратурой. Но среднему юзеру на десктопе он не по карману, да и не нужен вобщем-то - нет у него ни терабайтных баз, ни тысячи процессоров, для которых такой софт делается.
Бесплатный софт может поставляться в исходниках, но он пишется либо гиками для себя, либо большими корпорациями для продажи чего-то другого (оборудования, например), поэтому никогда его авторы не будут делать его настолько простым и удобным в использовании, чтобы им могли пользоваться рядовые хоум-юзеры, не гики.
Типичные слова линуксоеда: "Если бы люди умели пользоваться vim, grep, sed, awk, то миллионы программных продуктов так никогда и не были бы созданы (C) кто-то умный". В том-то и беда. Именно так теряется 95% аудитории - основная масса юзеров не будет тратить по полгода на изучение этих ваших vim, grep, sed, awk, perl и bash. Им нужна программа с красивым окошком и кнопкой "сделать п%$дато", а не набирать в консоли "ps aux | grep dmz | awk '{ print $3, " ", $2 }' | sort | tail -n 5 | awk '{ print $2 }' | xargs kill -9". Нужен простой и удобный в использовании софт, решающий конкретные задачи рядовых и не очень пользователей. Такие программы будут только там, где будут коммерческие разработчики, которые смогут их продавать за доступные хоум-юзерам деньги. А для такого софта дистрибуция в исходниках никак не годится.
Вот есть, например, Маки. Там дистрибуция и установка программ в бинарной форме была отточена отлично, оттого куча удобного, приятного и радующего пользователей софта, за который те с радостью платят деньги. Есть винда, где я компилю в Win7 бинарник с минимумом зависимостей, и он прекрасно работает и в Висте, и в ХР, и даже в Win98. В нем я могу реализовать какую-то пусть не идеальную, но работающую защиту от взлома, и спокойно его продавать. А вот понадобилось мне недавно простейшую консольную прогу запустить на хостинге с этим вашим линупсом, так нет - нужного компилятора там не стоит и прав нет поставить, просто собранный бинарник не работает из-за другой версии GLIBC, а статически собранный - не работает, потому что ядро, дескать, слишком старое, хотя и там и там 2.6.чего-то. При таком подходе я буду продолжать делать шаровары для винды и мака, а линуксоеды пусть дальше довольствуются своими поделками.
Да нет у него никаких перспектив.
Основная его проблема - мало нужного, качественного и удобного софта. И главная ее причина, на мой взгляд, - отсутствие бинарной совместимости. Когда есть куча плохо совместимых дистрибутивов, в них куча несовместимых версий, единственный более-менее работающий способ распространения софта - в исходниках, со сборкой на месте. Кому это подходит?
Сильно дорогой софт может себе позволить распространяться в исходниках или поставляться сразу с настроенной системой и даже аппаратурой. Но среднему юзеру на десктопе он не по карману, да и не нужен вобщем-то - нет у него ни терабайтных баз, ни тысячи процессоров, для которых такой софт делается.
Бесплатный софт может поставляться в исходниках, но он пишется либо гиками для себя, либо большими корпорациями для продажи чего-то другого (оборудования, например), поэтому никогда его авторы не будут делать его настолько простым и удобным в использовании, чтобы им могли пользоваться рядовые хоум-юзеры, не гики.
Типичные слова линуксоеда: "Если бы люди умели пользоваться vim, grep, sed, awk, то миллионы программных продуктов так никогда и не были бы созданы (C) кто-то умный". В том-то и беда. Именно так теряется 95% аудитории - основная масса юзеров не будет тратить по полгода на изучение этих ваших vim, grep, sed, awk, perl и bash. Им нужна программа с красивым окошком и кнопкой "сделать п%$дато", а не набирать в консоли "ps aux | grep dmz | awk '{ print $3, " ", $2 }' | sort | tail -n 5 | awk '{ print $2 }' | xargs kill -9". Нужен простой и удобный в использовании софт, решающий конкретные задачи рядовых и не очень пользователей. Такие программы будут только там, где будут коммерческие разработчики, которые смогут их продавать за доступные хоум-юзерам деньги. А для такого софта дистрибуция в исходниках никак не годится.
Вот есть, например, Маки. Там дистрибуция и установка программ в бинарной форме была отточена отлично, оттого куча удобного, приятного и радующего пользователей софта, за который те с радостью платят деньги. Есть винда, где я компилю в Win7 бинарник с минимумом зависимостей, и он прекрасно работает и в Висте, и в ХР, и даже в Win98. В нем я могу реализовать какую-то пусть не идеальную, но работающую защиту от взлома, и спокойно его продавать. А вот понадобилось мне недавно простейшую консольную прогу запустить на хостинге с этим вашим линупсом, так нет - нужного компилятора там не стоит и прав нет поставить, просто собранный бинарник не работает из-за другой версии GLIBC, а статически собранный - не работает, потому что ядро, дескать, слишком старое, хотя и там и там 2.6.чего-то. При таком подходе я буду продолжать делать шаровары для винды и мака, а линуксоеды пусть дальше довольствуются своими поделками.
Re: подсказка
Date: 2009-09-18 03:39 pm (UTC)Где бы про это почитать? Если Вы настолько хорошо понимаете, о чём говорите, как Вам кажется, то микроядро получается тупиковой веткой - оно появилось позже виртуальных машин. И технически реализуется, кмк, сложнее.
насколько я знаю, в MacOS X большинство частей операционной систсемы сделано не внешними процессами, а прямо в компилено в ядро
Что Вы называете "частями операционной системы"?
говорят, что архитектура Mach устарела, и что L4Ka, например, работает быстрее
Наверняка устарела. Прикиньте, сколько ей уже лет. Но я вот так вот сходу не сумею назвать _совсем_не_устаревшую_ архитектуру, которая используется в серьёзных масштабах. А если мы уж говорим о лунксе и виндах....
L4Ka
А что это?
При этом падает MacOS X чаще Linux
ЩИТО?
Re: подсказка
Date: 2009-09-18 04:29 pm (UTC)Конкретных ссылок дать не могу.
Микроядрам десятки дет. Виртуальным машинам в ядре от силы — 10. Виртуальные машины в ядре стали возможны сравнительно недавно, когда на компьютеры стали ставить быстрые процессоры и много памяти.
Я думаю, что качественно сделанные виртуальные машины сложнее, чем качественно сделанные микроядра.
Что Вы называете "частями операционной системы"?
Например, драйвер файловой системы, сетевой стек.
L4Ka
А что это?
http://lmgtfy.com/?q=l4ka
падает MacOS X чаще Linux
Программы, которые я пишу, работали на десятках серверов. Не припомню, чтобы линукс падал (хотя это, конечно, возможно). Мой домашний ноутбук с линуксом вообще не перезагружался уже полгода, наверное.
Kernel panic на MacOS X я видел на всех трёх имеющихся у меня в наличии ноутбуках Apple/MacOS X, разных моделей.
Это при том, что MacOS X работает только на проверенном железе, сделанном по заказу Apple, а Linux работает на чём угодно.
Re: подсказка
Date: 2009-09-18 04:41 pm (UTC)Чем виртуальная_машина_в_ядре отличается от виртуальной_машины_вне_ядра? Не понимаю.
Я думаю, что качественно сделанные виртуальные машины сложнее, чем качественно сделанные микроядра.
Возможно. Я просто навскидку прикинул, как выглядит тупейшее микроядро и тупейшая виртуальная машина. Ясно, что от реальности это далеко.
Kernel panic на MacOS X я видел на всех трёх имеющихся у меня в наличии ноутбуках Apple/MacOS X, разных моделей.
У меня ровно обратный опыт. Видел панику под линуксом и под BSD. Под макосью - ни разу. Под линуксом, если очень постараюсь, даже могу изобразить сценарий воспроизводимого бага (не уверен, что именно паники, всё-таки, редко вижу линукс).
А, нуиещё, мои программы на серверах работают нормально. Обычно всё крошится на десктопе. Просто потому, что на сервера, как правило, не тащат всякого малонужного барахла.
L4Ka
А что это?
http://lmgtfy.com/?q=l4ka
И что это? Там не написано. Есть ссылки "скачать" и "читать документацию".
Re: подсказка
Date: 2009-09-18 05:03 pm (UTC)Ничем. Но виртуальная машина в ядре обязательно должна выдавать максимальную производительность, иначе операционная система будет медленно работать. Виртуальной машине вне ядра можно тормозить (как, например, тормозила JVM 10 лет назад), потому что большая часть работы выполняется не кодом виртуальной машины.
И что это?
Это архитектура (и реализация) микроядра.
Re: подсказка
Date: 2009-09-20 07:07 am (UTC)Это архитектура (и реализация) микроядра.
Так ведь этих реализаций сколько угодно. Уверен, что есть и лучше. По скорости переключения контекста http://odin-os.sf.net уделывает всех, ну и где операционки, сделанные на ней?
Re: подсказка
Date: 2009-09-20 11:17 am (UTC)Это заблуждение. Например, компиляцию можно сделать один раз при старте программы, и дальше программа будет работать ровно так же, как обычная программа.
уделывает всех, ну и где операционки, сделанные на ней
Качественного микроядра недостаточно для того, чтобы все резко начали пользоваться операционной системой, и вы это, наверное, понимаете. Тогда неясно, в чём вопрос.
Re: подсказка
Date: 2009-09-20 12:15 pm (UTC)И это: 1) даст одноразовый оверхед на компиляцию, 2) неясно, почему считается виртуализацией. Вот под линуксом заметная часть софта компилируется один раз при установке программы и
1) неужели Вы ни разу не встречали недовольных этим, которые требуют дистрибуцию в бинарной форме?
2) неужели это можно назвать виртуализацией?
Re: подсказка
Date: 2009-09-20 12:46 pm (UTC)При старте программы или операционной системы всегда есть оверхед — на подгрузку файла с диска, инициализацию внутренних структур. Да, первичная компиляция даст чуть больший оверхед, но это не так страшно, т. к.
1) результаты компиляции можно кешировать
2) возможен JIT, который может дать большую производительность, чем в случае статически-скомпилированной программы
почему считается виртуализацией
Потому что при таком подходе нельзя написать драйвер файловой системы, который поломает что-нибудь в сетевой подсистеме.
Re: подсказка
Date: 2009-09-20 01:09 pm (UTC)Поясните, почему. Желательно, на примере файловой системы NFS.
Re: подсказка
Date: 2009-09-20 02:48 pm (UTC)Когда ВМ компилирует программы из своего специального байткода в машинный код, все обращения к методам превращаются в переходы по определённым адресам. Это будут не произвольные адреса, а только те, которые указывают на безопасные, разрешённые методы, причём она же гарантирует правильную семантику вызова — на стек будет класться ровно то, что ожидает реализация метода. Обращение к полям объектов будет скомпилировано в обращение к конкретным адресам, которые окажуется данными полей объектов. Есть некоторая проблема с удалением объектов, но эта проблема решается, и garbage collector — лишь одно из решений.
Re: подсказка
Date: 2009-09-20 03:43 pm (UTC)Re: подсказка
Date: 2009-09-20 03:51 pm (UTC)void f(int); Obj* obj = new Obj(); union { Obj* o; int i; }; o = obj; f(i);Re: подсказка
Date: 2009-09-20 04:05 pm (UTC)Re: подсказка
Date: 2009-09-20 04:11 pm (UTC)Точнее, наоборот:
void f(Obj*); int it = 4; union { Obj* o; int i; }; i = it; f(o);В метод f будет передан некорректный указатель.
Re: подсказка
Date: 2009-09-20 05:08 pm (UTC)Re: подсказка
Date: 2009-09-20 05:19 pm (UTC)Происходит только обращение к правильным методам, но система ломается.
Виртуальная машина при том, что она такие конструкции запрещает в рантайме.
Re: подсказка
Date: 2009-09-20 05:46 pm (UTC)2. Что-то мне подсказывает, что запретить класть инт в указатель или вылазить за границу массива в рантайме можно только путём хранения типа (что у нас там указатель, а не инт) или размера. Это не си, а другой язык программирования.
Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:неясно
From:Re: неясно
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
From:Re: подсказка
Date: 2009-09-20 03:52 pm (UTC)Re: подсказка
Date: 2009-09-20 12:18 pm (UTC)Вопрос в том, что призвано доказать Ваше утверждение "Mach устарел, L4Ka лучше". Да, лучше. А другое ядро - ещё лучше. Ичё?
Re: подсказка
Date: 2009-09-20 12:49 pm (UTC)Re: подсказка
Date: 2009-09-20 01:01 pm (UTC)Re: подсказка
Date: 2009-09-20 01:35 pm (UTC)случаи всякие бывают ;)
Date: 2009-09-20 01:45 pm (UTC)Хорошо, когда можно померить и привести чиселку, а когда вместо чиселки "совокупность" - трудно. Вон в статье по ссылке аффтар пытался "торможение компа" тестами замерить, получилось не очень. Я тоже не умею.
Re: случаи всякие бывают ;)
Date: 2009-09-20 02:35 pm (UTC)Какие это задачи? Насколько я понимаю, это только случаи, когда под Windows есть очень специфичное ПО.
BSD на сервере
BSD на сервере уже не жжёт.
Re: случаи всякие бывают ;)
Date: 2009-09-20 03:41 pm (UTC)Да. Его не так уж мало.
BSD на сервере уже не жжёт.
Интересый критерий. :)