问题标签 [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 投票
1 回答
272 浏览

linux-kernel - copy_to_user 如何在 s390 上工作?

在 s390 架构上,虚拟内核和用户地址空间永远不会同时存在,那么它是如何copy_to_user工作的呢?

0 投票
1 回答
2064 浏览

math - 给定地址总线宽度和各种信息的可用字节数

一个处理器有

  • 24位地址总线
  • 16位数据总线
  • word 包含 2 个字节
  • 字节可寻址
    外设和内存单元将被连接,并且很可能会使用整个内存空间。

有很多问题,我只使用过有 24 位地址总线的事实。

系统的可寻址位置总数是多少?2^24
1/4 的地址空间将用于外设,外设的地址总数是多少?2^24/2^2
12/16 个地址用于磁盘寻址,有多少个?(12/16)2^22
3/4 的地址空间将用于 RAM 和 ROM 的内存需求,可用的地址总数是多少?(3/4)2^24
这似乎很容易

0 投票
3 回答
15001 浏览

c# - 如何检查 exe 是否设置为 LARGEADDRESSAWARE

我正在开发一个 C# 程序,它将加载文件并获取加载文件创建日期、修改日期、大小等信息。我需要知道的另一件事是加载的文件 ( executable.exe) 是否与LARGEADDRESSAWARE标志链接。FileInfo 类不提供此信息。

有谁知道如何在 C# 中找出给定的 executable.exe 是否与LARGEADDRESSAWARE标志链接(以处理大于 2 GB 的地址)?

0 投票
3 回答
2687 浏览

memory-management - 内存中的最低和最高地址,其中最小可访问单元为 4 个字节

有人问了一个问题:“给定 2^10 字节的内存,其中 4 字节的字是最小的可寻址单元,最低和最高地址是什么?”

最低地址是 0 答案键的最高地址是 2^10-4 我认为它会是 (2^10-1)/4,因为每 4 个字节都被寻址?

0 投票
3 回答
2225 浏览

c - 使用fork时如何映射内存?

我是“fork()”的新手,我到处读到,当调用 fork() 时,会启动当前(调用)进程的精确副本。现在当我运行以下代码时,应该有两个不同的进程,有两个不同的分配给它们的变量和函数的内存位置。

为什么父母和孩子的地址都相同?

0 投票
2 回答
2908 浏览

function - CUDA 共享内存地址空间与全局内存

为了避免真正冗长和不连贯的函数,我从内核中调用了许多设备函数。我在内核调用开始时分配了一个共享缓冲区(每个线程块),并将指向它的指针传递给在内核中执行某些处理步骤的所有设备函数。

我想知道以下几点:

如果我在全局函数中分配共享内存缓冲区,我传递指针的其他设备函数如何区分指针可以引用的可能地址类型(全局设备或共享内存)。

请注意,根据“CUDA 编程指南”使用共享修饰符装饰形参是无效的。imhoit 可以实施的唯一方法是

a) 通过在分配的内存上放置标记 b) 通过调用传递不可见的参数。c) 有一个虚拟的统一地址空间,它有单独的全局和共享内存段,并且可以使用对指针的阈值检查?

所以我的问题是:我是否需要担心它,或者如果不将所有函数内联到主内核中,应该如何进行?

==================================================== ==========================================

另一方面,我今天感到震惊的是,带有 CUDA Toolkit 3.0 的 NVCC 不允许所谓的“来自全局函数的外部调用”,需要内联它们。这意味着实际上我必须内联声明所有设备功能,并且头文件/源文件的分离被破坏。这当然很丑陋,但是还有其他选择吗?

0 投票
0 回答
372 浏览

virtual-memory - 虚拟内存大小和分配

在 32 位 x86 系统上,总虚拟地址空间的理论最大值为 4 GB。默认情况下,Windows 将此地址空间的一半(4 GB 虚拟地址空间的下半部分,从 x00000000 到 x7FFFFFFF)分配给进程作为它们唯一的私有存储,并将另一半(上半部分,地址 x80000000 到 xFFFFFFFF)用于它自己受保护的操作系统内存利用率。

64 位 Windows 为进程提供了更大的地址空间:IA-64 系统上为 7152 GB,x64 系统上为 8192 GB。

我对上述报价有几个问题:

  1. 为什么为进程分配低地址空间?
  2. “...使用另一半(上半部分,地址 x80000000 到 xFFFFFFFF)用于其自身受保护的操作系统内存利用率。” - 为什么操作系统不使用物理地址作为系统地址空间,而是使用虚拟地址?
  3. 为什么在 x64 系统上 8192GB 用于进程和系统?与 32 位操作系统相反,不是所有的地址空间都被使用?

谢谢

0 投票
2 回答
410 浏览

c++ - 关于取消引用和地址空间的基本 C++ 指针问题

在下面的代码中,基于阅读cplusplus.com,我试图测试我对指针的基本理解。

这导致输出:

xx每次运行时都会发生变化的长数字在哪里。当我添加以下内容时:

它导致:

与运行时xy不同的地方。xx

  • 问题1:在声明中,声明*bar是否在那个时刻使它成为一个“指针”,直到它被使用,即fubar = *bar在什么时候它是一个取消引用的变量?或者是指针始终是一个变量,而这只是我得到了所有的nooby并被束缚在(可能不正确的)语义中?

  • 问题2xx每个运行时都会改变一个长数字,所以我说它是地址空间是对的吗?

  • 问题 3:我是否认为虽然fubarfoo具有相同的值,但它们是完全独立的并且没有公共地址空间?

0 投票
2 回答
1943 浏览

linux - Linux中的全局或局部线性地址空间?

在linux中,由于段的基数都是0,所以逻辑地址与线性地址重合(《理解linux内核》一书)。我认为不同进程的逻辑地址可能相同,所以不同进程的线性地址可能相同,每个进程查看4GB,每个进程都会有自己的线性地址空间(本地地址空间)。但是其他一些文章说所有进程共享一个很大的线性地址空间,并且使用段机制将不同的进程映射到线性地址空间的不同部分。听起来像是具有更宽地址位的全局线性地址空间。我哪里错了?或者它们用于不同的架构?

0 投票
2 回答
1133 浏览

.net - AppDomain 地址空间

首先,问题是:CLR 规范是否保证在同一进程内的多个应用程序域中执行的代码将共享相同的地址空间?通过“共享地址空间”,我的意思是指向在某个应用程序域中分配的内存的指针对于在同一进程内托管的所有应用程序域进行读写都是有效的。

考虑这个说明问题的独立示例:程序Worker在单独的应用程序域中分配一个对象。为 10,000个Worker整数分配一个内存块,并用数据填充它。然后程序跨应用程序域边界调用以获取指向已分配块的指针,并验证它是否可以读取 10,000 项中的每一项。

我跑了很多次,每次都有效。直觉上它应该可以工作:毕竟,应用程序域在一个进程中,所以它们必须共享相同的虚拟地址空间。但是,这感觉就像是在利用 Microsoft 可能随时取消的功能。CLR 的规范中是否有某些内容确认或否认此技巧的合法性?


如果您想知道我为什么要问这样一个奇怪的问题,我正在寻找一种跨应用程序域边界传递大量(以千兆字节为单位)数据的方法,同时在空间和时间上都具有最小的开销。如果我能证明它的合法性,这将是我理想的解决方案。