大多数计算机用字节(8位)作为内存中最小的存储单元,而不是位。机器级的程序把内存看着一个非常巨大的字节数组,这个数组被称为虚拟内存。内存中的每一个字节都被唯一的一个数字标识,这个数字就是这个字节的地址,所有可能的地址的集合被称为虚拟地址空间。顾名思义,虚拟地址空间只是呈现给机器级程序的概念视图。实际的实现(在第九章讨论)使用随机访问存储器(RAM),磁盘存储器,特殊硬件,和创作系统软件的组合来提供给程序一个字节数组的视图。
在接下来的章节中,我们将讨论编译器和运行时系统是如何把内存空间分解成更多可管理的单元来存储不同的程序对象,例如,程序数据,指令和控制信息。不同的机制被用来为程序的不同部分分配和管理存储空间。这些管理行为在虚拟地址空间内被执行。例如,C语言中指针的值——它指向一个整数,结构体或者其它程序对象——是存储块的第一字节的虚拟地址。C编译器利用指针和相应的类型信息工作,以至于它能根据类型信息产生不同的机器级代码来访问指针指向的地址中存储的值。尽管C编译器维护着类型信息,它产生的机器级程序却没有这些信息。程序只是简单地把程序对象看作字节块,把自己看作字节序列。
深入理解计算机系统 2.1 信息存储
最新推荐文章于 2021-07-19 19:05:29 发布