内存是用于存放数据的硬件。程序执行之前需要先放到内存中才能被cpu处理。
每一个地址对应一个存储单元,,每个存储单元根据计算机的类型(按字节编址,按字长编址)来形成存储单元的大小。
程序的运行

装入的三种方式:
1.绝对装入,在编译的时候,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。
2.静态重定位:编译连接之后的装入模块的地址都是从0开始的,指令中使用的地址,数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前的情况,将装入模块装入到内存的适当位置。装入时对地址进行重定位,将逻辑地址变换成为物理地址。

3.动态重定位:编译,连接之后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存之后,并不会立即把逻辑地址转换为物理地址,而使把地址转换推迟到程序真正要执行的时候才进行。
连接的三种方式:
1.静态连接:在程序运行之前,先将各目标模块以及他们所需的库函数连接成一个完整的可执行文件。
2.装入时动态链接:将各目标模块装入内存的时候,边装入边连接的连接方式。
3.运行时动态连接:在程序执行中需要该目标模块的时候,才对他进行连接,便于修改和更新,便于实现对目标模块的共享。
本文介绍了内存管理和程序执行的基本概念,包括程序的装入方式(绝对装入、静态重定位、动态重定位)以及连接方式(静态连接、装入时动态链接、运行时动态连接)。这些机制确保了程序在内存中的正确定位和执行。
6544





