一次 read 的四层
运行下面这段程序,填写它打印出来的结果。 LAYERS = ["用户程序", "内核", "驱动", "设备"] pri
阅读更多 →
系统调用为什么贵
一次系统调用比一次普通函数调用贵得多,主要因为【0】。
阅读更多 →
一次 read 大致经过哪几层
程序调一次 read,大致要经过【0】。
阅读更多 →
为什么程序不能直接操作设备
用户程序不能直接往设备寄存器里写命令,因为【0】。
阅读更多 →
⚠️ DMA 也要占总线
DMA 搬运时会占用内存总线,CPU 访存要多等。算出「不考虑总线争用 / 考虑之后」两种口径的总拍数。
阅读更多 →
算一算 CPU 被解放了多少
用中断方式搬 100 字节 vs 用 DMA,算出「CPU 参与次数 / 解放了多少倍」。
阅读更多 →
一次 DMA 传输的四步
把 DMA 传输的四步走一遍:设参数 / 启动 / 搬运 / 完成中断,返回「步数 / 搬了几个 / CPU 参与了几步」。
阅读更多 →
自己写:DMA 传输的账
给字节数,算出「中断方式 / DMA 方式 / 谁更快」。
阅读更多 →
DMA 从几个字节起划算
运行下面这段程序,填写它打印出来的结果。 DEV = 1000 IRQ = 50 def by_poll(n): return n * DEV def by_irq(n): ret
阅读更多 →
DMA 什么时候不划算
数据量很小时,DMA 反而比中断慢。因为【0】。
阅读更多 →