问题标签 [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.
linux - 什么是“内核地址空间”?
从Understanding The Linux Kernel,这里有一些关于内核线程与用户进程(即常规进程)的讨论:
除了用户进程外,Unix 系统还包括一些称为内核线程的特权进程,具有以下特征:
• 它们在内核地址空间中以内核模式运行。
• 它们不与用户交互,因此不需要终端设备。
• 它们通常在系统启动期间创建,并且在系统关闭之前一直保持活动状态。
...
在 Linux 中,内核线程在以下方面不同于常规进程:
• 内核线程仅在内核模式下运行,而常规进程在内核模式和用户模式下交替运行。
• 因为内核线程只在内核模式下运行,所以它们只使用大于 PAGE_OFFSET 的线性地址。另一方面,常规进程在用户模式或内核模式下使用所有 4 GB 的线性地址。
我听说过用户进程即常规进程的虚拟地址空间,并且一部分地址空间映射到内核代码和数据。
我的问题:
- 我想知道上面引用中的“内核地址空间”是什么意思?
- 它不是用户进程的虚拟地址空间的一部分吗?
- 这是否意味着内核拥有自己的虚拟地址空间,就像用户进程拥有自己的虚拟地址空间一样?
bus - 为什么 CPU 物理地址空间和总线地址空间不同?
我正在阅读有关 DMA 的内容,它指的是以下地址空间:
CPU 虚拟地址空间
CPU 物理地址空间
总线地址空间
我理解为什么虚拟地址空间和物理地址空间不同......为什么物理地址空间和总线地址空间之间需要映射?什么会导致这些不同?
multithreading - 有没有办法强制一个进程与另一个进程共享地址空间?
这是一个纯粹的理论问题。就我而言,每个进程都有不同的寻址空间,并且一个进程中的每个线程共享相同的内存空间?
有没有办法改变这种行为,尤其是在某些 UNIX 系统中。更清楚地说,让两个进程共享相同的地址空间?或者使来自同一进程的两个线程具有不同的地址空间?
linux - 将 .BSS 与堆访问区分开来
据我了解,[heap]
Linux 进程地址空间中的虚拟内存区域(VMA)包含.bss
数据和堆数据(Link)。
我想在[heap]
VMA 中捕获堆访问。据我所知,.bss
映射在编译时由前端(例如,Clang
)发生。为了过滤堆访问,我应该在哪里更改?
c - 为什么没有使用 malloc 时堆部分存在
如果我们不调用 malloc,我试图找出进程的地址空间中是否存在堆。
即使我不调用 malloc,地图中也存在堆部分
我在 Ubuntu 18.04 上试过这个,gcc 版本是 7.4.0,你们能帮我理解为什么即使我们没有任何 malloc 也会创建堆部分。
intel - 什么定义了cpu的地址空间?
我的困惑是基于这三个想法-
是 2^(cpu 上所有可用地址引脚的数量)吗?
是 2^(一个特定寄存器的大小)吗?
它是理解地址范围内所有地址的硬件电路吗?那这是什么?
我这里不是问虚拟地址空间,不知道叫什么,可能是包括ram在内的所有物理设备的物理地址空间。另外即使我得到一个正确的答案我也想问一下,为什么我的cpu有2^39位(512GB)的内存地址空间和64KB+3的I/O内存空间。此信息写在我的系统的 intel 文档中(intel core i3-4005U with an Integrated lynx point-m PCH)。
如果我问错了,欢迎您编辑我的问题。谢谢你。
arduino - ATmel 处理器不调用 LLVM 全局构造函数
我已经编译了一个 cpp 代码并将其下载到 Arduino Uno 以使 LED 闪烁。代码工作正常。但是,当我将它转换为.ll
目标.ll
文件然后转换为十六进制并上传时,代码停止工作。Arduino 没有 LED 闪烁。
如果我直接寻址端口:
它会正常工作,但如果我初始化通过全局构造函数寻址的端口,它就不起作用:
这是因为根本没有调用全局构造函数。如果我通过主函数调用它
它会起作用的。
我使用以下命令编译并下载ll
文件到 Arduino uno:
眨眼1.ll
这是 LLVM 错误还是我做错了?
go - 令人困惑,Go Routines 中的通道内这是什么
程序 :
输出 :
该输出(824634122336)是什么意思?我认为 (0xc00009e000) 是通道的起始地址。
如果(0xc00009e000 是通道地址)
- 那么请告诉我这是什么(824634122336)
别的
- 那么请告诉那些输出是什么。
memory - 内存接口:微处理器的地址空间从一个随机位置开始
我正在尝试绘制 8088 微处理器和 8 个 4K x 8 EPROM 之间的接口电路图。这是一个例子。在本例中,地址空间从 F8000h 开始,到 FFFFFh 结束。如果我希望地址空间从另一个位置开始,例如 F8123h,该怎么办?我需要在电路中进行哪些更改?我想了很多,但无济于事。
java - 通过 JAVA 自动生成 OPC UA 对象的实例(为 OPC UA 服务器的地址空间生成 XML)
我有各种类型的 OPC UA 的 XML 文档和添加到其中的一些自定义对象类型。例如((1)具有年龄属性的 StudentType,出生地(2)具有 Name 属性的 TeacherType,专业知识))
此外,我还有另一个文本输入,上面写着 (XX -- FolderType, AA -- StudentType, BB --TeacherType) 简而言之,它提到了实例名称和实例的类型。
当然,这个完整的东西可以用 UAModeller 工具构建,但是我们计划编写一个 java 程序,它会在提供输入时自动为我们做这件事。
首先,我获取了 types.xml 文件,并对其进行了解析。我创建了一个 UAObjectTypes、UAVariableTypes、StudentTypes、TeacherTypes 等列表。
我给自己做了一个列表,将实例的输入列表映射到它们的 ObjectType。但我无法按预期建立参考。例如:
OPC UA 中的每个节点都通过引用连接到其他节点。例如:类是“OrganisedBy”对象。班级“组织”学生和教师。学生“组织”罗山等等。
我正在努力通过代码建立此地址空间的动态生成。我有该工具生成的示例地址。但是java程序不会产生相同的结果。
请给我一些指导。到现在完全一无所知。