网卡驱动程序起什么作用?

网卡驱动程序起什么作用?

操作系统不能直接将数据写入 PCI 总线,而网卡只需通过电缆发送数据吗?驱动程序的作用是什么?每个网卡芯片组的作用有何不同?

答案1

每个网络芯片都有不同的 I/O 寄存器、内存映射缓冲区、检测接口速度的方式以及各种其他基本技术差异。

驱动程序的工作只是抽象出这些差异,以便操作系统有一个通用的 API,用于将数据包从较高的网络层移动到硬件(反之亦然)。

答案2

一般来说,任何设备驱动程序都充当操作系统硬件的“抽象”视图与主板上实际存在的“物理”芯片组之间的接口。

该抽象层允许不同供应商的不同硬件在许多不同的操作系统中使用。它还允许实现不需要任何控制底层硬件。

要准确了解特定驱动程序的功能,您需要了解其控制的芯片的数据表。

答案3

可以,但问题是每个 NIC 芯片组制造商的设备设计都不同,因此一种型号的 NIC 可能要求您在一个地址写入,而另一种型号的 NIC 可能要求您在另一个地址写入。除了查看 NIC 芯片组数据表(如 @Roddy 建议的那样)以了解他们具体如何操作之外,您还可以查看该芯片组的 Linux 驱动程序的源代码。

一些高级 NIC 使用 DMA 等方式来按照您所说的方式运行。在这种情况下,驱动程序实际上并没有做太多事情。

使用新的驱动程序更新单个操作系统比更新每个使用 NIC 的程序更容易。

答案4

即使遵守标准,每件硬件都与同类的其他硬件不同。这就是为什么您需要驱动程序;通过提供通用接口来简化硬件的使用。您问操作系统是否可以简单地写入输出。是的,它可以;它通过其驱动程序来实现这一点。

更具体地说,关于网卡,你会问操作系统是否可以通过卡、电缆和互联网写入 PCI 总线。这个问题的问题是,你不熟悉网络。它是一件复杂的事情,不仅仅是通过电线发送电压。你忘记了让如此复杂的网络工作的所有工作,比如所有的寻址等等——它不仅仅是对电信号进行编码或解码。

您将需要查看OSI 模型了解网络的工作原理。它将计算机(或其他设备)之间的数据传输工作分为七个“层”。每个层负责自己的部分;操作系统、驱动程序和卡本身也发挥着自己的作用。

相关内容