为了对n个设备使用总线的请求进行裁决_深入理解linux内核 —— I/O设备连接

为了确保计算机能够正常工作,必须提供数据通路,让信息在连接到个人计算机的CPU、RAM和I/O设备之间流动。

所有的计算机都拥有一条系统总线,它连接大部分内部硬件设备。任何I/O设备有且仅能连接一条总线。

CPU和I/O设备之间的数据通路通常称为I/O总线。每个I/O设备依次连接到I/O总线上,这种连接使用了包含3个元素的硬件组织层次:I/O端口、接口和设备控制器

ac560a7f0b1d9f05a2e46ca34526bea3.png

每个连接到I/O总线上的设备都有自己的I/O地址集,通常称为I/O端口。在执行一条指令时,cpu使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传递数据。

I/O端口还可以被映射到物理地址空间。因此,处理器和I/O设备之间的通信就可以使用对内存直接进行操作的汇编语言指令。

d7254838380a863fe481d86cd00b59cc.png

I/O接口是处理一组I/O端口和对应的设备控制器之间的一种硬件电路。它起翻译器的作用,即把I/O端口中值转换成设备所需要的命令和数据。

在相反的方向上,它检测设备状态的变化,并对起状态寄存器作用的I/O端口进行相应的更新。还可以通过一条IRP线把这种电路连接到可编程中断控制器上,以使它代表相应的设备发出中断请求。

1c71013b2447ed09f953d9e99e41624d.png

复杂的设备可能需要一个设备控制器(device controller)来驱动。从本质来说,控制器起两个重要作用:

对从I/O接口接收到的高级命令进行解释,并通过向设备发送适当的电信号序列强制设备执行特定的操作;

对从设备接收到的电信号进行转换和适当地解释,并修改(通过I/O接口)状态寄存器的值。

典型的设备控制器是磁盘控制器,它从微处理器(通过I/O接口)接收诸如“写这个数据”之类的高级命令,并将其转换成诸如“把磁头定位在正确的磁道上”和“把数据写入这个磁道”之类的低级磁盘操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值