进程地址空间与虚拟内存

2024-02-08

根据我阅读几篇文章的理解,我假设进程地址空间(PAS)和虚拟内存(VM)是相同的。难道是我的理解有问题?有人可以解释一下这一点并启发我吗?我很困惑。

我知道进程地址空间与 RAM 或物理内存无关。

但只是对 PAS 和 VM 感到困惑。


First: “内存”不等于“地址空间” http://msdn.microsoft.com/en-us/library/windows/desktop/aa366912%28v=vs.85%29.aspx。地址空间是可能地址的范围。 IE。 32 位指针为 4 Gb,64 位指针为 16 Eb。另一方面,内存是……嗯,你可以实际使用(至少可能)的内存。所以,我打赌您会问“进程内存”是否等于“虚拟内存”,或者“进程地址空间”是否等于“虚拟地址空间”。

Second:虚拟内存是唯一可以在用户模式下使用的内存。您无法访问物理内存。物理内存用于内核模式和驱动程序。用户模式应用程序仅使用虚拟内存。因此,所有内存在用户模式下都是虚拟的。无需附加“虚拟”。这是默认的。

因此,“进程地址空间”=“[虚拟]进程地址空间”——即单个进程的虚拟地址空间。 “内存”也是如此:“进程内存”=“[虚拟]进程内存”。

Third:现在,“虚拟内存”一词通常指“系统虚拟内存”(全局的东西),它比一个进程大。另一方面:由于寻址是特定于进程的,因此不存在“系统虚拟地址空间”(所有进程和内核的全局地址空间)之类的东西。

所以,答案是:

  1. “进程地址空间”=“虚拟地址空间”=“地址空间”
  2. “进程内存”“虚拟内存”

Examples

例如,进程地址空间的典型限制是 4 Gb(对于 32 位应用程序)。但是,进程虚拟内存的典型限制是 2 Gb(对于 32 位计算机可以扩展到 3 Gb,对于 64 位计算机可以扩展到 4 Gb)。

另一方面,虚拟内存比您的进程大。考虑通过 CreateFileMapping 函数分配内存时的情况。例如,您可以创建 64 GB 虚拟内存块。即使 64 Gb > 2 Gb 也没关系。当然,您不能同时使用所有 64 GB(因为进程地址空间只有 4 GB),但您可以分块使用,例如每 512 Mb。

另外,请考虑将同一虚拟内存块映射到多个位置(多个地址)时的情况。

换句话说,虚拟内存和虚拟地址之间不存在一对一的映射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程地址空间与虚拟内存 的相关文章

  • 使 GetRawInputDeviceInfo 和 RIDI_DEVICEINFO 与 C# 一起使用

    我有一个问题 我似乎无法使 GetRawInputDeviceInfo 与 RIDI DEVICEINFO 结合使用 尝试检索 RID DEVICE INFO 根本不起作用 我从函数中得到错误 1 这意味着没有足够的空间来存储 RID DE
  • 如何使用 VB6 调用 Windows shell 命令?

    究竟如何使用 VB6 才能像从命令行一样调用任何 Windows shell 命令 例如 一些微不足道的事情 echo foo 操作方法如下 Shell cmd echo foo vbNormalFocus
  • 用矩阵变换 3D 向量的方法

    我一直在阅读一些关于用矩阵转换 Vector3 的文章 并且正在努力深入研究数学并自己编码 而不是使用现有代码 无论出于何种原因 我的学校课程从未包含矩阵 所以我正在填补我的知识空白 值得庆幸的是 我认为我只需要一些简单的东西 背景是我正在
  • 使用 Windows 锁定屏幕后删除 Kerberos 缓存票证

    无论如何 有没有办法阻止 Kerberos 缓存的票证在 Windows 进入锁定屏幕后被删除 首次登录 Windows 时 klist exe 显示 2 个缓存票证 但是 发生 Windows 锁屏事件后 klist exe 显示 0 个
  • 发送/捕获 SIGTERM 的 Win32 API 模拟

    在 POSIX OS 下 有信号 API 允许向进程发送信号以将其关闭 使用kill 您可以使用sigaction捕获它并执行您需要的操作 然而 Win32不是POSIX系统 所以 如何处理可能出现的关闭事件 例如来自 任务管理器 中的 结
  • 我需要释放手势识别器吗?

    如果我将手势识别器添加到名为的表格单元格中cell e g UILongPressGestureRecognizer longPressRecognizer UILongPressGestureRecognizer alloc initWi
  • 查找两个大小为 n 的数组中第 n 大数的算法

    我有这个问题 给定两个大小为 n 的排序列表 存储在数组中 找到 O log n 计算并集中第 n 大元素的算法 两个列表 我可以看到这里可能有一个技巧 因为它需要第 n 个最大的元素 并且数组的大小也是 n 但我不知道它是什么 我在想我可
  • 如何从系统属性获取Windows操作系统环境变量

    我遇到一个关于系统属性环境变量的奇怪问题 如你所知 我们可以打开Computer gt Property gt Advanced System Settings gt Advanced gt System Environment Varia
  • 如何运行 Windows 批处理文件但隐藏命令窗口?

    如何运行 Windows 批处理文件但隐藏命令窗口 我不希望 cmd exe 在执行文件时在屏幕上可见 这可能吗 如果你写一个非托管程序并使用创建进程 https learn microsoft com en us windows win3
  • 如何计算 WPF 中的非客户端窗口大小?

    WPF 有SystemParameters class http msdn microsoft com en us library system windows systemparameters aspx公开了大量的系统指标 在我的计算机上
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • Java堆和栈内存分配

    class Person private String name public Person public Person String name this name name public static void main String a
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • java.nio.file.FileSystemException:该进程无法访问该文件,因为该文件正在被另一个进程使用

    我正在编写一个程序 该程序在第一次执行时将自身复制到特定文件夹 在 Linux 或 Windows 中工作 在 Linux 中它工作得很好 但是当我尝试在 Windows 上执行相同操作时 我收到以下错误 java nio file Fil
  • 多个原始输入窗口接收器

    我有一个仅消息窗口 ATL CWindowImpl 它使用 RIDEV INPUTSINK 标志将自身注册为原始输入 这意味着无论该窗口是否是前台窗口 它都会获取所有输入 当该窗口只有一个实例时 这非常有效 但是 当我创建超过 1 个窗口实
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • 如何为所有语言创建字母数字正则表达式?

    我今天遇到了这个问题 此正则表达式仅匹配英语 a zA Z0 9 如果我需要支持这个世界上的任何语言 我应该编写什么正则表达式 如果您使用字符类简写和 Unicode 识别正则表达式引擎 您就可以做到这一点 这 wclass 匹配 单词字符
  • TCHAR 仍然相关吗?

    我是 Windows 编程新手 在读完 Petzold 的书后 我想知道 使用TCHAR类型和 T 函数来声明字符串或者我应该使用wchar t and L 新代码中的字符串 我将仅针对现代 Windows 截至撰写本文时版本 10 和 1
  • 将 SWI Prolog 代码编译为 Windows 可执行文件 - 解析器 Grails3 项目

    我正在尝试构建解析器 Grails3 项目https github com RichardMoot Grail https github com RichardMoot Grail谁的教程是http www labri fr perso m
  • 获取Windows下新线程/删除线程的通知

    创建 DLL 时 您可以在 DllMain 函数 DLL THREAD ATTACH DLL THREAD DETACH 中获取有关新线程 退出线程的通知 有没有办法在 非托管 可执行文件中从 Windows 获取这些或等效通知 是的 在您

随机推荐

  • 如何解决:该应用程序正在从后台线程修改自动布局引擎

    当代码的某些部分从主线程以外的其他线程更改 UI 项目时 此错误会记录到控制台 但我怎样才能找到它在哪里执行此操作呢 此应用程序正在从后台线程修改自动布局引擎 的主要问题是 它似乎在实际问题发生后很长时间才被记录 这可能会使故障排除变得非常
  • react-hook-form:使用 onBlur 模式时验证不起作用

    我正在尝试显示错误yup and react hook form当用户选择超过 5 个复选框但未成功时 相反 当选择第七个复选框时会显示错误 这是简化的代码 imports const schema yup object shape opt
  • 需要有关必须显示 250 000 条折线的 Google 地图应用程序的指导

    我正在为我正在开发的使用 Google 地图的应用程序寻求建议 Summary 用户具有用于搜索满足条件的街道段的条件列表 街道段将用 3 种颜色来表示 分别是低于平均水平 平均水平和高于平均水平 然后 用户单击街道路段 查看一个信息窗口
  • 如何在android中垂直均匀分布按钮/布局?

    我有一个类似于计算器的布局 每行 4 个按钮 大约有 5 行 我使用以下方法创建了每一行LinearLayout 我已经成功地通过使用完全填充了每行的宽度android layout weight 1 在每个按钮中LinearLayout
  • Flexbox:重新排序和堆叠列

    我有三列 我想在特定的屏幕尺寸下交换它们的顺序 当前的顺序是两个 1 4 宽度的列 中间有 1 2 宽度 我想将两个1 4宽度的列变成1 2宽度 并在开始时将它们堆叠起来 我可以使用浮动来复制它 但无法找到使用弹性盒的方法 我正在努力让两个
  • 替换无序列表中的值(html)+ JQuery

    D1 nav d1 span text X1 会改变 span D1 span to span X1 span
  • 通过触摸停止和启动动画。目标C

    我制作了一个在屏幕上移动的动画 我的动画连续循环 如何在点击动画图像时停止动画 然后在松开触摸时让动画继续 我知道如何使用 TouchesMoved 来移动指定的按钮 如下所示 CGPoint point event allTouches
  • virtualenv激活后“python”仍然运行系统版本

    我使用以下命令安装了 Python 2 7 configure prefix usr local enable unicode ucs4 enable shared LDFLAGS Wl rpath usr local lib make m
  • Jupyter Lab 中的 pycwt 包出现 ModuleNotFoundError

    我有一个conda环境 我已经安装了wavelet包pycwt https pypi org project pycwt using conda install n myenv c conda forge pycwt 按照规定蟒蛇云 htt
  • ng2-文件上传访问控制来源问题

    我已经使用这个库进行 angular2 文件上传https github com valor software ng2 file upload https github com valor software ng2 file upload
  • 无法编译调用 tgkill 的程序

    我正在尝试编写一个使用 tgkill 向特定线程发送信号的程序 但是每当我用 gcc 编译它时 我都会收到有关 tgkill 未定义引用的错误 我尝试使用 lpthread 进行编译 但没有帮助 我用谷歌搜索了又搜索 但找不到任何答案 我如
  • .NET Excel 文件解析器

    因此 我工作的公司正在寻找一种方法来验证给定的 xls xlsx 文件是否有效 这意味着检查列 行和其他数据 他让我评估 GrapeCity Spread 和 SpreadsheetGear 但我想知道是否还有其他人可以查看其他外部工具的建
  • 如何解析flutter中的map Json列表?

    I have one Json structure with three maps one is list of products then total and tax I have to parse this json structure
  • 如何知道 npm `unzip` 模块何时完成解压文件?

    我正在使用unzip来自 npm 的模块用于提取 zip 存档的内容 我需要知道何时完成提取并且文件已完全写入磁盘 My code fs createReadStream master zip pipe unzip Extract path
  • C++ 中用于分离标头/源的模板专业化的稳健方法是什么

    在中等规模甚至大型复杂项目中 将模板声明和定义分开是有用的 以减少编译时间 然而 在复杂的代码中 程序员的小错误可能会导致不被注意的行为变化 例如调用通用版本而不是专门化版本 例子 由于错过了声明 模板专业化变得不可见 file A hpp
  • 如何将 Emacs 与 Python 结合使用

    我是 emacs 新手 我想使用 emacs 进行 python 开发 我使用的是 Ubuntu 9 10 我对让 emacs 与 python 一起工作感到沮丧 我使用 GNU Emacs 23 1 50 1 x86 64 pc linu
  • 以渐变方式绘制背景颜色

    此代码生成下面的第一个图 water height lt seq 0 5 1 y lt seq 0 1500 length out 6 df lt data frame water height y library ggplot2 ggpl
  • vb.net 中可以实现内联函数吗?

    问题在标题中 我看到的答案假设您正在谈论编译或 JIT 时内联 它们是完全正确的 然而 我听说过的 内联 一词的另一种用法是用于 lambda 表达式之类的东西 在 C 中 例如 public IEnumerable
  • 在 Android 上安装预构建的二进制文件:“未找到”

    我正在尝试在自定义 Android 映像中安装预构建的二进制文件 为此 我已将其复制到新目录中prebuilt android arm 与Android mk文件类似于此 LOCAL PATH call my dir include CLE
  • 进程地址空间与虚拟内存

    根据我阅读几篇文章的理解 我假设进程地址空间 PAS 和虚拟内存 VM 是相同的 难道是我的理解有问题 有人可以解释一下这一点并启发我吗 我很困惑 我知道进程地址空间与 RAM 或物理内存无关 但只是对 PAS 和 VM 感到困惑 Firs