3.5.4 分离的指令空间和数据空间

大多数计算机只有一个地址空间,既存放程序也存放数据,如图3-25a所示。如果地址空间足够大,那么一切都好。然而,地址空间通常太小了,这就使得程序员对地址空间的使用出现困难。

阅读 ‧ 电子书库
图 3-25 a)单个地址空间;b)分离的I空间和D空间

首先在PDP-11(16位)上实现的一种解决方案是,为指令(程序正文)和数据设置分离的地址空间,分别称为I空间和D空间,如图3-25b所示。每个地址空间都从0开始到某个最大值,比较有代表性的是216 -1或者232 -1。链接器必须知道何时使用分离的I空间和D空间,因为当使用它们时,数据被重定位到虚拟地址0,而不是在程序之后开始。

在使用这种设计的计算机中,两种地址空间都可以进行分页,而且互相独立。它们分别有自己的页表,分别完成虚拟页面到物理页框的映射。当硬件进行取指令操作时,它知道要使用I空间和I空间页表。类似地,对数据的访问必须通过D空间页表。除了这一区别,拥有分离的I空间和D空间不会引入任何复杂的设计,而且它还能使可用的地址空间加倍。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元