我对IO的整个想法有点困惑,我想知道CPU如何从磁盘读取(例如SATA磁盘)?
当带有read()/ write()的程序符合对特定文件的引用时,当CPU遇到此引用时,它是否直接从磁盘读取(通过内存映射的IO端口)?或者写入RAM然后写回磁盘?
答案 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,(有时)磁盘控制器或硬盘本身。完成了多少缓冲,以及我提到的抽象操作序列是如何处理的,取决于您的硬件架构,操作系统和任务。