I/O 体系结构

与外设的通信常称之为输入输出。在实现外设的I/O时,内核必须处理3个可能出现的问题。

  • 必须根据具体的设备类型和模型,使用各种方法对其进行寻址。
  • 内核必须向用户应用程序和系统工具提供访问各种设备的方法。
  • 保证应用程序能够在不考虑特定硬件方法的情况下进行互操作。

简单理解就是,驱动时接口的具体实现,应用程序只需关心接口方法的使用,对不同的接口有不同的实现。

总线系统

总线负责设备与CPU之间以及各个设备之间的通信。

  • PCI(Peripheral Component Interconnect): 许多体系接口上适用的主要总线系统。支持热拔插,使得设备可以在系统运行时炼乳或断开,传输速度快,吞吐量高。
  • ISA(Industrial Standard Architecture): 一种古老的总线,至今应用广泛。
  • SBus: 由SUN公司设计的非私有的开放总线。
  • IEEE1394: 有的厂商称之为FireWire或LLink。具有热插拔能力、非常高的传输速率。时高端笔记本电脑上流行的一种外部总线。
  • USB: 一种运用非常广泛的外部总线,有很高的市场接受度。支持热拔插以及自动检测新硬件的能力。但速度只是中等水平。
  • SCSI(Small Computer System Interface): 被称为船业人员的总线,其外设成本很高,支持非常大的数据吞吐量,主要用在服务器系统上寻址硬盘。
  • 并口与串口(Oarallel and Serial Interface): 结构简单,但速率极低,用于外部链接,非常古老,适用于对性能没有过高要求的设备。

交互方式

  • I/O端口
    内核发送数据给I/O控制器,数据的目标设备通过唯一的端口号表示,数据被传输到设备进行处理。处理器管理了一个独立的虚拟地址空间,用于管理所有的I/O地址。
  • I/O内存映射
    处理器提供了对I/O端口进行内存映射的选项,将特定外设的端口地址映射到普通内存种,可以像处理器普通内存那样操作外设。
  • 轮询和中断
    轮询:重复的询问设备数据是否可用,如果可用就取回。缺点是比较浪费资源,为检查湾社的状态需要花费大量运行时间,会影响重要的任务执行。

中断:中断是更好的方案,每个CPU都提供了中断线,可由各个系统设备共享。每个中断通过唯一的号码标示。

  • 通过总线控制设备
    不同的总线类型称作系统和扩展总线。对内核来说,硬件实现方面的差别并不重要。

inode设备文件

每个文件都恰好关联一个inode,用于管理文件的属性。

PCI总线

PCI系统的布局

  • 总线编号:编号从0开始,最多255个。
  • 插槽编号:总线内部的唯一标识编号。一个总线最多能附接32个设备,不同总线上的插槽编号可以相同。
  • 功能编号:在一个扩展卡上,实现多个扩展设备的设备。一个设备上功能编号最大为8.

地址空间

I/O 空间通过32个比特位描述,提供了最大4GB空间。

Last modification:August 7, 2022
If you think my article is useful to you, please feel free to appreciate