存储器的结构,程序的装入

来源:互联网 发布:上海猎头公司 知乎 编辑:程序博客网 时间:2024/06/06 07:35

存储器的结构

1.对于通用的计算机,存储层次结构至少有三级:最高层CPU寄存器,中间是主存,最底层是辅存。
在较高档次的计算机中,还可以具体细分为:CPU寄存器(寄存器),主存(高速缓存,主存储器,磁盘缓存),辅存(固定磁盘,可移动存储介质)。
2.可移动存储器:在计算机系统的存储层次中,寄存器和主存储器又被称为可执行存储器。对于存放于其中的信息,于存放于辅存中的信息相比较而言,计算机所采用的访问机制是不同的,所需耗费的时间也是不同的。进程可以在很少的时钟周期内使用一条load或store指令对可执行存储器进行访问。但对辅存的访问则需要通过I/O设备实现,因此,在访问中将涉及到中断,设备驱动程序以及物理设备的运行,所需耗费的时间远远高于访问可执行存储器的时间,一般相差3个数量级甚至更多。
3.主存储器(RAM),简称内存或主存,是计算机系统中的主要部件,用于保存进程运行是的程序和数据,也可称为可执行存储器。
由于主存储器访问速度低于CPU执行指令的速度,引入了寄存器和高速缓存(Cache)
总体而言,速度由高到底是:寄存器,高速缓存,主存储器。

程序的装入和链接

1.用户程序要在系统中运行,必须先将它装入内存,然后再将其转变成一个可以执行的程序。
三个步骤:
(1)编译:由编译 程序对用户源程序进行编译,形成若干个目标模块;
(2)链接:由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块。
(3)装入:由装入程序将装入模块装入内存。

2.程序的装入
有以下三种方式:
(1)绝对装入方式:当计算机系统很小,且仅能运行单道程序时,完全有可能知道程序将驻留在内存的什么位置。也就是说:用户程序经过编译后,将产生绝对地址(物理地址)的目标代码。 所以,装入模块在被装入内存后,由于程序中的相对地址(即逻辑地址)与实际地址完全相同,因此不需要对程序和数据进行修改。
(2)可重定位装入方式:在多道程序环境下,编译程序不可能预知经编译后 得到的目标模块应该放在内存的何处。所以,采用可重定位装入方式将装入模块装入内存后,会时装入模块中所有的逻辑地址与实际装入内存后的物理地址不同。
(3)动态运行时的装入方式:可重定位装入方式可将装入模块装入到任何允许的位置,故可以用于多道程序的环境中。
动态运行是的装入程序在把装入模块装入内存后,并不立即把装入模块中的逻辑地址转换成物理地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后所有地址仍是逻辑地址。此外,为了使地址转换不影响指令的执行速度,这种方式需要一个重定位寄存器的支持。

3.程序的链接
有下面三种方式:L
(1)静态链接方式:在程序运行之前,先将个目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开。同时需要解决两个问题:第一个是 对相对地址进行修改。因为由编译程序所产生的所有目标模块中,使用的都是相对地址,起始都是0,所以需要进行相应的变换。第二个是 变换外部调用的符号。也就是将每个模块中所调用的外部符号换成的相对地址。
(2)装入时动态链接:所谓的是,将用户源程序所得到的一组模块,在装入内存时,采用边装入边链接的方式。
(3)运行时动态链接:将对某个模块的链接推迟到程序执行的时候再去进行。即,在执行过程中,当发现一个被调用的模块尚未装入内存时,立即由OS去找到相应的模块,并将它装入内存中。由此,每次是找对应的模块,大大提高了程序的装入速度。

0 0
原创粉丝点击