向上扩展很容易理解,偏移为 baseAddress ~ baseAddress+Limit
但对于向下扩展,我很迷惑在以下几点:
1. 比如一个段的基地址为B,段限为Limit,那么是映射那一部分呢?B~Limit还是Limit~0xFFFF(0xFFFFFFFF)?
2. 映射过去的基地址值是什么?还是B吗?如果是B,那么对于向下扩展偏移的有效范围,倒是正确的,B+Limit为第一个字节。
3. 为什么一个进程里面会有很多个段的基地址和大小都一样呢?他们在映射的时候怎么保证映射到不同的地方? 又或者对于代码,数据和堆栈段,每次只能映射一个,需要访问别的段时要重新用段选择子加载?
初学保护模式,诸多迷惑,希望能从前辈那里多多学习!
谢谢
非常感谢张老师!我买了《软件调试》,但是发现保护模式的知识很薄弱,所以在学习保护模式,一定要把它拿下:)