问题标签 [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.
linux - 为什么数据和堆栈段是可执行的?
我刚刚注意到我的简单程序具有可执行的数据和堆栈段。我在 /proc/[pid]/maps 中看到了它,并且简单的代码确认了它。
例如:
然后
使 prog 执行 int3 指令。
用 C 编写并用 gcc 构建的程序的数据、堆栈和堆是不可执行的,那么为什么那些用汇编编写的程序的行为方式不同呢?
c - 如何模拟内存映射 I/O
我有一些我想模拟的硬件;我想知道我是否可以在这样的低水平上做到这一点。硬件有很多寄存器,我将它们安排在一个结构中:
所以,我想支持以下语法在 Windows 和 linux 上进行硬件访问:
当执行最后一行代码时,我希望硬件模拟器“唤醒”并做一些事情。我可以在 Windows 和/或 linux 上实现这个吗?我想过以某种方式捕捉“分段错误”信号,但不确定这是否可以在 Windows 上完成,或者根本不可以。
我查看了手册页mmap
;似乎它可以提供帮助,但我无法理解如何使用它。
当然,我可以通过定义类似的函数来抽象对硬件的访问WriteToMyDevice
,一切都会很容易(也许),但我想知道我是否可以以这种确切的方式安排对我的硬件的访问。
assembly - 映射内存和 SSE
我在英特尔开发人员手册中找到了这一段:
来自“使用 SSE3、SSSE3、SSE4 和 AESNI 编程”章节
流式加载不得用于引用映射到具有副作用的 I/O 设备的内存地址,或者当对这些设备的读取具有破坏性时。这是因为 MOVNTDQA 本质上是投机性的。
任何人都可以澄清这个问题吗?
我问是因为我正在考虑将一些 SSE 程序集应用于 OpenGL映射缓冲区对象,但我担心那个破坏性的词。这个主题是否适用于映射内存?实际上我不知道 glMapBuffer 调用的背后是什么。
我不认为我的图形卡会被破坏(:),但这个词肯定听起来不太好。
c++ - 使用 MapViewOfFile 有什么限制吗?
我正在尝试将内存映射文件用作:
一旦文件大小达到千兆字节,该MapViewOfFile
功能将停止工作,应用程序将崩溃!使用有什么限制MapViewOfFile
吗?有什么建议吗?
visual-c++ - 如何在文件上重复调用具有不同范围的 MapViewOfFile 以写入更大的缓冲区。?
我正在使用共享内存函数,将数据写入文件。问题:当我想使用以下函数将缓冲区写入 10MB 到文件时,我只能在第一次迭代中写入,第二次迭代我无法将缓冲区下一部分写入内存。如果有任何建议,请帮助我。或以下代码中的任何错误。我只能控制这部分。我无法控制具有 CreateFileMapping 的其他部分。
我需要在“dwFileOffsetLow”或“dwFileOffsetHigh”中更改的任何内容。从第二次迭代开始,“MapViewOfFile”返回 null。在某些地方我得到了输入,因为我需要重复调用 MapViewOfFile 不同的范围。但是怎么打电话,有帮助吗?之前问过这个问题。供参考!
WriteBuffer 函数我定义如下:
请建议我是否应该做任何更正。谢谢。
c++ - 什么是串行复制?为什么它是这样实施的?
什么是串行复制?深拷贝和浅拷贝有区别吗?
根据Duff 的 device下的 wiki 条目,它传统上实现为:
然后它记下,说
请注意,
to
它不会增加,因为 Duff 正在复制到单个内存映射输出寄存器。
我真的不明白这个注释。
如果to
指针不递增,那么循环的意义何在?为什么那么它被实现为:
我怀疑它与串行副本的定义有关。
我们如何分配内存以to
使循环有所作为?
linux - Linux 内核中的 copy_from_user 如何在内部工作?
该功能在内部究竟是如何工作的copy_from_user()
?考虑到内核确实有权访问用户内存空间这一事实,它是否使用任何缓冲区或是否完成了任何内存映射?
c++ - 使用带有 CreateFileMapping 和 MapViewofFile 的共享内存的问题
我有两个关于使用共享内存的问题。我正在使用 CreateFileMapping 在两个进程之间创建共享内存区域。
1) 我知道我需要在 CreateFileMapping 或 OpenFileMapping 调用返回的每个句柄上调用 CloseHandle 以释放内存。我的问题是,如果使用共享内存的程序在没有调用 CloseHandle 的情况下退出,所有句柄是否都会被适当地关闭并被 Windows XP/7 释放内存?IE - 在所有使用 mem 的进程都已关闭后,是否有可能发生 mem 泄漏?
2)我使用 MapViewofFile 来获取指向内存的指针。在一个实例中,我假设共享内存将始终存在于方法的上下文中。因此,我将 MapViewOfFile 的返回值保存为指针并关闭了 mem 的句柄,我只是使用指向共享 mem 的指针(但仍锁定对它的访问)。这是安全的,还是每次访问共享内存时都应该调用 MapViewOfFile ?
谢谢,
伊恩
gcc - 使用链接器映射的内存
如何强制链接器将我的一些变量放在内存中的特定位置。例如,我想在 0x8100000中分配整数名称。如果我没有错过,我可以使用:
然后在链接器脚本中:
我想使用类似的东西来映射一个 uC 端口。但是有些东西不匹配,我不知道我在哪里犯了错误。(我从来没有使用过链接器脚本,如果我写了一些非常愚蠢的东西,很抱歉)。
c#-4.0 - 关于 MemoryMappingFile 的问题
我正在尝试在两个进程之间进行通信。从 MSDN 文档中,我遇到了 MemoryMappingFile,我正在使用它进行通信。
谁能告诉我为什么这段代码不起作用。与磁盘文件一起使用时相同的代码可以工作。
在连续读取和写入数据时,数据似乎丢失了。我错过了什么吗?