我对硬件不熟悉。我正在研究 x86 上的 IDE 磁盘 I/O 和 DMA。我想知道当使用 DMA 执行 IDE 磁盘 I/O 时,其他 CPU 是否可以访问内存(或者确切地说,与 DMA 相同的内存区域)?当然,我们假设操作系统非常愚蠢,它没有在软件中提供互斥锁。
我从 wiki 上了解到有三种操作模式,burst mode
和cycle stealing mode
。transparent mode
我了解到负责维护 的是硬件还是软件cache coherence
。
所以我想知道具体到 x86 上的 IDE 磁盘 I/O,当执行磁盘 DMA 时,其他 CPU 是否可以访问内存?例如,磁盘 DMA 想要将数据传输到内存区域 0x10~0x30(也就是说,在我看来,DMA 从 0x10 开始传输,当到达 0x30 时会引发中断)。如果现在DMA已经传输了0x10~0x20,那么在整个DMA完成之前,其他CPU可以修改0x10~0x20吗?
非常感谢!