1、内存使用历程
对于内存的使用和管理经历了已下几个阶段:
1.1早期的内存使用
在计算机使用的早期,程序是直接运行在物理内存上的,程序运行时访问的地址就是实际的内存物理地址,这种方式存在以下几个缺点:
- 地址空间不隔离 所有程序都直接访问物理地址,程序所使用的的内存空间不是相互隔离的,恶意程序可以很容易的访问其他程序的物理内存空间以达到破坏的目的,而且即便没有恶意的程序,如果同时运行在计算机上的几个程序,其中一个有bug,有可能会影响到其他程序的运行。
- 内存使用效率低 由于没有有效的内存管理机制,程序运行时需要将整个程序都加载到内存中,而有些模块可能在整个程序的运行中都有可能执行不到,如调试模块,造成内存空间的浪费,而且如果当前程序已将内存空间占满,如果新的程序需要运行,则必须将新的程序数据暂时写到磁盘中,等到足够多的的内存空间释放后才能加载进来。整个过程中有大量的数据换入换出,导致效率很低
- 程序运行地址不确定 程序每次运行时在内存中加载的地址是不确定的,因此访问数据和指令跳转的目标地址是不确定的,这给程序编写带来了麻烦,因为有重定位问题
1.2分段
分段的基本思想就是将一段与程序运行所需要的虚拟空间映射到物理空间,映射过程由软件设置,比方说操作系统,具体的地址转换工作由硬件来完成,这样就解决了上述问题的第一个(隔离)和第三个(重定位),第二个问题依然没有解决,因为分段对内存区域的映射是以程序为单位的,如果内存不足,被换入