我对 IO 的整个概念有点困惑;我想知道 CPU 如何从磁盘(例如 SATA 磁盘)读取数据?
当具有 read()/write() 的程序符合对特定文件的引用并且 CPU 遇到此引用时,它是否直接从磁盘读取(通过内存映射的 IO 端口)?还是先写入 RAM,然后再写入磁盘?
我对 IO 的整个概念有点困惑;我想知道 CPU 如何从磁盘(例如 SATA 磁盘)读取数据?
当具有 read()/write() 的程序符合对特定文件的引用并且 CPU 遇到此引用时,它是否直接从磁盘读取(通过内存映射的 IO 端口)?还是先写入 RAM,然后再写入磁盘?
我建议阅读: 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、(有时)磁盘控制器或硬盘本身。做了多少缓冲,以及我的抽象操作序列到底如何
主存是处理器可以直接访问的唯一大型存储区域(数百万到数十亿字节)。
《操作系统概念》说。
所以如果你想运行一个程序或操作一些数据,它们(程序和数据)必须在主存中。