分页和分段的目的是什么
1个回答
关注
展开全部
亲,你好哦,关于分页和分段的目的是什么为什么要分段?分段要基于物理硬件的历史来说在8086处理器出来以前都是直接访问物理地址,当两个程序分配到同一个内存块是不行的,只能运行一个程序而8086是一个16位处理器,地址总线有20位2^16 =64kb无法映射到 2^20=1M的物理空间所以采用了分段,两个16位寄存器,分别为段基址和段偏移让CPU通过【段基址+段偏移】来访问物理内存然后可能会问16位基址如何映射到20位呢?他是通过段基址左移4位(基址*16倍变为20位)来映射如要访问(0x05801)的内存 就是通过(0x0058)左移4位+(0x0001)获得0x0580+0x0001=0x00581为什么要分页?分页是在分段后的一段时间出的是为了解决分段粒度大,因为段需要整段的加载进内存以及整段换出,造成内存碎片大,不易于管理,虽然可以通过将段置换出磁盘再加载的方式减少碎片,但是效率实在太低分页管理通过划分物理空间为一块块固定大小的页与之对应,能够将程序分割成一页一页加载进内存,提升了内存的利用率3.
咨询记录 · 回答于2022-11-27
分页和分段的目的是什么
亲,你好哦,关于分页和分段的目的是什么为什么要分段?分段要基于物理硬件的历史来说在8086处理器出来以前都是直接访问物理地址,当两个程序分配到同一个内存块是不行的,只能运行一个程序而8086是一个16位处理器,地址总线有20位2^16 =64kb无法映射到 2^20=1M的物理空间所以采用了分段,两个16位寄存器,分别为段基址和段偏移让CPU通过【段基址+段偏移】来访问物理内存然后可能会问16位基址如何映射到20位呢?他是通过段基址左移4位(基址*16倍变为20位)来映射如要访问(0x05801)的内存 就是通过(0x0058)左移4位+(0x0001)获得0x0580+0x0001=0x00581为什么要分页?分页是在分段后的一段时间出的是为了解决分段粒度大,因为段需要整段的加载进内存以及整段换出,造成内存碎片大,不易于管理,虽然可以通过将段置换出磁盘再加载的方式减少碎片,但是效率实在太低分页管理通过划分物理空间为一块块固定大小的页与之对应,能够将程序分割成一页一页加载进内存,提升了内存的利用率3.
分页和分段的主要区别 页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位