问题标签 [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 回答
2137 浏览

c - 在同一进程中多次加载的共享库的地址空间

首先,我已经找到了 一些可以回答我的问题的参考资料。虽然我计划很快阅读它们(即下班后),但我仍然在这里询问以防答案是微不足道的并且不需要太多的补充知识。

情况如下:我正在编写一个共享库(我们称之为 libA.so),它需要在同一进程中保持一致的内部(如在 .c 文件中声明的静态变量)状态。这个库将被程序 P 使用(即 P 被编译为-lA)。如果我到目前为止了解所有内容,那么 P 的地址空间将如下所示:

现在 P 有时会调用dlopen("libQ.so", ...)。libQ.so 也使用 libA.so(即用 编译-lA)。由于所有事情都发生在同一个进程中,因此无论调用来自 P 还是 Q,我都需要 libA 以某种方式保持相同的状态。

我不知道这将如何在记忆中翻译。会不会是这样:

……还是这样?

在第二种情况下,为单个进程保持一致状态是微不足道的;在第一种情况下,它需要更多的努力(例如,一些共享内存段,使用进程 ID 作为第二个参数ftok())。

当然,由于我对链接和加载的工作原理了解有限,所以上面的图表可能完全错误。据我所知,共享库可能位于内存中的固定空间,并且每个进程都访问相同的数据和代码。该行为还可能取决于 A 和/或 P 和/或 Q 的编译方式。而且这种行为可能与平台无关。

0 投票
1 回答
30 浏览

windows - 为什么地址空间的私有区域中有这么多零字节?

我正在检查windows下进程的地址空间。当我看到私有区域的内容时,我想知道,因为有很多零字节(在某些区域超过 95%)。如果在应用程序运行时没有使用更多的私有区域,为什么它们不仅是保留的或免费的?

谢谢大家。

0 投票
1 回答
525 浏览

operating-system - 父进程及其子进程地址空间

当我读这本书Operating system design and implementation时,在第 2 章中,Process creation它提到了以下内容:

孩子的初始地址空间是父母的副本,但涉及两个不同的地址

这对我来说有点模糊。似乎它告诉我他们有相同的地址空间,但我相信这不是真的。

谁能解释一下这个细节?

0 投票
2 回答
1838 浏览

linux-kernel - 在系统调用期间将数据复制到内核空间

假设我们有一个系统调用write,它接受一个缓冲区作为参数。该缓冲存储器是用户地址空间的一部分。

写调用如何进一步成功?

假设如果我假设整个缓冲区被复制到内核空间并且现在该进程被抢占并且一些其他进程被给予 CPU 并且新进程现在发出不同的系统调用,这可能会覆盖先前write调用的缓冲区.

这种情况如何处理?还是有一种完全不同的机制,不会从用户空间复制数据到内核空间?

0 投票
0 回答
360 浏览

memory-management - 为什么 address_space_operations writepage 没有被调用?

我正在努力在WrapFS中实现地址空间操作,并尝试从现有的 ecryptfs 文件系统源中模仿代码,因为我的目标是最终实现加密的文件系统。下面给出的代码实现非常适合readpage(),但没有被执行write_begin(),因此当我尝试通过这个文件系统复制大文件时,它在复制大约 300 MB 的文件后卡住了。write_end()writepage()

我已经正确声明了 address_space_operation 对象。

0 投票
0 回答
101 浏览

c++ - 'this' 参数上的每个地址空间限定符的方法重载

在使用 clang++ 的 C++ 中,是否可以根据隐式“this”参数上的地址空间限定符重载方法?如果是这样,语法是什么?

该来源建议我可以将地址空间限定符放在参数列表之后但在花括号之前(类似于在 'this' 上使用 const 限定符)。我尝试了以下方法,但失败了;clang 认为我正在尝试设置方法的地址空间,而不是“this”:

我发现的最接近的是,clang 允许我根据其显式形式参数的地址空间(而不是 'this')重载方法。例如,下面的代码将打印“1\n2\n”。

0 投票
3 回答
1526 浏览

c++ - 指针可以用等于0的随机地址初始化吗?

例如,我们有

这个指针是否可以随机初始化为0,即操作系统初始化,这种情况下我们不改变这个指针的值吗?

0 投票
1 回答
19 浏览

c++ - 有什么方法可以分离从 getcontext() 获得的上下文堆栈?

有什么方法可以分离从 getcontext() 获得的上下文堆栈?这样它是具有不同堆栈的父级的精确副本。这样当我使用 setcontext() 或 swapcontext() 时,它本质上会像 fork 系统调用一样工作吗?

即使在调用函数返回后,我也希望能够使用它。

0 投票
3 回答
499 浏览

c - 初始化时将在哪里分配内存给“未初始化的静态变量”?

未初始化的静态变量总是在 BSS 中分配。而 .bss 部分是静态的,因为内存是在编译时分配的。根据许多书籍,可执行文件中“只有初始化为非零值的变量才会占用空间”。程序加载到内存后,未初始化的静态变量仍然是.bss。

**当一个函数初始化它时会发生什么?** 它会被转移到其他地区吗?

0 投票
1 回答
1539 浏览

ip - 如何在以下地址空间中写入网络地址/网络掩码?

我想问一下如何在网络地址/网络掩码中写入以下地址空间:

63.39.191.192 - 63.40.192.223

在纸面上,我想不出任何办法,所以我尝试使用网络地址计算器来解决

我输入了第一个 IP 地址并开始玩弄网络掩码。

我无法理解的是第一个和最后一个可用地址如何根据网络掩码而变化。

所以,我在这里,希望你能向我解释第一个和最后一个 IP 地址是如何根据网络掩码确定的,以及如何解决这个问题。