请教有关段式映射方面的内容

发布于 2022-10-15 08:23:24 字数 640 浏览 28 评论 0

各位,请教一下,有关《linux情景分析》里有关对 i386CPU 的内存管理方面的内容,具体如下:

1、里面提到了一个例子,如下:

========================================
greeting()
{
        printf("hello world\n");
}

main()
{
        greeting();
}

其中反编译后(objdump),发现 greeting()的入口地址为 0x8048368.

========================================

2、当执行 “call 0x8048368” 这条指令时,按上面所说的是,(由于是 i386CPU 的缘故)CPU分析 0x8048368 这个地址时,是先进行段式映射,再进行页式映射的。对于页式映射部分,没什么问题。但对于段式映射部分,还是不太清楚,想请教一下大家(换句话说,对于0x8048368这个地址,在linux中是如何进行段式映射的?第一步干什么、第二步干什么....),谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

铜锣湾横着走 2022-10-22 08:23:24

回复 1# sherf

先顶一下

岛歌少女 2022-10-22 08:23:24

呵呵  Linux中沒使用分段的這個特性,Linux中有四個主要的段,但是都是映射到同一個地方。具體可以看《深入理解Linux內核》

江湖正好 2022-10-22 08:23:24

呵呵  Linux中沒使用分段的這個特性,Linux中有四個主要的段,但是都是映射到同一個地方。具體可以看《深入 ...
amarant 发表于 2011-04-27 20:33

分段的特性是由 i386cpu 定的(其他CPU没有),因此linux要能在i386下正常运行,则必须先分段后分页........

醉生梦死 2022-10-22 08:23:24

本帖最后由 amarant 于 2011-04-27 22:16 编辑

回复 4# sherf

    嗯,linux只象征性的分了下  你可以去看看head.S 看了就明白了

微暖i 2022-10-22 08:23:24

这么说吧,因为在linux中,用户(内核)代码(数据)断 这四个断的base全部都是0x0000 0000,所以就跟没分段一样的。

在没开启保护模式的,地址的算法是 cs * 16 + ip
开启保护模式以后就是: cs 指定段  eip 指定线性地址

未央 2022-10-22 08:23:24

各位,请教一下,有关《linux情景分析》里有关对 i386CPU 的内存管理方面的内容,具体如下:

1、里面提到 ...
sherf 发表于 2011-04-27 20:07

看下这个精华贴吧,写的应该比较清楚了:http://bbs.chinaunix.net/thread-2083672-1-1.html

同尘 2022-10-22 08:23:24

这么说吧,因为在linux中,用户(内核)代码(数据)断 这四个断的base全部都是0x0000 0000,所以就跟没分段一样的。
amarant 发表于 2011-04-27 22:08

我手头上现在没linux代码,但我记得至少权限是不一样的。

流年里的时光 2022-10-22 08:23:24

确实用了分段,但从最后的效果上来说,几乎等于没用。

悲欢浪云 2022-10-22 08:23:24

回复 8# new_learner

他说的应该是segment descriptor里七零八落的base字段,几个段的其它属性肯定有别。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文