庖丁解牛之内存

来源:互联网 发布:开淘宝店自己没有货 编辑:程序博客网 时间:2024/06/05 06:20

前言

对于程序员新手来说,内存时常是充满着满满的恶意的地方,它对我们来说是透明的。看不见,又摸不着,十分难以理解。这篇文章就是Lionel没事发呆的时候瞎想出来的一些东西,照搬照抄了好多东西。主要是给自己一个整理内存相关知识的空间。要是能帮到你,Lionel还是十分高兴的。

逻辑地址空间和物理地址空间

逻辑地址空间

程序经过编译后,每个目标模块都是从0号地址单元开始编址,称为该目标模块的相对地址(逻辑地址)。当连接程序将各个模块连接成一个完整的可执行程序时,连接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间。用户程序和程序员只需知道逻辑地址(写程序的时候程序员对内管理机制实际上是透明的,只要知道内存是一块从0开始的到一定地址数结束的空间就够了。),而内存管理的具体机制则是完全透明的,它们只有系统编程人员(编写操作系统的人)才会涉及。不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置。

物理地址空间

物理地址空间是指内存中物理单元的集合,他是地址转换的最终地址,进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取。(逻辑地址最后都会装换成物理地址)当装入程序将可执行程序装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位

内存的通用表示模式

计算机的内存被划分成一个一个存储单元。存储单元按一定的规律编号,每个编号就是存储单元的地址。内存一般是按照字节编址。编码的单位是字节。每一个字节就是一个基本的内存单元。

原创粉丝点击