免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3694 | 回复: 11
打印 上一主题 下一主题

有关 Intel手册—卷3 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-12 02:05 |只看该作者 |倒序浏览
请教一下各位,

在《IA-32 Intel体系架构软件开发手册——卷3》(No:245472)中第3节 protected mode memory management 中的 3.2 Using Segments,提到的有关“basic flat model”和“protected flat model”该如何理解?

-------------------------------------------
本人的理解如下:
-------------------------------------------

一、basic flat model

32位保护模式CPU可定址的线性地址空间是:0~4GB。在 basic flat model 下,所有的段描述符都设置成段基址为0,段界限为4GB。也就是所有的段都共用同一个4GB的线性地址空间。

这里就有个疑问,假设有3个段,代码段、数据段和栈段。

1、在实模式下,我们可以用:
mov ax, cs
mov ds, ax
mov ss, ax
mov sp, 100h
....

这里3个段可以共用一段连续的线性地址空间,这是因为数据段是从上往下生长,栈段是从下往生长,而该汇编文件编译后代码段和数据段的起始地址是不同的,数据段会“自动靠前一些”(印象中是这样的),因此不会存在数据重叠或覆盖。

2、在保护模式下的basic flat model
代码段、数据段、栈段的描述符都设置成段基址为0,段界限为4GB,栈段还好理解,关键是代码段和数据段里面的信息就不会重叠覆盖吗?


二、protected flat model

32位保护模式CPU可定址的线性地址空间是:0~4GB。在 protected flat model下,所有的段描述符都设置成不同的段基址为和段界限(段界限可以相同,所有的段界限的总和应<=4GB),从而保证所有的段都存在于一个4GB的线性地址空间内,但各自由于起始地址的不同互不干扰。是这样理解吗?

[ 本帖最后由 ts0612 于 2009-7-12 02:06 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-12 02:07 |只看该作者

回复 #1 ts0612 的帖子

先顶一下

论坛徽章:
0
3 [报告]
发表于 2009-07-12 05:55 |只看该作者
原帖由 ts0612 于 2009-7-12 02:05 发表
栈段还好理解,关键是代码段和数据段里面的信息就不会重叠覆盖吗?

编译后数据区(DATA区与BSS区)所占空间大小就已确定,以后每次装载时都是这么大一块,跟在进程头后面。刘谦说:接下来是代码TEXT区。因此不会重叠。

论坛徽章:
0
4 [报告]
发表于 2009-07-12 10:47 |只看该作者
保护模式是不是还要有个硬件的什么寄存器来进行保护的?

论坛徽章:
0
5 [报告]
发表于 2009-07-12 21:07 |只看该作者

回复 #3 beepbug 的帖子

beepbug,

能说得详细点吗........

论坛徽章:
0
6 [报告]
发表于 2009-07-13 06:18 |只看该作者
原帖由 ts0612 于 2009-7-12 21:07 发表
beepbug,

能说得详细点吗........

对不起,这个如果说详细了,就是几本书:系统是如何管理内存的?程序的装载与进程的形成等等。我先说说最可能引起误解的一点吧。
要分清虚存与实存
操作系统管理着整个物理内存。它自己要占一块(包括底层驱动程序等),再划分一块做swap,剩下的,就等着分配给各个进程。这是实存。
在多任务系统里,每个进程“占”的是虚存空间(IA-32等CPU都是4GB)。这件4GB是虚的。没分配的空间不占实存。已分配的,可能立即占实存,也可能等实际使用时才真正占。
一个进程创建时,进程头、BSS区、DATA区、TEXT区已被分配,大小也已确定,不可能重叠。这是静态分配。除了BSS区,都已在进程创建分配虚存时同时分配了实存。只有BSS区,要等你实际访问时才真正分配实存。早期系统为节省内存,全是这样做的。栈区是自上向下生长的,相应的实存分配叫栈分配,也是一种动态分配(另一种是堆分配)。你要用多少栈区,我给分配多少实存。有多余页了,我就回收。
虚存是虚的,是进程私有的,有没有相应的实空间,不一定。
实存是实的,一台机器就一块,大家合着用,系统管分配。

论坛徽章:
0
7 [报告]
发表于 2009-07-15 22:45 |只看该作者
原帖由 ts0612 于 2009-7-12 21:07 发表
beepbug,

能说得详细点吗........


别指望他能讲得详细,不扯就算好了。



我也懒得讲:看置顶的贴子

论坛徽章:
0
8 [报告]
发表于 2009-07-16 05:24 |只看该作者
原帖由 mik 于 2009-7-15 22:45 发表
别指望他能讲得详细,不扯就算好了。
我也懒得讲:看置顶的贴子

还是这德性。这里的版主多数是这德性。
啥叫扯?你这种话才是扯。
在版块上置顶几个帖,就自以为是权威了。别人跟帖,就上来围攻。
BBS就是几个“权威”霸着,让别人朝你们烧香拜佛?
前几天哪个傻版主丢的脸,还不够你们引以为戒嘛?非要前仆后继?
CU是哪儿找来的这帮子傻瓜?啥叫BBS也不懂,就来当版主。

论坛徽章:
0
9 [报告]
发表于 2009-07-16 05:27 |只看该作者
这一大堆置顶有啥用?指令系统要你讲什么?都有书的。我不看原版马列,还看你这假马列的?

论坛徽章:
0
10 [报告]
发表于 2009-07-16 13:09 |只看该作者
原帖由 beepbug 于 2009-7-16 05:24 发表

还是这德性。这里的版主多数是这德性。
啥叫扯?你这种话才是扯。
在版块上置顶几个帖,就自以为是权威了。别人跟帖,就上来围攻。
BBS就是几个“权威”霸着,让别人朝你们烧香拜佛?
前几天哪个傻版主丢 ...

能不能象个爷样?

这么大的怨气,整个怨妇样!

你来申请呀,有人支持你,我一定申请退位给你。咱个爷们,说到做到。


你以版主是啥?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP