Fork me on github

内存的基础知识

什么是内存?有什么作用?

内存是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理

外存的存取速度慢,CPU读取速度快,设置能够高速存取的内存可以缓和CPU和外存之间的矛盾。

多道程序系统

是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插的运行。两个或两个以上程序在计算机系统中同处于开始和结束之间的状态。这就称为多道程序技术运行的特征:多道、宏观上并发、微观上串行。

在多道程序系统中,几个程序的数据同时放进内存,但是我们怎么区分各个程序的数据放在了什么地方呢?答案就是给内存的存储单元进行编址。每个地址对应一个存储单元。

如果计算机“按字节编址”,则每个存储单元大小为 1 字节,即 1B,即 8 个二进制位;

如果字长为 16 位的计算机“按字编址”,则每个存储单元大小为 1 个字,每个字的大小为 16 个二进制位。

如果告诉我们内存的大小,怎么求地址长度?即需要多少个二进制位才能表示相应数目的存储单元?

例如:一个电脑有4GB内存,地址长度是多少?

4GB = 4 * 2^30B = 2^32B

这么多的“格子”需要2^32个地址才能一一标识,所以地址需要用32个二进制位来表示(0~2^32-1)

进程运行的基本原理

指令的工作原理

指令的工作基于“地址”,每个地址对应一个数据的存储单元。

我们写的代码要翻译成CPU能识别的指令,这些指令会告诉CPU应该去内存的哪个地址读/写数据,这个数据应该做什么样的处理。

逻辑地址 vs 物理地址

逻辑地址 = 相对地址

物理地址 = 绝对地址

从写程序到程序运行:编辑-编译-链接-装入

image-20200729210459389

三种链接方式

  1. 静态链接
  2. 装入时动态链接
  3. 运行时动态链接

三种装入方式

也就是用三种不同的方法完成逻辑地址到物理地址的转换

  1. 绝对装入
  2. 静态重定向
  3. 动态重定向

image-20200729213459680

posted @ 2020-07-29 21:36  zjy4fun  阅读(834)  评论(0编辑  收藏  举报