问题标签 [address-space]

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 投票
8 回答
30778 浏览

c# - 你如何处理大于 UInt64 的数字(C#)

在 C# 中,如何存储和计算显着超过 UInt64 最大值 (18,446,744,073,709,551,615) 的数字?

0 投票
1 回答
133 浏览

.net - 我可以在我的 .NET 应用程序的地址空间中重新排列 dll 图像以提供更多连续的可用空间吗?

替代文字 http://www.freeimagehosting.net/uploads/67f98ad782.png

此图像显示了我的应用程序地址空间中的碎片。有没有办法强制(第三方)dll 图像(紫色)一起消除(或减轻)碎片?

此应用程序将在 32 位 XP 上运行;显然,当我们最终迁移到 64 位 Windows 7 时,这个问题就会消失。

谢谢!

0 投票
7 回答
4637 浏览

windows - 为什么操作系统不能使用整个 64 位进行寻址?为什么只有 48 位?

我正在阅读“理解 Linux 内核”。

64 位架构的分页

正如我们在前几节中看到的,32 位微处理器通常使用两级分页。然而,两级分页不适用于采用 64 位架构的计算机。让我们用一个思想实验来解释原因:

首先假设标准页面大小为 4 KB。因为 1 KB 覆盖了 2 10 个地址的范围,4 KB 覆盖了 2 12 个 地址,所以 Offset 字段是 12 位。这留下了多达 52 位的线性地址要分布在表和目录字段之间。如果我们现在决定只使用 64 位中的 48 位进行寻址(这个限制给我们留下了一个舒适的 256 TB 地址空间!),剩余的 48-12 = 36 位将不得不在表和目录字段之间拆分。如果我们现在决定为这两个字段中的每一个保留 18 位,那么每个进程的页目录和页表都应该包含 2 18个条目,即超过 256,000 个条目。

  1. “如果我们现在决定只使用 64 位中的 48 位进行寻址”。为什么?& 为什么只有 48 位?为什么不是其他号码?

  2. 好吧,我只是一个普通的 PC 用户和程序员。我很难相信 32 位寻址,即每个进程 4GB(更正确的是 2GB/3GB)地址空间是一个限制。如果你真的遇到了这个限制。请举个例子。

  3. windows的这个限制是多少?

  4. 我知道虚拟内存!=物理内存和处理器地址引脚与虚拟内存无关。这是一个完全不同的问题。如何知道处理器的地址引脚数量(= 地址总线的大小)。http://ark.intel.com处理器规格不包括此规格。

回答:

有关第一个问题的合理答案,请参见Paul Betts 的答案

0 投票
2 回答
16685 浏览

memory-management - 线性地址和物理地址

什么是线性地址?它与物理地址有何不同?

0 投票
2 回答
194 浏览

process - 在从/到用户空间到内核空间切换时如何使用 4gb(VM) 地址空间

我看了很多关于如何将进程地址空间划分为进程/内核的在线线程/教程

例如:我有一些 Helloworld 程序,我以 printf 的形式调用(反过来它会进行写入系统调用以进入内核空间)

我怀疑内核如何使用 Helloworld 程序堆栈。你能告诉我整个执行过程是如何进行的吗...

./helloworld -> printf() -> 写系统调用 -> 显示驱动 -> 从写返回 -> 返回 helloworld

谢谢,阿玛伦德

0 投票
3 回答
119 浏览

sql - 如果地址空间是连续的,对 IDENTITY 列的查找会更快吗?

如果我有一个带有IDENTITY列 ( bigint) 的非常大的表,并且该表可能会被删除,地址空间(可用 ID)的碎片是否会导致速度变慢SELECTS


澄清:

地址空间碎片是指在 ID 列中的值中留下的空白,而不是从表中删除行时发生的磁盘碎片。

0 投票
2 回答
756 浏览

c++ - 程序使用的DLL,其中声明的变量存储在哪里?

我有一个程序(不是我的,没有源代码),它公开了一个接口,所以我可以编写一个 DLL,我的程序将调用它。现在我想知道当我在我制作的这个 DLL 中声明一些变量时,它会存储在什么内存空间中?

我的意思是,它只是位于 EXE 地址空间的内存空间中,对吧?但是,关于 EXE 的 DLL 是如何加载的?我认为一个 DLL 只在内存中加载过一次,那么这与我在 DLL 中创建局部变量有什么关系呢?(如对象、类等)

0 投票
1 回答
1628 浏览

windows - 如何确定 Windows 是否在不重新启动的情况下应用 ASLR?

据我了解,ASLR 地址空间布局随机化只会在每次系统启动(每次重新启动)时进行随机重定位。

地址空间布局随机化 (ASLR)

当系统启动时,ASLR 将可执行映像移动到随机位置,从而使漏洞利用代码更难以可预测的方式运行。(...)

如果是这种情况,我该如何“测试”,或者更确切地说,检查我的 C++ 模块或系统模块(例如kernel32.dll)是否正在发生 ASLR,而不需要反复重新启动 Windows 并希望随机性出现?

0 投票
1 回答
2095 浏览

operating-system - 子进程(由 fork() 创建)访问父进程的堆部分是否合法?

子进程可以访问(读写)父进程的堆地址空间吗?以下是我在http://www.ideone.com/R5vDT尝试的程序,它运行成功:

输出是:

我已经阅读过关于 COW(写入时复制)的信息,但 p 指向的地址即使在写入操作之后也是相同的。操作系统不应该因为一个进程正在访问其地址空间之外的内存而引发异常吗?

0 投票
1 回答
1045 浏览

c - 内存映射库文件名 osx

我需要获取当前应用程序的所有内存映射库的文件名。目前我正在通过 vm_region 浏览所有映射库。遗憾的是,它没有提供有关当前区域文件名的信息。有没有办法在 c 中获取此信息而无需在 vmmap 上执行 popen ?