DMA与io框架

DMA可以完成大量数据拷贝工作,是处理器的“益友”,在系统设计中不可或缺。

比如AD这个设备就奇慢无比,没有DMA,系统必将被它拖垮。

可以将DMA视为处理器的一个部分。或者说将其视为一个或多个(视其通道数决定)额外的“核”。

我现在觉得,整个的IO问题其实都被它解决了。

因为AD这样的设备就是最大的问题。与之相比,网卡、磁盘等块设备或所有其它所有的字符设备都已经没有问题。

通过DMA的应用,所有设备问题都可以用中断来解决。

中断最大的问题就是能否取到有意义的数据/信息,不做字节工人。

如果所有中断都是有意义的,那么就可以对所有的中断建议事件。这样就建立了系统的全语义环境。

有了这个全语义环境,系统可以跳过驱动层来建立它的计算环境。即:略过设备通信的细节,以建立直接设备对话的方式利用设备。跑腿的工作留给DMA做。

驱动,它作为一个中间层的本来目的就是,一向上提供硬件语义,二提供重用,三集中控制。

而重用与集中控制这两部分在很多环境其实是没有意义的。

硬件语义本质在中断方式下其实已经基本上扁平化。除非对于一些工具性的设备驱动。比如USB,这个需要建立两层驱动,不扁平,但是它可以通过使用通信的方式来解决而不是调用来解决,间接地同样可以达到扁平化的目的,同时还避过了特权级问题。

堆栈并不是永远的唯一方案。


转载于:https://my.oschina.net/digerl/blog/223097

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值