linux - Linux中用户空间内存和内核空间内存如何映射到物理内存?

标签 linux memory linux-kernel

我可以猜测,这个问题可能是重复的,但为了清楚起见,我单独询问。

所以我的理解是,对于 32 位架构,我们有 4 GB 虚拟内存,其中 3 GB 用于用户空间,1 GB 用于内核空间。

所以我不明白的是,用户空间进程和内核空间之间共享相同的 1 GB 物理内存,它到底是如何工作的?

如果问题不清楚,请告诉我,我会尝试添加更多详细信息。

最佳答案

So What I understand is, for 32 bit architecture, we have 4 GB virtual memory, In which 3 GB is used for user space and 1 GB for kernel space.

对。每个进程都有 3GB 用于虚拟内存中进程特定的映射。内核有 1GB 用于虚拟映射。

So what I don't understand is, the same 1 GB physical memory is shared between user space processes and kernel space, How it works exactly?

操作系统管理所有物理内存,根据需要将其映射到内核虚拟内存或用户虚拟内存。如果进程X需要映射到虚拟地址Z的物理内存页Y,那么内核将确保进程X运行时映射到位。

关于linux - Linux中用户空间内存和内核空间内存如何映射到物理内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283128/

相关文章:

linux-kernel - 如何取消映射 spte?

linux - SWT 浏览器和 Eclipse

linux - 将带有日期的 stderr 重定向到来自 Cron 的日志文件

linux - 我如何在 ubuntu docker 中将 crontab 保存在文件中

linux - 为什么我的/proc/kallsyms文件不包含System.map中的所有符号?

c - 如何调试Linux内核的特定代码?

linux - CentOs分区顺序

c# - 为什么 MemoryStream 不提供采用 "long"容量的构造函数?

c++ - C++中未初始化的内存

c - 使用 lseek 在 C 中获取文件的大小?