Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mmap 内存映射和文件I/O_Mmap - Fatal编程技术网

Mmap 内存映射和文件I/O

Mmap 内存映射和文件I/O,mmap,Mmap,如果我在1GB机器中映射了一个10GB大小的文件,并且在确保请求的数据不在物理内存中后触发了文件i/o,那么获取的数据是否会映射到mmap中相应的虚拟地址 当我使用mmap访问同一个位置时,它会再次执行i/o(还是会使用使用文件i/o获取的数据) 提前感谢, Gokul.它取决于平台,但一般来说,它将被视为其他内存(不使用时调出,需要时调入),除了它不是使用普通的交换文件/分区,而是从磁盘上的原始文件交换 什么操作系统?什么硬件?什么语言平台?我实际上在寻找一种通用解决方案,它可以在Window

如果我在1GB机器中映射了一个10GB大小的文件,并且在确保请求的数据不在物理内存中后触发了文件i/o,那么获取的数据是否会映射到mmap中相应的虚拟地址

当我使用mmap访问同一个位置时,它会再次执行i/o(还是会使用使用文件i/o获取的数据)

提前感谢,


Gokul.

它取决于平台,但一般来说,它将被视为其他内存(不使用时调出,需要时调入),除了它不是使用普通的交换文件/分区,而是从磁盘上的原始文件交换

什么操作系统?什么硬件?什么语言平台?我实际上在寻找一种通用解决方案,它可以在Windows、Linux和Open Solaris中工作。假设我使用文件I/o读取文件的一部分,我可以将该内存分配到mmap中的一个地址范围内吗?不,你不使用文件I/o-你要对文件进行mmap,然后像访问内存一样访问它。确定。谢谢实际上,我打算将异步I/o与mmap结合起来,但似乎不可能。@Gokul-内存映射IO本质上是一种同步操作。当线程到达需要从磁盘加载的页面时,这是因为CPU在尝试访问某些内存时出现了页面错误。在检索该页面或IO以错误结束之前,线程无法执行任何其他操作。这不像是一个异步操作,您可以从中返回,以后再返回-线程隐式地需要该数据才能继续。@Gokul-通常是的,因为现在页面将被缓存;假设您不执行无缓冲IO,并且操作系统实现了统一的缓冲缓存(大多数情况下是这样)。为了完成同样的任务并节省读取缓冲区,您还可以让另一个线程提前读取每个页面的第一个字节,并首先导致页面错误。