在操作系统还没有出现之前,程序存放在纸带上,计算机读取一张纸带就运行一条指令,这种从外部存储介质上直接运行指令的方法效率很低。
后来出现了内存存储器,也就是说,程序要运行,首先要加载,然后执行,这就是所谓的
“存储的程序”。这一概念开启了操作系统快速发展的同道,直至后来出现了分页机制。
在这个演变的历史过程中,出现了不少内存管理的机制。
简单地说,存就是一个数据货架。内存有一个最小的存储单位,大多数都是一个字节。内存用内存地址(memory address)来为每个字节的数据顺序编号。因此,内存地址说明了数据在内存中的位置。内存地址从0开始,每次增加1。这种线性增加的存储器地址称为线性地址(linear address)。为了方便,我们用十六进制数来表示内存地址,比如0x00000003、0x1A010CB0。这里的“0x”用来表示十六进制。“0x”后面跟着的,就是作为内存地址的十六进制数。
内存地址的编号有上限。地址空间的范围和地址总线(address bus)的位数直接相关。CPU通过地址总线来向内存说明想要存取数据的地址。以英特尔32位的80386型CPU为例,这款CPU有32个针脚可以传输地址信息。每个针脚对应了一位。如果针脚上是高电压,那么这一位是1。如果是低电压,那么这一位是0。32位的电压高低信息通过地址总线传到内存的32个针脚&#x