gpt4 book ai didi

linux - linux 内核使用哪种类型的内存模型(即平面/分段)?

转载 作者:太空宇宙 更新时间:2023-11-04 09:24:53 26 4
gpt4 key购买 nike

我正在阅读有关 x86 保护模式工作的信息,因为我已经看到了平面内存模型和分段内存模型。

如果 linux 内核使用平面内存模型,那么它如何保护非特权应用程序对关键数据的访问?

最佳答案

Linux 通常两者都不用。在 x86 上,Linux 为用户空间进程和内核提供了单独的页表。用户空间页表不包含用户到内核内存的映射,这使得用户空间进程无法直接访问内核内存。

从技术上讲,x86 上的“虚拟地址”首先通过分段(并从逻辑地址转换为线性地址),然后通过页表从线性地址重新映射到物理地址。除特殊情况外,分段不会更改 64 位模式下生成的物理地址(分段仅用于存储当前特权级别等特征,并强制执行 SMEP 等功能)。

一个众所周知的“异常情况”是大多数编译器在 x86 上实现的线程本地存储,它使用 FS 和 GS 段来定义地址空间中每个逻辑处理器的偏移量。其他段不能有非零基,因此不能通过分段移动地址。

关于linux - linux 内核使用哪种类型的内存模型(即平面/分段)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559282/

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