ts0612 发表于 2009-07-12 02:05

有关 Intel手册—卷3

请教一下各位,

在《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 编辑 ]

ts0612 发表于 2009-07-12 02:07

回复 #1 ts0612 的帖子

先顶一下

beepbug 发表于 2009-07-12 05:55

原帖由 ts0612 于 2009-7-12 02:05 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
栈段还好理解,关键是代码段和数据段里面的信息就不会重叠覆盖吗?
编译后数据区(DATA区与BSS区)所占空间大小就已确定,以后每次装载时都是这么大一块,跟在进程头后面。刘谦说:接下来是代码TEXT区。因此不会重叠。

emmoblin 发表于 2009-07-12 10:47

保护模式是不是还要有个硬件的什么寄存器来进行保护的?

ts0612 发表于 2009-07-12 21:07

回复 #3 beepbug 的帖子

beepbug,

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

beepbug 发表于 2009-07-13 06:18

原帖由 ts0612 于 2009-7-12 21:07 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
beepbug,

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

mik 发表于 2009-07-15 22:45

原帖由 ts0612 于 2009-7-12 21:07 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
beepbug,

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

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



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

beepbug 发表于 2009-07-16 05:24

原帖由 mik 于 2009-7-15 22:45 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
别指望他能讲得详细,不扯就算好了。
我也懒得讲:看置顶的贴子
还是这德性。这里的版主多数是这德性。
啥叫扯?你这种话才是扯。
在版块上置顶几个帖,就自以为是权威了。别人跟帖,就上来围攻。
BBS就是几个“权威”霸着,让别人朝你们烧香拜佛?
前几天哪个傻版主丢的脸,还不够你们引以为戒嘛?非要前仆后继?
CU是哪儿找来的这帮子傻瓜?啥叫BBS也不懂,就来当版主。

beepbug 发表于 2009-07-16 05:27

这一大堆置顶有啥用?指令系统要你讲什么?都有书的。我不看原版马列,还看你这假马列的?

mik 发表于 2009-07-16 13:09

原帖由 beepbug 于 2009-7-16 05:24 发表 http://linux.chinaunix.net/bbs/images/common/back.gif

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

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

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


你以版主是啥?
页: [1] 2
查看完整版本: 有关 Intel手册—卷3