我知道磁盘控制器包含一个缓冲区,但我想知道CPU是否直接从该缓冲区读取数据,还是必须先将数据移至内存中的特定位置然后允许其自身读取由CPU?
有谁知道缓冲区被称为什么?DMA如何适合所有这些?
我知道磁盘控制器包含一个缓冲区,但我想知道CPU是否直接从该缓冲区读取数据,还是必须先将数据移至内存中的特定位置然后允许其自身读取由CPU?
有谁知道缓冲区被称为什么?DMA如何适合所有这些?
Answers:
对于磁盘读取,数据流本质上是:
写入磁盘的方法类似,除了将数据从PC传输到磁盘控制器,计算ECC,找到请求的扇区,然后将数据从扇区缓冲区写入磁盘。
额外的信用:
阅读“ 散布式 ”传输,该传输使用DMA链接以及存储地址和缓冲区长度的散布式列表。代替一个大的连续内存缓冲区,“分散-聚集”传输允许为磁盘I / O请求聚合使用非连续内存缓冲区。
它进入内核已分配磁盘驱动程序的特定内存区域。我认为它不是专门命名的。该存储区通常配置为环形缓冲区。根据操作系统的不同,可能会第二次将此内存复制到用户空间中以供应用程序使用。
DMA是“直接内存访问”,这意味着硬盘驱动器的控制器可以直接写入到RAM中,而无需CPU的反复询问,如果更多数据(称为轮询-事物的方式用来做)。取而代之的是,当整个缓冲区传输完毕后,控制器便会中断CPU,使其知道现在有可用数据。
如果您对更低的级别感到好奇,则驱动程序会进行ioctl调用。