Разве операционная система не может напрямую записывать данные на шину PCI, а сетевая карта просто отправляет их через кабель? Что делает драйвер и чем он отличается для каждого чипсета сетевой карты?
Разве операционная система не может напрямую записывать данные на шину PCI, а сетевая карта просто отправляет их через кабель? Что делает драйвер и чем он отличается для каждого чипсета сетевой карты?
Ответы:
Каждый сетевой чип будет иметь разные регистры ввода / вывода, буферы с отображением в памяти, способы определения скорости интерфейса и всевозможные другие фундаментальные технические различия.
Задача драйвера - просто абстрагировать эти различия, чтобы у O / S был общий API для перемещения пакетов с более высоких сетевых уровней на аппаратное обеспечение (и наоборот).
В общих чертах, любой драйвер устройства действует как интерфейс между «абстрактным» представлением аппаратного обеспечения операционной системы и «физическим» набором микросхем, который фактически существует на плате.
Этот уровень абстракции позволяет использовать разное оборудование разных производителей во многих разных операционных системах. Это также позволяет реализовывать «программные» устройства (такие как сетевое шлейфовое устройство), которые не имеют любой базовое оборудование для управления.
Чтобы точно узнать, что делает конкретный драйвер, вам необходимо понять таблицы данных для чипов, которыми он управляет.
Возможно, но проблема в том, что каждый производитель чипсета NIC проектирует свои устройства по-своему, и поэтому одна модель NIC может потребовать, чтобы вы писали по одному адресу, а другая модель может требовать, чтобы вы писали по другому адресу. В дополнение к обзору спецификаций наборов микросхем NIC, таких как @Roddy, предлагает узнать, как они работают, вы также можете взглянуть на источник драйверов Linux для этого набора микросхем.
Некоторые продвинутые NIC используют DMA и так далее, чтобы работать так, как вы говорите. Водитель в этом случае действительно ничего не делает.
Проще обновить одну операционную систему с новым драйвером, чем обойти и обновить каждую программу, которая использует NIC.
Каждый элемент оборудования отличается от других устройств того же класса, даже при соблюдении стандартов. Вот почему вам нужны водители; упростить использование аппаратного обеспечения путем предоставления общего интерфейса. Вы спросили, может ли ОС просто записать на выход. Да, оно может; он делает это через свои драйверы.
Если говорить более конкретно о сетевых картах, вы спрашиваете, может ли ОС записывать данные на шину PCI, через карту, через кабель и через Интернет. Проблема с этим вопросом в том, что вы не знакомы с сетью. Это сложная вещь, которая выходит за рамки простого направления напряжения по проводам. Вы забываете обо всей работе, которая позволяет такой сложной сети работать, как вся адресация и тому подобное - это не просто кодирование или декодирование электрического сигнала.
Вы хотите посмотреть на Модель OSI чтобы узнать, как работает сеть. Он разделяет работу по передаче данных между компьютерами (или другими устройствами) на семь «слоев». Каждый слой отвечает за свою часть; ОС играет свою роль, как драйвер и сама карта.