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

memory-management - Win64、MacOS、Linux下如何获取虚拟地址空间和单独配置内存?

我想构建一个内存分配器来管理一大块非共享的线性地址空间(例如32GB)。我需要在 Big-3 操作系统上运行它,但我可以忍受使用特定于操作系统的代码。

所需功能:

  • 开始时,获取在 2^N 字节边界上对齐的虚拟地址空间的 2^N 字节连续区域
  • 最初,整个区域应该是不可访问的(触摸该区域内的任何地址都应该导致该操作系统相当于 SEGV)
  • 随着时间的推移,从这个区域的底部(最低地址)开始,我将增加应该可以访问的部分(分配后备存储,提供 PTE)
  • 在运行时,由于后备存储耗尽而遇到故障是可以接受的

奖励积分:

  • 理想情况下,最初不保留后备存储
  • 在不释放地址空间的情况下取消配置整个区域
  • 鼓励使用更大的页面和 TLB 条目

问题:

  • 我知道我可以在 Linux 上使用 mmap 来实现这个方案。在 Win64 和 MacOS 上可行吗?
  • 如果是,我应该查看哪些原语/系统调用?
  • 最初获取地址空间时,如何最好地实现 2^N 字节对齐?
0 投票
0 回答
61 浏览

io - x86 中两个地址空间的用途是什么?

据我所知,如今,x86 的 IO 地址空间几乎只用于旧设备。例如 ARM 和 RISC-V 只有一个地址空间,那么,多个地址空间背后的想法是什么?

0 投票
1 回答
41 浏览

memory - x86 cpu 可以在大于 RAM 的物理地址上读取或写入吗?

我在 QEMU 上做操作系统实验室。我发现在分页后访问大于 RAM 的物理地址时允许读/写。在真正的 x86 机器上情况是否相同?x32 或 x64 会导致不同的结果吗?