为什么数据段和堆栈段是可执行的?
我刚刚注意到我的简单程序的数据和堆栈段是可执行的。 我在 /proc/[pid]/maps 中看到它,并且简单的代码证实了这一点。 例如: ; prog.asm section .d…
Windows 和 Windows 上的内存页写入检测Linux
我目前正在研究一种分代垃圾收集器。这意味着只有最近的对象才会被遍历,幸存的对象(=从已知根可到达)被提升到老一代。当对象指向同一代或老一代的…
“现场 C”存在于内存映射文件中的对象”?
因此,我在 Gamasutra 中阅读了 John Carmack 的采访,其中他谈到了他所说的“存在于内存映射文件中的活动 C++ 对象”。以下是一些引述: JC:是的。…
如何将结构体导出到文件,然后对文件进行内存映射?
我有一个结构,我想导出到一个文件,然后 mmap() 该文件。一个问题是该结构有一个字符串成员变量,我不确定 mmap 将如何处理它。在这种情况下,所有这…
打印共享内存的物理地址空间
在 C 程序中,我有两个程序,一个程序将字符串存储在共享内存中,另一个程序是通过访问共享内存来打印相同的字符串。 program 1-> printf("\n SENDER …
vxWorks 6.8 将物理内存映射到虚拟内存
这是我的第一个问题:)。 我一直在尝试将物理内存映射到 vxWorks 6.8 中的虚拟内存,但没有成功, 我正在尝试使用“vmMap”函数,但不知何故它一直返回…
Python C 模块中的映射 - 有什么需要注意的陷阱吗?
我正在用 C 语言编写一个 Python 模块,并且打算映射较大的内存块(也许 500 MB)。在与 Python 解释器相同的进程空间中工作时,有什么我应该注意的吗…
哪些真实平台将硬件端口映射到内存地址?
我有时会看到这样的语句:在某些平台上,以下 C 或 C++ 代码: int* ptr; *ptr = 0; 如果 ptr 恰好存储了该端口映射到的地址,则可能会导致写入硬件输…
为什么升级到 Centos 5.5 后 MAP_GROWSDOWN 会导致 SIGBUS 错误?
我正在将我们的其中一个版本的操作系统从 Centos 5.3 32 位升级到 Centos 5.5 32 位。完成软件包更新后,我重新启动,检查了源代码的干净副本,构建并…
“---p”是什么意思? /proc/self/maps 中的权限意味着什么?
我理解 rwxps 位的含义。 r-xp 代表 .text。 rw-p 用于.data/.bss/heap/stack。仅仅 ---p 页面有什么用? 例如,请参阅 cat /proc/self/maps 的输出 0…
为什么 16 位地址和 12 位偏移量会产生 4KB 页面大小?
我正在读《现代操作系统》这本书。我对“页面大小”感到困惑。 作者在书中说道, 传入的16位虚拟地址是 分成4位页码和 12 位偏移量。 4位为 页码,我…
控制 C 中内存映射寄存器的读写访问宽度
我正在使用基于 x86 的核心来操作 32 位内存映射寄存器。仅当 CPU 对此寄存器生成 32 位宽读取和写入时,我的硬件才能正确运行。该寄存器在 32 位地址…
如何在 Linux/HPUX 上获取内核的内存映射 (pmap)
在Solaris 上,我可以在核心文件上运行pmap 命令来获取崩溃进程的内存映射。不幸的是,HPUX 和 Linux 上可用的 pmap 命令不提供此选项。有什么指示我…
- 共 1 页
- 1