【发布时间】:2020-11-24 22:05:44
【问题描述】:
当文件在 C++ 中打开并开始读取时,整个文件是从硬盘加载到 RAM 还是一个块一个块地加载?
【问题讨论】:
-
文件可以大于你的内存,你仍然可以正常读取。所以它必须分开加载。
-
开始阅读disk buffer 和page cache。
标签: c++ file hard-drive
当文件在 C++ 中打开并开始读取时,整个文件是从硬盘加载到 RAM 还是一个块一个块地加载?
【问题讨论】:
标签: c++ file hard-drive
您决定将多少数据读入 RAM。当您执行“getline”或将数量读入缓冲区时,您正在将其从磁盘移动到 RAM。如果文件格式是“可流式”的,您可以一次处理文件的小块,并且仍然可以执行整个操作。您需要在大部分文件中读取某些文件格式才能执行操作,这可能由于多种原因而成为问题。
如果一个文件必须在处理开始之前完全加载,你不能在获得前几个字节后立即开始工作。这是一个完全顺序的操作,比同时处理和加载要慢。
正如您提到的,RAM 比磁盘小,但即使文件可以放入 RAM,计算机现在也经常执行多任务。有 1 个进程需要 4 GB 的 RAM,而相同的操作可以用几 KB 完成可能会导致机器上的其他进程出现问题。
【讨论】: