CPU如何从磁盘读取?

时间:2012-04-17 16:00:30

标签: linux architecture io cpu block

我对IO的整个想法有点困惑,我想知道CPU如何从磁盘读取(例如SATA磁盘)?

当带有read()/ write()的程序符合对特定文件的引用时,当CPU遇到此引用时,它是否直接从磁盘读取(通过内存映射的IO端口)?或者写入RAM然后写回磁盘?

2 个答案:

答案 0 :(得分:1)

  

主内存是处理器可以直接访问的唯一大型存储区域(数百万到数百万字节)。

"操作系统概念"说。

因此,如果您想运行程序或操作某些数据,它们(程序和数据)必须位于主存储器中。

答案 1 :(得分:0)

我建议阅读: http://www.makelinux.net/books/ulk3/understandlk-CHP-13-SECT-1 补充: http://en.wikipedia.org/wiki/Direct_memory_access

关于RAM中的缓冲:大多数编程语言和操作系统至少缓冲部分I / O操作(读写)到内存。这通常是异步完成的:即创建,填充和处理缓冲区。对于读取,CPU将(使用磁盘控制器)创建IO指令以获取数据和将其放入内存的位置,填充该空间,然后将其内容呈现给发出请求的程序。对于写入请求,这将是对写入操作及其相关数据进行排队,然后将它们发送到IO控制器并最终将磁盘执行。缓冲可能发生在多个地方:CPU的缓存,RAM,(有时)磁盘控制器或硬盘本身。完成了多少缓冲,以及我提到的抽象操作序列是如何处理的,取决于您的硬件架构,操作系统和任务。