段的引入是解决“ 地址总线的宽度一般要大于寄存器的宽度 ”这个问题。

8086的分段寻址,是指一个物理地址由段地址(segment selector)与偏移量(offset)两部分组成,长度各是16比特。其中段地址左移4位(即乘以16)与偏移量相加即为物理地址。例如,06EFh:1234h,表示段地址为06EFh,偏移量为1234h,物理地址为06EF0h + 1234h = 08124h。在计算物理地址时如果发生上溢出,8086处理器舍弃进位。例如,FFFFh:0010h所对应的物理地址为00000h.

实模式: 是 段地址+偏移量 的方式,得到物理地址,进而寻址。

保护模式: 不允许通过段寄存器取值得到段的起始地址,而是把虚拟地址转进一个 MMU 的硬件,经过额外的转换和检查,进而得到一个物理地址。

段机制抛开了实际物理内存的大小,从抽象层面提供给开发人员更大的线性空间进行程序开发。但物理内存如果不足时的情况仍需解决。

它通过将 物理内存空间 和 线性地址空间 分成若干相等的页。(一般都为4KB)。这样整个程序就不需要连续存放在物理内存中,更可以按需把页面调进内存,而不需要把整个线性地址空间加载到内存中。正如你将会看到的,这种机制十分巧妙又实用。

 参考资料:http://www.jianshu.com/p/f4a909f3fd2e

posted on 2015-07-13 22:16  J博士  阅读(1341)  评论(0编辑  收藏  举报