В чем разница в драйверах Linux, OS X и Windows?

Объясните пожалуйста, разницу между драйверами в этих системах, и что есть драйвер в каждой из них?

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

В Linux и OS X, как то все по другому. В большинстве своем устройства умеют из коробки. Я читал, что драйвера "вшиты в ядро", но не могу понять, что это значит?

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

Почему принята такая политика, вшивать все в ядро, и тащить кучу возможно не нужных драйверов, если ПК часто имеет строгий набор комплектующих/переферии, которые не так часто меняются?

Если в винде драйвер это инсталлятор, то что есть драйвер в Linux и OS X?

Почему к примеру такие устройства, как 3g модем, на винде для введения команд, требует установки драйверов и установки отдельной программы hyperterminal, тогда как на OS X, есть просто устройство в /dev/tty.3gModem , к которому можно подключиться по screen безо всяких драйверов?
  • Вопрос задан
  • 4183 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
"драйвер это чаще всего графический инсталлятор"
"Если в винде драйвер это инсталлятор, то что есть драйвер в Linux и OS X?"

Не приравнивайте инсталлятор драйвера и сам драйвер. Драйвер в винде может предствлять собой один .inf файл, и не иметь никакого инсталлятора.

У вас вообще сильно перепутано что такое драйвер и в качестве отличия драйверов между системами вы видите только способ установки, но всем системам нужны драйвера.

Вам нужно просто понять принципы дистрибьюции софта в разных ОС.
В Линукс принято пользоваться репозиториями, и редко качать что-то с сайта (обычно если качать, то там исходники, которые нужно еще и собирать)

В Mac производитель железа и ОС один и тот же, поэтому идет с ОС, но для некоторых устройств - также на диске или с сайта, но так как производитель один, несложно организовать автоматическое скачивание, и даже сторонняя периферия сертифицируется в Apple, что упрощает автоматизацию.

С виндой идет множество вшитых драйверов, которые не требуют от вас никаких действий, чтобы работать. Чем старше винда, тем больше девайсов, которые определятся сами.
Но множество девайсов выпускаются без особого взаимодействия с MS, просто пользуясь их рекомендациями, WHQL драйвера считаются стабильными, но любой может написать драйвер к своему устройству, выложить на своем сайте, и понятно что MS про это может и не знать.

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

Если взять видеокарту, которая поддерживает DirectX12, то в Линуксе его (DirectX) вообще нет, и Линукс не сможет пользоваться всеми фичами, предоставляемыми карточкой, вот и ответ почему Линукс работает со многими устройствами стандартными драйверами, а Windows требует индивидуальный.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@spotifi
Ну во первых есть хитрые драйвера NDIS которые обладают совместимостью.... точнее они настолько не глубоко завязаны в операционную систему, что являются переносимыми.

А вообще - все дело в оптимизации, в поиске "лучшего пути" и т.п.

Поэтому все программы (а драйвера являются программами) или вообще не совместимы или очень ограниченно совместимы с различными операционными системами.

В каждой операционной системе свои правила, которыми должна руководствоваться программа (в т.ч. и драйвер), чтобы работать в этой операционной системе. Обычное название этих правил API или ABI.

UPD:

В Linux и OS X, как то все по другому. В большинстве своем устройства умеют из коробки. Я читал, что драйвера "вшиты в ядро", но не могу понять, что это значит?

Т.н. монолитная архитектура vs микроядерная.

Есть еще и хитрые комбинации - прочитайте про ядро Mach например.

Или про то как устроены драйвера в FreeBSD - одни и те же драйвера в FreeBSD могут как встраиваться в ядро FreeBSD (как в Linux), так и существовать как отдельные модуля (как в Windows).

UPD:
Разница в архитектуре операционных систем и, следовательно, во внутреннем устройстве драйверов настолько велика, что даже имея доступ к исходным текстам, перенести драйвера из Linux в FreeBSD, к примеру - это много работы, много усилий. Скажем драйвера от последнего GPU i3/i5/i5 переносили пару-тройку лет.
Ответ написан
Комментировать
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Почему так получается, что линукс с кучей вшитых драйверов, занимает меньше места чем свежеустановленная винда?


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

если ПК часто имеет строгий набор комплектующих/переферии, которые не так часто меняются?

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

Если в винде драйвер это инсталлятор, то что есть драйвер в Linux и OS X?

инсталлятор != драйвер

Почему к примеру такие устройства, как 3g модем, на винде для введения команд, требует установки драйверов и установки отдельной программы hyperterminal, тогда как на OS X, есть просто устройство в /dev/tty.3gModem , к которому можно подключиться по screen безо всяких драйверов?

Может потому что в винде в принципе консоли можно сказать нет, когда как линуксах это есть одна большая консоль.
Я уже не говорю о том зачем вообще может понадобиться лезть в консоль 3г модема обычному пользователю.
Ответ написан
Комментировать
@generalx
Системный администратор
тут мы все поняли?
Ответ написан
Комментировать
ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer
Просто венда это венда. у венды своё ядро со своими приколами. А unix-подобные операционные системы работают с железом на более низком уровне, нежели венда. Одна только файловая система ext и ntfs - небо и земля. в юниксах есть консольные проги, редакторы - модули ядра, которые применяют для всех железок один и тот же универсальный скрипт, канающий не для kingston или silicon power, а для контроллеров USB, микросхем, хранящих данные и их шин.

Для наглядности рассмотрим модуль mount - скрипт привязки флэшек, разных носителей к системе - в определённую заданную по ядру директорию. В некоторых сборках mount исполняется по дефу, в каких-то ручками надо. Когда ты вводишь sudo mount с аргументами (девайс и директория привязки), ядро событийно воспринимает эту команду, его код исполняет функцию mount( сюда накидываются аргументы ), и исполняет инструкции по выводу данных отсюда туда...

А почему легче - в венде куча всякого г***на по умолчанию с графикой. в линуксе большинство прог, например аналоги вендовской панели управления - консольные. Без графической оболочки. Например top, kill +имя процесса, создание архивов командой tar. А графическая составляющая обычно весит больше самой логики раз в десять если не все сто. В лине намного меньше графических оболочек модулей. В венде 1% веса дистрибутива - логика, остальное графика. В лине процентов 8-16, предполагаю. Зависит от дистрибутива.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы