磁盘控制器信号处理器如何完成读/写请求

时间:2011-03-01 05:12:59

标签: input operating-system io interrupt

假设一个进程被请求读取一个块到内核并且OS通过直接映射内存向磁盘发出请求(不确定这是否正确),最终由磁盘控制器读取并完成读取请求,如何磁盘信号读取请求的处理器完成了吗?它是否使用相同的直接映射内存? (在这种情况下,不需要轮询,效率低下?)。

3 个答案:

答案 0 :(得分:3)

在非常高的级别,磁盘IO在磁盘控制器和DMA(直接内存访问)控制器之间异步处理。数据传输完成后,会产生一个中断信号,表示操作已完成。

答案 1 :(得分:2)

在x86上,您的代码会显示正确的答案。内存映射I / O意味着对物理内存中某些位置的写入会被重定向到磁盘的控制寄存器中。当读取就绪时,第一个字被写入数据寄存器,一旦硬件中断通知,OS就可以通过相同的方法访问该数据寄存器。然后,OS将一次读取一个读取的字,将其写入任何需要它的最终缓冲区。在汇编级别,这看起来就像是一系列内存到内存的移动操作,北桥透明地处理内存映射的细节。

在DMA的情况下,南桥(我认为)上有一个DMA控制器作为中介。 CPU中的OS对DMA控制器进行编程以进行必要的读取,包括在主存储器中为其提供实际缓冲区(即,不将存储器映射到设备控制器中)。然后,DMA控制器进行逐字复制,并在所有数据复制到主存储器后仅抛出磁盘中断。

答案 2 :(得分:0)

控制器通常会触发一个中断来指示操作已完成。特别是在现代计算机和磁盘控制器中,它们使用DMA将数据传输到RAM然后触发中断,使CPU几乎不需要做。