2012-04-17 102 views
4

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

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

回答

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中,(有时)在磁盘控制器上,或在硬盘本身上。完成多少缓冲,以及我提到的操作的抽象顺序如何处理,取决于您的硬件体系结构,操作系统和任务。

1

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

“操作系统概念”说。

所以,如果你想运行一个程序或操纵一些数据,他们(程序和数据)必须在主内存中。