首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护模式下的x86分段有什么作用?

问保护模式下的x86分段有什么作用?
EN

Stack Overflow用户
提问于 2013-06-10 14:26:21
回答 2查看 290关注 0票数 0

我读到了x86内存分段,我想我遗漏了一些东西,线性(虚拟)地址是通过从GDT条目(基地址)中获取32位,从偏移地址中获取32位,并将它们相加得到32位虚拟地址来构建的。

现在,在我看来,32位的偏移量可以跨越所有的VA空间,所以实际上不需要使用32位的基址。因此,我得出结论,基址在转换过程中并没有真正发挥作用,这让我得出这样的结论:使用分段的内存保护(在x86保护模式下)是无用的,因为我们可以使用偏移地址本身获得具有环0特权的段的VA。(例如,跳转0x08000001 -当我们的段具有环3特权时,跳转到内核VA )

所以我们得到的所有内存保护都是基于分页的?

EN

回答 2

Stack Overflow用户

发布于 2013-06-27 23:03:42

您所观察到的32位偏移量可以跨越整个VA空间的观点是正确的。但段描述符也包括限制,因此任何超过该限制的访问使用该段将导致#GP (一般保护错误)。此外,您不能只在ring-3代码中使用ring-0段;这将首先违背ring级别的目的。

票数 0
EN

Stack Overflow用户

发布于 2014-01-16 19:04:38

段选择器和段描述符包含关于存储器段边界的数据。

描述符中不仅包含了边界,还包含了访问类型。

0到3的特权级别,越少特权越大。还有读-写-执行信息。因此,段中不同的权限级别具有不同的访问权限,是保护模式基本机制的一部分。

传统分段只是防止每个段区域的重复,否则代码段会被应用程序(或用户)的数据段或堆栈段内存污染。

最近的分段包含了更多的带有分段选择符和分段描述符的保护方法。

在启动程序之后,系统进入用户特权模式(3),然后你不能访问内核特权模式(0),除非使用rootkit,或者可能有其他方法供熟练的黑客使用。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17017971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档