问题标签 [virtual-memory]

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 回答
1486 浏览

linux - 为什么内存映射区域在 Linux 中会变小

考虑到这一点 ,因为这个区域像动态加载的库一样映射文件,我觉得理想情况下它应该长大。这可以通过启动 RLIMIT_STACK 和堆开始之间的 mmap 区域来实现。在这种情况下会出现什么问题。

如果它长大了,那么如何创建一个新的内存映射区域。假设我们希望将 abc.so 的代码映射到虚拟地址空间中,那么我们必须在向下方向创建 sizeof(abc.so) 空间,并从该区域的底部开始映射文件。这是它的工作原理吗?

0 投票
3 回答
1034 浏览

linux - 是把整个进程的虚拟地址空间分割成页吗

注意:我正在尝试研究虚拟内存分配的高级概述

是否将整个进程的虚拟地址空间拆分为特定大小的页面:

这是否还包括堆空间和堆栈 - 或者这总是不可分页的?

0 投票
1 回答
2248 浏览

compilation - 什么是 RVA 和 VA?

请解释一下RVA和VA是什么意思

0 投票
2 回答
2128 浏览

memory-management - “32 位操作系统”、“32 位处理器”:这些术语究竟是什么意思?

“32位操作系统”、“32位处理器”的确切含义是什么?

  • 它会影响地址总线的大小吗?
  • 它会影响可以生成的虚拟地址的数量吗?
  • 它将如何影响寄存器大小意味着寄存器大小?
  • 它对虚拟内存/内存管理有什么影响

我是这方面的初学者;如果你有的话,请给我一些合适的文档。

谢谢。

0 投票
5 回答
23802 浏览

security - 如何访问其他进程的内存?

我认为一个进程无法读取其他进程的内存。但是我很震惊地看到一个名为“ WinHex ”的应用程序具有“RAM 编辑器”并且能够访问整个内存。在所有的过程中。

这怎么可能?它甚至可以修改其他进程的内存。这不会变得恶意吗?

0 投票
2 回答
2390 浏览

linux - 基于Linux将进程内存从RAM交换到交换文件的确切条件是什么?

我的服务器为交换文件配置了 8Gigs 的 RAM 和 8Gigs。我正在运行内存密集型应用程序。这些应用程序具有峰值负载,在此期间我们发现交换使用量增加。大约使用了 1 GIG 的交换。

我有另一台服务器,它具有 4G 的 RAM 和 8G 的交换空间,以及在其上运行的类似内存密集型应用程序。但是这里的交换使用是非常微不足道的。大约 100 MB。

我想知道基于哪个 Linux 将 RAM 中的进程内存换出到交换文件的确切条件或粗略公式是什么。我知道它基于交换因素。它还有什么依据?交换文件大小?任何指向解释这一点的 Linux 内核文档/源代码的指针都会很棒。

0 投票
1 回答
60005 浏览

memory-management - 顺序写入和随机写入的区别

在以下情况下,顺序写入和随机写入有什么区别:- 1)基于磁盘的系统 2)基于 SSD [闪存设备] 的系统

当应用程序写入某些内容并且需要在磁盘上修改信息/数据时,我们如何知道它是顺序写入还是随机写入。到目前为止,写入无法区分为“顺序”或“随机” .写入只是缓冲,然后在我们刷新缓冲区时应用到磁盘。

如果我错了,请纠正我。

0 投票
5 回答
463 浏览

.net - 用于确定 VM 碎片的 .NET API

是否有用于获取有关 VM 使用的详细信息的 .NET API?我对确定我的地址空间的碎片化程度特别感兴趣。

谢谢!

0 投票
1 回答
748 浏览

c - malloc 在不同的机器上表现不同

在不同机器上运行试图超过 RSS 的程序时,我看到了完全不同的行为。代码类似于:

上面的代码尝试使用 malloc 分配大约 10GB 的内存。我尝试在 linux 内核 2.6 上运行此代码的前两台机器,最后一台运行 linux 内核 2.4。以下是我在这些机器上看到的行为:

Machine1:内存是使用内存过量分配分配的,但是当在while循环中为内存位置分配值时,它只分配RSS允许的数量。因此 OOM Killer 会在打印 i=3800 时终止进程,这大约是这台机器的 4GB 内存。

Machine2:使用内存过量分配分配内存,while 循环永远持续下去,从虚拟内存中分配页面。打印 i = 3800 后,该过程会变慢一些,这是正常的。

machine3:这台机器只有 2GB 内存。甚至无法分配内存。似乎未设置过度提交或内核 2.4 不支持使用 malloc 分配虚拟机页面!因此,在第一个 for 循环中,它在为 i = 2138 分配内存时退出

我想要的操作是在 machine2 中发生的操作。有谁知道必须设置哪些(内核?)选项以允许操作系统使用 malloc 分配虚拟内存页面并在所需内存超过 RSS 时开始分页?

谢谢

0 投票
2 回答
3009 浏览

c - 如何在 Linux 内核模块中分配可执行页面?

我正在编写一个 Linux 内核模块,我想分配一个可执行页面。Plainkmalloc()在一个不可执行的页面中返回一个指针,当在那里执行代码时我得到一个内核恐慌。它必须在 Ubuntu Karmic x86、2.6.31-20-generic-pae 上工作。