#memory-mapping #memory-map #memory #mapping #mmap #physical-memory #virtual-alloc

mmap-rs-with-map-from-existing

支持从原始内存创建页面的mmap-rs的临时分支。将在不久的将来被弃用。

1个不稳定版本

0.6.0 2023年11月24日

#647内存管理

38 每月下载量
reloaded-memory-buffers 中使用

Apache-2.0 OR MIT

120KB
2.5K SLoC

mmap-rs

CI Crates.io Docs

一个跨平台的、安全的Rust API,用于创建和管理调用进程虚拟地址空间中的内存映射。此crate可用于创建文件映射和匿名映射。此外,此crate在提供这些功能的平台上支持使用大页面、锁定物理内存等特性。此外,此crate允许您枚举进程的内存映射。

支持的平台

一级(CI中构建和测试运行)

  • x86_64-pc-windows-msvc
  • x86_64-unknown-linux-gnu
  • i686-unknown-linux-gnu
  • aarch64-unknown-linux-gnu
  • armv7a-unknown-linux-gnueabihf
  • x86_64-apple-darwin
  • x86_64-unknown-freebsd

二级(CI中运行构建)

  • i686-pc-windows-msvc
  • aarch64-pc-windows-msvc
  • aarch64-linux-android
  • armv7-linux-androideabi
  • x86_64-linux-android
  • i686-linux-android
  • aarch64-apple-ios

三级(没有CI,但应该可以工作)

  • aarch64-apple-darwin
  • x86_64-apple-ios
  • i686-unknown-freebsd

特性

  • 匿名内存映射。
  • 基于文件的内存映射(unsafe - 详细内容请参阅文档)。
  • 写时复制与共享内存映射。
  • 不可访问的内存映射(使用 PROT_NONEPAGE_NOACCESS)。
  • 只读内存映射。
  • 读写内存映射。
  • 可执行内存映射。
  • 用于JIT的RWX内存映射(unsafe - 详细内容请参阅文档)。
  • 可移植指令缓存刷新。
  • 同步和异步刷新。
  • 支持锁定物理内存。
  • 大页面支持。
  • 堆栈支持(在Unix上称为 MAP_STACK)。
  • 支持从核心转储中排除内存映射(仅限Unix)。
  • 预留内存映射,而不是直接提交。
  • 拆分和合并内存映射。
  • 查询当前/给定进程的内存区域(对于给定的地址或地址范围)。

依赖关系

~3–40MB
~623K SLoC