为什么分页机制中逻辑地址空间是一维的,而分段机制中逻辑地址空间是二维的?

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/yangkuiwu/article/details/53493458

首先回顾一下分页机制中逻辑地址的结构:页号:页内偏移量

再来回顾一下分段机制中逻辑地址的结构:段号:段内偏移量

 

针对上面的问题,老羊快跑这里给大家简单解释一下。

假设有一段程序,在没有采用分段机制的时候(采用分页机制),这段程序会被编译成一大段机器指令,这些指令之间地址是连续的。如下图:


从图中我们可以看出逻辑地址空间如果采用分页机制,那么第0页的最后一个地址和第1页的第一个地址在数值上是连续的。因此分页机制的逻辑地址空间是一维的。

 

相对应的如果采用分段机制,那么这段程序就会被编译程序编译成多个段,比如数据段、代码段、附加段等,每个段的段号是编译器自动分配的,每个段的长度不定(一般最长64k)。如下图所示。从下图中我们可以看到,由于每个段的长度不一,因此虽然数据段、代码段的段号是连续的,但是数据段的最后一个地址和代码段的第一个地址是不连续,因此分段机制中的地址不是一维的,而是二维的。



欢迎关注老羊快跑公众号。一个操作系统考试、考研的公众号。

没有更多推荐了,返回首页