Linux控制器(Controller)与适配器(Adapter)

来源:互联网 发布:知乐全集 百度云 编辑:程序博客网 时间:2024/06/15 04:58

CPU实现IO操作时,通过控制总线和数据总线向用户发送数据和指令,当然这些逻辑指令对于磁盘,USB来说,就好比蝌蚪文一样傻傻看不清楚,就好比你在一个只懂说法语的人面前说了一口流利的英语,他当然不会明白你说的是什么,自然不会按照你说的去做;因此,

来自CPU的逻辑指令就需要一个设备来将其转换为对应设备自身可以识别和执行的控制信号,这就需要控制器/适配器和驱动程序的配合。

 

控制器(Controller):集成在CPU主板上并可以将CPU发来的逻辑指令通过特定协议转换为设备可以识别的控制信号;

适配器(Adapter):独立的外部设备,可以实现和控制器一样的功能,如网卡等;

协议:为了能使交互双方可以识别彼此信号,我们指定一种规则/标准,这种规则/标准可以用来规定数据/指令各个字段的意义以及代表的操作。

 


如上图所示,CPU向磁盘发起IO操作指令,该指令首先通过控制器将该指令转换为特定的指令格式,该指令格式分为不同的数据段,分别指出了该指令的类别,要执行的操作,以及要操作的数据的起始地址等;

磁盘上的控制芯片类似于小型的CPU,它内嵌了驱动程序,这些驱动程序并非硬件,而是可以读取磁盘数据的软件,驱动程序的作用就是识别逻辑指令并执行相应操作,驱动磁盘完成的IO操作过程;

转换后的指令传到控制芯片上时,控制芯片上的控制器会解读这段数据,并根据指令的要求,结合驱动程序,对磁盘上的数据进行读写操作。

驱动程序一般有硬件厂商来提供,针对特定的硬件,而平常我们所看到的的公版驱动,虽然适用性更广一些,但是性能一般不比前者。

 

一般情况下,对于磁盘来说,控制数据/指令转换的机制都是靠控制器来实现的;

但是对于网卡,USB等设备来说,则是靠适配器来实现的。


0 0
原创粉丝点击