程序员视角的计算机系统 2.1 信息存储
绝大部分的计算机并不是在内存中读取单独的比特位,而是使用8个比特位的块,叫做字节,
字节是内存中最小的有地址的存储单元。一个机器级的程序把内存视为一个字节的巨大的数组。
,作为虚拟内存来引用它。内存中的每一个字节都被唯一地标识为一个数,这是它的地址,所有
的可能的地址的集合,叫做虚拟地址空间。正如它的名称所显示的,这个虚拟地址空间仅是展示
给机器级程序的概念性的图景。实际的实现(在第9章中)使用了一个随机读取内存和磁盘存储
和特定硬件,操作系统软件的组合,来提供给程序一个似乎是整体性的庞大的字节数组。
在接下来的章节中,我们将覆盖编译器和运行时系统是如何把内存空间分割成更易于管理的单元
来存储不同的程序对象,也就是程序数据,指令,控制信息等。各种各样的机制被用来分配和
管理程序的不同的部分的存储。这样的管理都使用虚拟地址空间来执行。例如,在C中,一个
指针的值,无论它指向一个整数,一个结构,或者是一些存储的块。C编译器仍然把类型信息和
每个指针相关联,所以它能生成不同的机器级代码来读取存储在位置中的值,这个位置由指针
来指定,并且依赖于值的类型。尽管C编译器维护这个类型信息,实际的机器级别的程序没有
数据类型的信息。它简单地对待每个程序对象为一个字节的块,程序本身是一个字节的序列。