问题标签 [virtual-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.
c - 将地址空间除以 8
我的问题是关于处理地址空间。
我有两个十六进制地址空间:0x7ffffff09 和 0x7fffff08。
我怎么知道它们是否可以被 8 或 8 字节对齐整除?就像检查在 C 或 C++ 代码中的样子一样。我知道您通常将 mod 用于常规数字,如果没有余数,那么您就知道它是可整除的。
编辑:地址空间可以是__8、__16、__32(8位、16位、32位)
c - 这两个函数有什么区别:`ioremap_uc()` 和 `set_memory_uc`?
当我想通过set PAT(Page attribute table - 7bit in PTE)将内存区域标记为Write Combined(禁用缓存并使用BIU)或Uncacheable时,我必须使用什么,这两个函数有什么区别?
- 驱动程序应使用
ioremap_[uc|wc]
[uc|wc] 访问类型访问 PCI BAR:void __iomem *ioremap_wc(resource_size_t phys_addr, unsigned long size) - 驱动程序应该使用
set_memory_[uc|wc]
来设置 RAM 范围的访问类型:int set_memory_uc(unsigned long addr, int numpages)
取自: http: //lwn.net/Articles/278994/
为什么我不能对 PCI BAR 和 RAM 范围使用相同的单一功能?
澄清:
是否ioremap_uc()
通过设置 Uncacheable 获取物理地址并返回虚拟地址,与set_memory_uc()
哪些已经获得虚拟地址并为这些页面设置 Uncacheable?
这些代码是否相等?
和
c - 如何在 x86_64 上将虚拟地址转换为物理地址(级别、它们的名称和页面属性)?
众所周知,在 32 位系统中,虚拟地址到物理地址的转换分为 3 个级别:
- PD(10 bit):Page-Directory - 其中每个条目 (PDE) 对应于所需的 Page-Table 并定义了 4 MB 范围的转换(为了指示 PT,最高 20 位取自 PDE,并且剩下的 12 个用 0 填充)
- PT(10 bit):Page-Table - 其中每个条目(PTE)对应于虚拟地址空间中的每个页面(4KB)(用于指示Page,最高20位取自PTE,其余12位为填充为 0)
- 偏移量(12 位) - 此页面内的偏移量
PDE 和 PTE 的前 12 位,不用于寻址(用零填充)具有以下属性:
但是它在 64 位系统x86_64上看起来如何:有多少层,它叫什么,与 32 位有什么不同以及使用了哪些属性?
cuda - 是否可以通过新 CUDA6 中的简单指针从 CPU 内核访问 GPU-RAM?
现在,如果我使用此代码尝试通过在 GeForce GTX460SE (CC2.1) 中使用 CUDA5.5 从 CPU 内核访问 GPU-RAM,那么我会收到异常“访问冲突”:
但是我们知道,有UVA(统一虚拟寻址)。还有一些新的:
- 2013 年 10 月 25 日 - 331.17 Beta Linux GPU 驱动程序:新的 NVIDIA 统一内核内存模块是一个新的内核模块,用于统一内存功能,将在即将发布的 NVIDIA CUDA 中公开。新模块是 nvidia-uvm.ko,它将允许 GPU 和系统 RAM 之间的统一内存空间。http://www.phoronix.com/scan.php?page=news_item&px=MTQ5NDc
- CUDA 6 的主要特性包括: 统一内存——通过使应用程序能够访问 CPU 和 GPU 内存而无需手动将数据从一个内存复制到另一个,从而简化了编程,并且可以更轻松地在广泛的范围内添加对 GPU 加速的支持编程语言。http://www.techpowerup.com/194505/nvidia-dramatically-simplifies-parallel-programming-with-cuda-6.html
是否可以通过使用新 CUDA6 中的简单指针从 CPU 内核访问内存 GPU-RAM?
c - Linux 中的所有驱动程序都在相同的上下文中工作还是在不同的上下文中工作?
Linux 中的所有驱动程序都运行在相同的上下文中(内核空间的地址空间),还是各自运行在不同的环境中(类似于不同进程在用户空间的不同地址空间中的工作方式)?
memory-management - CPU进程可以写入其他CPU进程分配的GPU-RAM中的内存(UVA)吗?
当我们使用 nVidia GPU 时,我们可以使用 UVA(统一虚拟寻址),如图所示。但是我们可以在不同的上下文中使用来自不同 CPU 进程的 GPU+UVA。
UVA 将在所有 CPU 进程(上下文)中为 UVA 使用相同的页表(虚拟地址 <-> 物理地址),看起来就像它为内核空间寻址所做的那样,或者将为每个 CPU 进程创建在这个进程的地址空间中拥有自己的页表(即CPU进程不能写入其他CPU进程分配的GPU-RAM中的内存(UVA))?
memory - 我可以通过使用物理寻址的内存指针从 RAM 加载数据吗?
我可以通过从我的驱动程序(Linux 内核)使用指向具有物理寻址(而不是虚拟)的内存的指针来从 RAM 加载数据,而无需在虚拟寻址中分配页面(PDE/PTE)吗?
windows - 将物理内存地址映射到 Windows 中的用户空间应用程序
是否可以将物理内存地址映射到 Windows 用户空间应用程序虚拟地址以进行读/写?
编辑:我有一个实时操作系统与 Windows 并行运行的系统。客户操作系统(RTOS)能够通过将物理地址映射到其虚拟内存空间来读取/写入内存映射的 PCIe 从属外围设备。
我想做的是能够从 Windows 用户空间应用程序直接与 PCIe 从设备通信,但这需要我将该物理内存地址映射到用户空间虚拟内存空间。
提前致谢。
windows - 在窗口中地址空间
如果硬盘中没有可用空间,当我运行应用程序时系统会做什么?在哪里创建分页文件?
virtual-address-space - 当虚拟地址空间等于物理地址空间时,我们是否需要 MMU?
MMU用于借助对应于该进程的页表将正在运行的进程的虚拟地址转换为物理地址。让我们假设虚拟地址空间等于物理地址空间的情况。在这种情况下,我们真的需要 MMU,因为我们不会遇到相同的虚拟地址空间映射到不同的物理地址的情况吗?
让我们说
我们真的需要为每个进程提供页表吗?当有多个进程时可能会出现什么问题?
为简化起见,请忽略高速缓存。