Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
чтобы переписать Linux с нуля, требуется работа 200 программистов в течение полугода и обойдётся это в $268 млн (при средней зарплате программиста)
«нет смысла рассматривать закрытые драйвера»?! Что прикажете делать разработчикам уникального железа?Давайте не будем рассказывать сказок. Для уникального железа вполне можно писать драйвера и включать их в ядро (там есть поддержка экспериментальных систем SGI, которых и 100 штук выпущено не было, к примеру).
Стоимость разработки совего видочипа огромна, а вот скопировать архитектуру можно очень быстро.Восстановление чипа по драйверу — бред. Заметьте что Intel и AMD (выпускающие вполне конкурентоспособные железки, особенно последняя) этого не боятся и понятно даже почему не боятся: новое железо на этот рынок выходит раз в год-полтора, а для того чтобы вопроизвести железяку нужно года два-три. В своё время на этом советский союз погорел со своими знаменитыми шлифовальными станками.
А во-вторых на уровне исходников совместимость всё равно очень и очень слабая.Совместимость на уровне исходников замечательная: много вы можете назвать драйверов, которые бы были выкинуты из ядра и перестали работать? Если они не включены в официальное ядро — вы сами себе злобный вредитель.
Это я к тому, что берём любой более-менее сложный драйвер и видим целый зоопарк.Это вы о каком драйвере? Когда он был включён в ядро? Иногда экспериментальные драйвера включаются до того, как код будет почищен в достаточной мере, но это редкость. Обычно со временем это исправляется.
Я же не говорю, что Линукс невозможно использовать, я имею смелость утверждать, что ядро линукса начинает отставать от современных требований.И какие же это требования, извините? Можете привести пример ядра, которое удолетворяет им лучше?
Linux 64 имеет полную бинарную соместимость с 32-ой верснией?Абсолютной совместимости нет ни в Windows, ни в Linux, но да, совместимость неплохая, старые игрушки ходят «на ура».
Дравера/модули ядра 32-бита грузить можно? (На случай, если драйвер 64-бита ещё не вышел).Что значит «не вышел»? Их все портировали вместе с остальным ядром. Если что-то не компируется/не работает — сообщите разработчикам, они подобные вещи быстро фиксят.
К 64-битному линуксу есть полное описание всех системых функций?А в Windows есть? Не подскажите где написано как отличить раскладку Дворака от обычной QWERTY используя функцию GetKeyboardLayout (или любую другую)?
А теперь посмотрите, как обстоит дело с бинарной совместимостью драйверов у семейства WindowsОтвратительно. При переходе с Windows2000 на WindowsXP у меня перестал работать USB'шный IrDA адаптер. На сайте производителя нифига не было, пришлось разыскивать японские драйвера для какой-то другой железяки, править .inf файл… бррр. Linux опознал железяку сразу же.
И как эти дравйвера пишутся.Как только не пишутся. Что ни драйвер — то «шедевр». Даже если они WHQL-сертифицированные.
Да, там своих граблей полный огрод, но ядро NT, есть мнение, одной из самые перспектиынх и мощных ядер.Угу. И именно поэтому железа оно поддерживает меньше, чем Linux, ресурсов ему требуется раза в два больше, а простые операции (скажем создание нити) занимают куда больше времени чем в Linux. Ну и кому эта «мощща» нужна?
Куда заведёт Vista не понятно, но Linux'у имело смысл взять лучшее от NT, а не упорно совершать те же ошибки, что Микрософт.Не очень понятно как можно «взять всё лучшее», если этого лицензия не позволяет. А ошибок Microsoft'овских они не повторяют. Ну по крайней мере стараются не повторять. Самая главная ошибка Microsoft: попытка создать и поддерживать внутриядерный API. Не работает это. Появляются всё новые и новые «модели драйверов», а поддержка старых глючит со вренемем всё больше и больше, так что драйвера даже от Windows2000 к WindowXP не всегда подходят, а исправить их Microsoft не может, так как у него исходников нет.
Не вышел значит не вышел. Не все драйвера включены в ядро.А почему нет?
Есть масса железа, дравйвера которого поставляет производитель.И кто в этом виноват?
Про железо — не правда. Вы хотите скахть, что любое купленное мною китайское барахло, вроде графического планшета или сканера заработает с Linux? :)«Любое китайское барахло» может и с Windows не заработать. Старое — не заведётся под Vista, новое — под XP. В совокупности Linux поддерживает железа строго больше, чем любая одиночная версия Windows.
Про нити — не надо путать хрен с морковкой — нити линукса и потоки windows это соврешенно разные вещи.О как. И как же мне сделать простую, обычную нить в Windows, которую можно было бы сравнить с Linux'овой?
Моща нужна тем, кто активно использует и/или проивзодит нестандартное железо, например.Вот как раз среди них Linux почему-то более популярен чем Windows.
Скажите, а вот если я делаю свою уникальное железо — мне тоже драйвера в ядро включать? А если я этого железа два десятка делаю? А если я не хочу код раскрывать?Да ради бога — возьмите одну конкретную версию ядра, напишите под неё драйвер и используйте. Зачем вам в этом случае поддержка всего зоопарка (Ubuntu, Fedora, etc)?
Давайте посмотрим сколько веб камер или USB-сетевый карт или WiFi-адаптеров из всеобщего зоопарка заработают под Linux?Давайте. И сравним это это с тем, что переварит Vista. Только чур: железо возьмём, ну, скажем, 2003 года выпуска. То что разработчики железа выпускают драйвера под Windows, но не под Linux вряд ли можно отнести к достоинствам собственно самой операционки. Под что хотят — под то и выпускают. А вот как эти драйвера работают по прошествии некоторого времени — тут от операционки таки многое зависит…
Включать драйвера в ядро — вообще дурная идея, желаза слишком много и они слишком активно меняется.А зачем они меняются? Чем отличаются бесчисленные китайские поделки сделанные на одном чипсете? По-моему эта проблема высосана из пальца: разных несовместимых железок неоправданно много потому, что Windows разрешает производителям там себя везти. Отчего, в конечном итоге, страдают рядовые покупатели. Когда производитель вместо поддержки, ну скажем, второго сервис-пака для Windows XP предлагает купить у него новую железку (пример, опять-таки, из личного опыта — как раз со специализированным железом).
Лично персонально мне кажется, что для линукса нужно было бы заморозить ядро, определиться в каком направлении будет идти развитие, определить интерфейсы, которые будут поддерживаться и не будут меняться и максимально документировать то, что есть.Эту технологию пробовала куча фирм: Microsoft, Sun, Apple. Не работает. Либо глючит, либо не работает вообще.
А если штат всего десять человек из которых только три программиста?И вот эти три программиста освоили те самые «три с половиной модели драйверов», написали драйвера, протестировали их с десятком конфигураций Windows (Windows XP SP2/3;Windows Vista SP1/2; Windows 2003, Windows 2008 — всё это 32bit/64bit) плюс ещё разные Hotfix'ы? Вы сами в это верите? Вы в любом случае сделаете поддержку только пары самых распространённых конфигураций — и не более того. Но в Linux у вас есть шанс: если ваш драйвер включат в ядро, то дальше уже сами пользователи и разработчики ядра будут разбираться с возникающими в нём проблемами. А вот как раз в Windows — да, вам придётся либо «до гроба» заниматься его поддержкой, либо заявить что-нибудь типа «мы поддерживаем только Windows XP и Windows XP SP1» — что явно не порадует пользователей…
И как можно под линукс создать аналог потока Windows? :)А зачем?
Не процесс, не нить, а имено поток в пределах процесса? У них разные модели многопоточности.Ещё раз: какую задачу вы хотите решить? Можно подумать вы этого не читали. Какую цель я преследую создавая новый поток в Linux я понимаю: я хочу обработать, скажем, запрос от пользователя. Получаю запрос, запускаю отдельный процесс (в отдельном потоке, то есть, возможно, на другом ядре или процессоре), готов принимать следующий запрос. Распространённая архитектура. Работает и в Linux и в Windows, но в Windows — хуже ибо создание потоков там дороже, чем создание процесса в Linux, а отсутствие поддержки COW затрюдняет высвобождение ресурсов после окончания работы вспомогательного потока. А зачем вам «аналог потока Windows»? Какую высокоуровневую задачу вы можете решать с его помощью?
Вот Вы когда-нибдь под Windows писали?Да, имел несчастье. Правда с Vista дело не имел и, надеюсь, уже не буду.
Ниодну из написанных по WIndows программ в нашей компании не пришлось даже перекомпилировать за восемь лет. Под Линукс регулярно приходится править и пересобирать код, т. к. после очередного обновления системы выясняется что-то то не работает.И о чём это говорит? О том, что вы не можете выбрать стабильный дистрибутив и пытаетесь использовать какую-нибудь Fedora не по назначению?
Нужно очень сильно постараться и очень не внимательно читать MSDN чтобы написать программу работающую ТОЛЬКО под SP1.Поищите в Google Pinnacle Dv500 и SP2 — увидите кучу страдальцев, которые с этим маются. Есть неофициальные патчи, сделанные добрыми инженерами и выложенные на форуме. Найти их не так-то просто, а официальная позиция Pinnacle: мы поддерживаем только Windows XP SP1, хотите работать с более новыми версиями — покупайте другую железку. Вроде как не самая «китайская» фирма.
Мне кажется, что Вы либо, не работали и не писали под Windows, либо сознательно искажается факты.А мне кажется что вы выставляете критерием совершенства системы её похожесть на Windows.
Повторяю — наша конторая производит некую железку — нам что теперь, требовать включения наших драйверов в ядро?Ну типа того.
А железку у нас меняется раз в пол года — рынок знаете ли — заказчики требуют.То есть вы каждые полгода создаёте новую железку с нуля, драйвера к которой нужно тоже писать с нуля? Слабо верится, честное слово.
Вот мы напсиали свой некий софт под Linux. Большой и сложный.Это у вас три человека на фирме написали некий «большой и сложный софт под Linux»?
Проходит год — в ядре и системе обнаружен некотрое кол-во уязвимостей и нужно обновляться. Обновляемся. Всё перестаёт работать. Т. к. изменилось ядро, изменились версии билиотек. Не обновляться? А как же безопасность?Вы уверены что вы использовали адекватную версию Linux? Ядро 2.4.9, glibc 2.2.4. Проблемы возникают не чаще, чем при установке сервис-пака на Windows. Если же вы сами выбрали версию Linux, которая не гаратнирует стабильности — то кто ж вам виноват?
Повторяю кроме чипсета есть множетсво устройств — от USB-камер и WiFi до промшленного железа. Все они сделаны на своих собственных чипах. Предалагете зконодательно запретить делать несовместимое железо? :) Откуда будет брать новое?Я не предлагаю ничего запрещать. Я просто хочу сказать что изменения интерфейсов с железом — это зачастую попытка разработчиков переложить свои проблемы на плечи разработчиков OS. Сейчас железо, в большинстве случаев, это всё равно процессор со своим firmware (ARM или MIPS — неважно). Кто мешает вам сделать стабильный API? И почему вы считаете что кто-то, кто в глаза не видел ни вашей железки ни ваших насосов справится с этим лучше???
Т. е. за последние 10+ лет мы имеем только один порог не соместимости?За последние 10 лет мы имеем, по большому счёту, одну новую OS. Но да, вы правы — предметов несовместимости гораздо больше: я видел и железо работавшее с Windows2000, но не с Windows XP и железо не поддерживающее Windows XP SP2 (как бы вам не хотелось выдать желаемое за действительное).
Я же Вам говорю — возбмите любой компьютерный магазин и посмотрите, что будет работь под Линуск, а что — нет. 30% не заработает. Под Windows получаем 100% заработает.Без драйверов от производителя? Хорошо если 10% заработает. А если с драйверами — то при чём тут «техническое совершенство» и «перспективность»? Это от работы маркетологов зависит, не от программистов.
Ядро Linux перевалило за 10 млн строк