内存映射文件可以有多大?

2024-03-22

什么限制了内存映射文件的大小?我知道它不能大于未分配地址空间的最大连续块,并且应该有足够的可用磁盘空间。但还有其他限制吗?


You're being too conservative: A memory-mapped file can be larger than the address space. The view of the memory-mapped file is limited by OS memory constraints, but that's only the part of the file you're looking at at one time. (And I guess technically you could map multiple views of discontinuous parts of the file at once, so aside from overhead and page length constraints, it's only the total # of bytes you're looking at that poses a limit. You could look at bytes [0 to 1024] and bytes [240 to 240 + 1024] with two separate views.)

在 MS Windows 中,查看文件映射视图 http://msdn.microsoft.com/en-us/library/aa366761(VS.85).aspx功能。它实际上采用 64 位文件偏移量和 32 位长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存映射文件可以有多大? 的相关文章

  • 如何获取大页面大小的值?

    我希望直接从我的 C 代码中获取大页面大小的值 而无需运行 bash 命令 从 bash 我可以做到这一点 grep pse proc cpuinfo gt dev null echo 2M huge page size are suppo
  • 我可以获得内存映射文件的路径吗? (.NET 4.0)

    我希望非 NET 应用程序访问内存映射文件 但该应用程序不知道内存映射文件的存在 所以我需要文件路径 有可能的 他们有一些样品here http msdn microsoft com en us library ms810613 aspx
  • C++ 关闭使用 mmap 读取的 open() 文件

    我正在使用 mmap 快速读取大文件 将我的脚本基于这个问题的答案 C 快速读取文本文件 https stackoverflow com questions 17925051 fast textfile reading in c 我正在使用
  • 内存映射文件长度

    我正在处理内存映射文件 有没有办法知道内存映射文件内容的长度 我想要的是附加现有的内存映射文件 在文件中附加字节很容易 但我希望附加字符串 我们可以检查 CAPACITY 属性 但它返回我认为的字节大小 为了更清楚地说明 我正在解释这个场景
  • 内存映射文件、托管映射文件和偏移指针

    我对 Boost 库 适用于 Windows 的术语有点困惑 我想做的很简单 在磁盘上创建一个文件 gt 50 GB 的大文件 分别为写入和读取操作进行一些映射 例如 首先映射 1 GB 部分用于写入 然后将其刷新到硬盘驱动器并获取新部分
  • 使用 mmap 重叠页面 (MAP_FIXED)

    由于一些与此问题无关的模糊原因 我需要诉诸使用 MAP FIXED 来获取靠近 libc 文本部分在内存中所在位置的页面 在阅读 mmap 2 之前 我应该首先完成 如果我使用 MAP FIXED 调用 mmap 且基地址与已映射的区域重叠
  • SIGBUS 同时从 mmap ed 缓冲区执行 memcpy,该缓冲区位于 RAM 中,由 mincore 识别

    我将块映射为 mapAddr mmap void 0 curMapSize PROT NONE MAP LOCKED MAP SHARED fd curMapOffset 如果这没有失败 mapAddr MAP FAILED 我查询 min
  • 使用编码打开内存映射文件

    内存映射文件 https docs python org 3 library mmap html module mmap是使用正则表达式或对大型二进制文件进行操作的有效方法 如果我有一个大文本文件 1GB 是否可以使用编码感知映射文件 正则
  • FILE_FLAG_DELETE_ON_CLOSE 和内存映射文件

    并不是说它特别有用 但我很好奇为什么下面的方法有效 仅仅是因为即使文件被删除后该页面仍然在内存中吗 在什么情况下 如果页面被换出 数据会丢失 include
  • 写入内存映射文件后,什么会更新 mtime?

    我在 Linux 上使用 XFS 并且有一个内存映射文件 每秒写入一次 我注意到文件 mtime 由watch ls full time 周期性但不规则地变化 mtimes之间的差距似乎在2到20秒之间 但并不一致 系统上几乎没有其他东西在
  • 如何从memfd_create获取内存地址?

    在我的应用程序中我需要共享内存 父母和孩子之间 使用fork execl 我用memfd create分配内存 因为它提供了 文件描述符 可以方便地在子进程中使用 进程 描述符通过dup2 before execl 附加到分配的内存 我不使
  • 将内存映射与服务一起使用

    我构建了一个也可以作为服务运行的应用程序 使用 service 转变 当我从命令提示符运行服务时 这可以完美地工作 没有任何问题 我设置了一些设置 可以让我在不作为真正的服务运行时从控制台调试它 但是 当我尝试将其作为真正的服务运行然后使用
  • 无法删除 MemoryMappedFile 的文件

    以下代码抛出此异常 该进程无法访问文件 filename 因为它正在被另一个进程使用 很公平 但是关闭阅读器和 或 mmf 以便删除文件的正确方法是什么 我认为 MemoryMappedFile 会有一个 close 方法或类似的方法 但事
  • 使用 mmap 访问 PCI-e 内存空间

    我在 Freescale MPC8308 处理器 基于 PowerPC 架构 上使用 PCI e 端口 在尝试使用它时遇到一些问题 端点 PCI e 设备的内存空间等于 256 MB 我可以使用 pciutils 包轻松读取和写入端点设备的
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • 第二次ftruncate失败

    我试图在首次成功执行 shm open 和 ftruncate 后超出共享内存对象 这是代码 char uuid GenerateUUID int fd shm open uuid O RDWR O CREAT O EXCL S IRUSR
  • Python ctypes from_buffer 使用上下文管理器映射到内存映射文件(mmap)

    我在用着ctypes from buffer 将 ctypes 结构映射到内存映射文件以执行某些任务 通常 这些文件包含结构化标头和二进制数据的串联 ctypes 结构允许稳定的二进制表示和对字段的简单 Python 访问 在这方面是真正的
  • 我应该如何以非 root 身份读取 Linux 上的 Intel PCI 非核心性能计数器?

    我想要一个库 允许对 Linux 可执行文件的关键部分进行 自我分析 就像人们可以使用一个部分计时一样获取当日时间 http linux die net man 2 gettimeofday or RDTSC http www strchr
  • 评估 gdb 中的变量/函数

    我有以下代码 char seg mmap 0 printf seg x n seg 该程序打印seg b7ffd000 而在 gdb 中 对于相同的执行 当使用p x seg 它打印 2 0x0 我在这里很困惑 这不是同一个var吗seg
  • mmap 和 gzip 可以协作吗?

    我试图弄清楚如何将 mmap 与 gzip 压缩文件一起使用 这可能吗 import mmap import os import gzip filename r C temp data gz file gzip open filename

随机推荐