gpt4 book ai didi

x86 - 一个OS "deal in"虚拟地址和物理地址怎么算

转载 作者:行者123 更新时间:2023-12-04 01:57:02 25 4
gpt4 key购买 nike

据我了解 Intel® 64 and IA-32 ArchitecturesSoftware Developer’s ManualVolume 3 (3A, 3B, 3C & 3D):System Programming Guide , 分页是在每个内核的基础上启用的:关闭或打开。

因此,操作系统如何“处理”物理地址?最直接的是,它将如何管理页表结构和关联的页框?

我能想到的两件事:

  • 操作系统实际上会禁用分页来执行这些类型的任务,然后重新启用它。
  • 操作系统会在启动期间和启用分页之前,将一部分线性地址直接映射到物理地址。

最佳答案

大多数操作系统将所有物理内存映射到一个虚拟地址范围,仅使用内核映射。例如https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt是Linux的内存映射。

请注意高达 64TB 的“直接映射”区域。如果您知道物理地址,则可以访问内核虚拟地址空间中的 0xffff880000000000 + phys_addr

Linux 使用 1G 的大页面进行直接映射,因此 TLB 未命中的情况很少见。


当没有足够的虚拟地址空间来轻松地将所有物理 RAM 映射到虚拟地址空间的一部分时,事情会变得复杂,例如 32 位内存超过 2GiB。然后内核必须将物理 RAM 的一部分视为不能直接用于某些事情(例如页表)的“highmem”。

关于x86 - 一个OS "deal in"虚拟地址和物理地址怎么算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com