内存的基础知识

本文介绍了内存管理和程序执行的基本概念,包括程序的装入方式(绝对装入、静态重定位、动态重定位)以及连接方式(静态连接、装入时动态链接、运行时动态连接)。这些机制确保了程序在内存中的正确定位和执行。

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

程序的运行
在这里插入图片描述
装入的三种方式:
1.绝对装入,在编译的时候,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。
2.静态重定位:编译连接之后的装入模块的地址都是从0开始的,指令中使用的地址,数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前的情况,将装入模块装入到内存的适当位置。装入时对地址进行重定位,将逻辑地址变换成为物理地址。在这里插入图片描述
在这里插入图片描述
3.动态重定位:编译,连接之后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存之后,并不会立即把逻辑地址转换为物理地址,而使把地址转换推迟到程序真正要执行的时候才进行。在这里插入图片描述
连接的三种方式:
1.静态连接:在程序运行之前,先将各目标模块以及他们所需的库函数连接成一个完整的可执行文件。
2.装入时动态链接:将各目标模块装入内存的时候,边装入边连接的连接方式。
3.运行时动态连接:在程序执行中需要该目标模块的时候,才对他进行连接,便于修改和更新,便于实现对目标模块的共享。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值