CPU如何从磁盘读取数据?

问题描述 投票:4回答:2

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

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

linux architecture io cpu block
2个回答
1
投票

我建议阅读: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
投票

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

“操作系统概念”。

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

© www.soinside.com 2019 - 2024. All rights reserved.