linux-kernel - 如果我的系统上安装了 512 MB 的物理内存,Linux 内核如何处理内存映射
问题描述
如果我的系统上仅安装了 512 MB 的物理内存,Linux 内核如何处理内存映射。
内核将0(或16)MB-896MB物理RAM映射到0xC0000000线性地址,可以直接寻址。那么,当我只有 512 MB 的 RAM 时会发生什么?
内核如何将 896 MB 从 512 MB 映射到 896 MB?内核进行了设置,以便每个进程的页表将虚拟地址从 0xC0000000 直接映射到 0xFFFFFFFF (1GB) 到物理地址从 0x00000000 到 0x3FFFFFFF (1GB)。但是当我只有 512 MB 物理 RAM 时,如何将虚拟地址从 0xC0000000-0xFFFFFFFF 映射到物理 0x00000000-0x3FFFFFFF ?重点是我的物理范围只有 0x00000000-0x20000000。由于内核页面无法换出,用户进程如何获得使用物理内存的机会?
解决方案
推荐阅读
- php - php登录表单中的错误使用准备好的语句
- java - 错误 java.lang.NumberFormatException:对于输入字符串,程序崩溃
- c# - 将 JSON 转换为基于另一个属性的对象
- javascript - 需要表单和数据验证方面的帮助
- asp.net-core - 在 ASP.NET 中重定向到子创建页面的最惯用的方法是什么?
- javascript - 不能调用子窗口函数
- python - 颜色设置不适用于图形绘制
- python - 如何从单独的线程(asyncio)使用高速公路 sendmessage()?
- django - 如何创建独立于 Django 服务器的 kafka 消费者
- ios - ios中的cordova'admob free'-应用程序运行时出现异常