问题标签 [memory-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
88 浏览

python - Mem-map 在矩阵深处时会变慢

所以我有一个非常大的矩阵(120000 x 120000),我在整个矩阵上运行一个脚本,将一个元素与其他所有元素进行比较。因为我无法将整个内容保存在内存中,所以我使用 memmap。我还定期刷新矩阵,以确保如果计算机崩溃或发生什么我不会丢失所有数据。但是,我注意到我进入矩阵的“更深”,可以说,刷新数据所需的时间增加了。最终,保存我的结果最多需要五分钟。Woudl有人知道它为什么这样做吗?有没有更好的方法可以做到这一点?我会发布一些代码,但我相当肯定我没有做任何“错误”的事情。

0 投票
1 回答
535 浏览

c - 如何访问由C(Windows)中的父进程创建的内存映射文件

我创建了映射文件并从父进程的视图中读取。但是,我无法让子进程访问内存映射文件。你能检查下面的代码并帮我弄清楚吗?

这是我的子进程代码:

这是父代码:

0 投票
0 回答
1577 浏览

linux - 如何从内核访问用户空间缓冲区

我正在开发一个 linux 设备驱动程序,我需要了解如何访问用户分配的内存区域。详细来说,对于一个 32 字节的缓冲区,用户调用:

现在,在内核模块 ioctl 中,我需要 phys 地址将其传递给 pci 设备以进行 DMA 操作。我目前正在做的是(此示例仅适用于 1 页,以了解它是否正确):

代码工作正常,但我的问题是:

  • 谁在“固定”页面?或者我必须明确调用 SetPageReserved(pages_list[0])?
  • 当我完成使用缓冲区时,它如何用于发布?pci_unmap 仅此而已?即使我调用了 SetPageReserved?
  • 一般来说,在用户空间地址上调用 virt_to_phys 是否安全(如果页面被固定)?(或 virt_to_bus 在 DMA 的情况下)
  • 这是访问用户空间缓冲区的“最佳实践”吗?
0 投票
1 回答
10064 浏览

memory - 谁在启动期间加载 BIOS 和内存映射

对于 BIOS,维基百科指出:

BIOS 内存的地址位于计算机首次启动时将执行的位置。然后跳转指令指示处理器开始执行 BIOS 中的代码。

我知道 BIOS 存在于非易失性存储器中。但它必须加载到 RAM 中才能执行。那么谁将 BIOS 加载到 RAM 中呢?

我还读到在启动时加载了内存映射。BIOS 是否加载此内存映射?存储在哪里?

0 投票
1 回答
1511 浏览

linux - 为什么 proc/ID/maps 有多个共享库条目

我正在查看嵌入式 Linux 下的 proc/ID/maps,我注意到一些共享库在进程的内存映射中出现了几次,为什么会这样?

0 投票
1 回答
3583 浏览

windows - 将物理内存地址映射到 Windows 中的用户空间应用程序

是否可以将物理内存地址映射到 Windows 用户空间应用程序虚拟地址以进行读/写?

编辑:我有一个实时操作系统与 Windows 并行运行的系统。客户操作系统(RTOS)能够通过将物理地址映射到其虚拟内存空间来读取/写入内存映射的 PCIe 从属外围设备。

我想做的是能够从 Windows 用户空间应用程序直接与 PCIe 从设备通信,但这需要我将该物理内存地址映射到用户空间虚拟内存空间。

提前致谢。

0 投票
3 回答
4682 浏览

c++ - C++结构序列化

我正在实现一个数据缓冲区,它从一个应用程序接收带有过程调用的音频数据包(没有网络协议,只有两个应用程序在同一台机器上运行),并将其放入 Struct 并写入映射文件。

所以编写器应用程序可能会调用我的应用程序的程序,这将是void writeData (DataItem data, Timestamp ts)每秒大约 15 次,每个数据项大小为 2MB。

我的应用程序应将数据存储到类似的结构中

并将其写入文件以供将来阅读。

因此,由于很难将结构按原样保存到文件中,因此我认为(?)我需要将其编写为二进制文件。所以我不确定我是否需要使用任何类型的序列化boost serialization

而且我不知道如何为内存映射文件对齐这些数据,以及如何重新构造数据以从文件中读取。

我在互联网上搜索,但找不到太多代码示例。示例代码将非常受欢迎。

顺便说一句,我使用的是嵌入式 Windows 7 x64 和 Visual Studio 2008。

谢谢...

0 投票
1 回答
397 浏览

java - 如何为嵌入式 neo4j 2.0.1 配置内存映射设置?

Neo4j 手册将属性称为:

我猜这些映射到以下 Java API:

有人可以确认吗?

0 投票
0 回答
124 浏览

java - 如何将堆转储的本机内存使用统计信息映射到 JVM 内存映射图

我有以下信息:


本机内存使用


类型、使用的内存(字节)、对象计数


ByteCode, 3015540, 28000
Const Pool, 1978128, 3412
UTF8 Strings, 6089367, 89281
UTF16 Strings, 1934, 8
Offscreen Images, 0, 0
Static Data, 52624, 1393 Bitmaps
, 0, 0
CWT, 288172, 579
VTables2964,
CVTables, 469712, 3629
ITables, 273504, 2814
Class Meta, 59484, 2835
GCTables, 64940, 2052
GCStaticTables, 31864, 1372
Method Blocks, 1575440, 3392 (num methods : 32821)
Field Blocks, 345888 CV
VM 块数据 TYPE_MMPOINTER, 0, 0
VM 块数据 TYPE_OBJECTREF, 12292, 1
VM 块数据 TYPE_PURGEPROCPTR, 0, 0
VM 块数据 TYPE_FORWARDREF, 0, 0
VM 块数据 TYPE_MONITORCACHE, 6422724, 49
VM 块数据 TYPE_PROFTHREADINFO, 0, 0
VM 块数据 TYPE_CODEFIXUP, 0, 0
VM 块数据 TYPE_WIDGET, 8196, 1
VM 块数据 TYPE_MEMTRACKER, 0, 0
VM 块数据 TYPE_GRAPHICSCONTEXT, 0, 0
VM 哈希, 17432, 2
生成代码, 0, 0
JAR 文件名表, 4424, 7
JAR 文件表, 6720, 7
未指定, 3201427, 9318


但我想知道如何将其映射到 JVM 内存映射,以便更清楚地理解这一点。

我在互联网上进行了搜索,但无法找到与其中所有内容相似的正确地图。

欢迎所有指针。

0 投票
0 回答
1015 浏览

linux - ARM系统内存映射

我正在通过 ARM 信息中心了解 ARM 架构的系统内存映射。
在下面的链接中,他们说 ARM 内存映射是固定的,外部 RAM 映射到
0x60000000 - 0x9FFFFFFF。
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0179b/CHDDBAEC.html

而在此链接中,他们说 RAM 可以通过 AHB 解码器重新映射到任何位置。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0226a/ch04s03s02.html

这些内存映射是否相同,请解释差异。