链接--地址重定位

什么叫做重定位?
 
 
 

以上内容来自:张不同的《计算机操作系统教程》

 

 

6.1 存储器的基本概念

       主存储器管理仍然是今天操作系统十分重要的内容;能否合理而有效的使用主存,在很大成度上反映了操作系统的性能,并直接影响到整个计算机系统作用的发挥。

6.1.1 存储器的层次

      目前在许多计算机系统中,采用三级存储器结构,即高速缓冲存储器、主存储器和外部存储器。

三级存储器的比较

     从高速缓存到外存,其容量愈来愈大,一般每级之间相差几个数量级。而访问数据的速度则愈来愈慢,价格也愈来愈便宜。

6.1.2 地址重定位

    为了弄清什么是重定位,我们首先介绍相对地址、绝对地址和逻辑地址空间、存储空间的概念。

1.逻辑地址空间

名空间

       用户在编程或编辑源程序时,不考虑作业之间的存储空间分配,而是将其源程序存于程序员建立的符号名字空间(简称名空间)内,如图6-1(a)所示。

逻辑地址空间

      当对源程序进行编译时,编译后一个目标程序所限定的地址范围称为该作业的逻辑地址空间。

图6-1 名空间、地址空间和存储空间

如图6-1(b)所示。

2.物理空间

       所谓物理空间(也称存储空间)是指主存中物理单元的集合。这些单元的编号称为物理地址或绝对地址。因此,物理空间的大小,是由主存的实际容量决定的。如图6-1(c)。

3.地址重定位

需要地址重定位的例子

        如图6-2(a)是一个简单的程序段。第一条指令是把数据A取到1号寄存器中,第二条指令是把数据B同1号寄存中的内容相加,结果放在1号寄存器中,第三 条指令是把1号寄存器的内容送入相对地址10中去。如果这个程序原封不动地装入主存自100号单元起的存储区中(如图6-2(b)),就无法正确执行。

地址重定位

       由于一个作业装入到与其地址空间不一致的存储空间所引起的,对有关地址部分的调整过程称为地址的重定位。这个调整过程就是把作业地址空间中使用的逻辑地址变换成主存中物理地址的过程。这种地址变换也称为地址映射.

图6-2 程序装入举例

4.重定位类型

     根据对地址变换进行的时间及采用的技术手段的不同,可把地址重定位分为静态重定位和动态重定位两类。

静态重定位

(1)含义

     静态重定位是在程序运行之前由装配程序完成的。例图5-2(a)中的情况,只需将与地址有关的项都加上100就可以了,见图5-2(c)。

(2)优点

    它的主要优点是,无需增加硬件地址变换机构,因而可在一般计算机上实现。

(3)缺点

    主要缺点有:
       ①要求给每个作业分配一个连续的存储空间,且在作业的整个执行期间不能再移动,因而也就不能实现重新分配主存。
       ②用户必须事先确定所需的存储量,若所需的存储量超过可用存储空间时,用户必须考虑覆盖结构。
       ③用户之间难以共享主存中的同一程序副本。

动态重定位

(1)含义

       动态重定位是在程序执行过程中由硬件地址变换机构实现的。

(2)例子

        最简单的办法是利用一个重定位寄存器。该寄存器的值由调度程序根据作业分配到的存储空间的起始地址来设定。在具有这种地址变换机构的计算机系统中,当作业 执行时,不是根据CPU给出的逻辑地址去访问主存,而是将逻辑地址与重定位寄存器中的内容相加后得到的地址作为访问主存的地址。其地址变换过程

如图6-3所示 重定位类型

图6-3 动态重定位 (见上节的动态重定向示意图)

(3)动态重定位的主要优点有:

        ①用户作业不要求分配连续的存储空间。
        ②用户作业在执行过程中,可以动态申请存储空间和在主存中移动。
        ③有利于程序段的共享。

(4)动态重定位的主要缺点有:

       ①需要附加的硬件支持。
       ②实现存储管理的软件算法比较复杂。

 

你可能感兴趣的:(x86架构/汇编/链接)