x86架构上Linux内核的默认内存页大小是4KB,我想知道这是如何计算的,为什么?

推荐答案

默认页面大小由CPU的MMU(内存管理单元)支持的内容固定.在32位保护模式下,x86支持两种页面:

  • 正常的4千磅
  • 巨大的,4个MiB

并非所有x86处理器都支持大页面.需要一个具有页面大小扩展(PSE)功能的CPU.这不包括奔腾之前的处理器.几乎所有当前一代x86 CPU都实现了它.

4KIB在其他体系 struct 中也广泛使用UPLAR页面粒度.有人可能会说,这种大小来自于将32位虚拟地址划分为页面目录/表中的两个10位索引,剩下的12位给出了4kib的页面大小.

Linux相关问答推荐

Linux内核中维护进程无关寄存器失败

Arch_prctl的用例是什么

Bash:将带有新行的字符串转换为带有逗号、内联的唯一值的字符串

需要获取文件名、行号、模式在文件中的匹配位置

如何将一个变量的 2 行添加到另一个变量的特定行?

在服务器目录之外启动 DolphinDB 服务器时出错

Linux上Kvaser数据库编辑器的等效工具

当接收端未从套接字读取时,通过 Unix 套接字发送的消息会发生什么情况?

如何使用 GDB 和 QEMU 调试 Linux 内核?

Eclipse 的 C# 插件

使用正则表达式时,Shell 'tar: not found in archive' 错误

通过 Linux FrameBuffer 将像素绘制到屏幕上

Linux中没有X.org的OpenGL

为什么 Linux 不通过 TSS 使用硬件上下文切换?

你如何在 C 中的 Linux 上进行非阻塞控制台 I/O?

如何从任意 pthread_t 获取线程 ID?

Shell 脚本, echo 消息后在同一行读取

什么是 linux 脚本中的 start-stop-daemon?

通过 linux x86-64 函数调用保留了哪些寄存器

内联 if shell 脚本