什么是内存?有什么作用?
内存是用于存放数据的硬件。程序执行前需要先放到内存中才能被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 物理地址
逻辑地址 = 相对地址
物理地址 = 绝对地址
从写程序到程序运行:编辑-编译-链接-装入
三种链接方式
- 静态链接
- 装入时动态链接
- 运行时动态链接
三种装入方式
也就是用三种不同的方法完成逻辑地址到物理地址的转换
- 绝对装入
- 静态重定向
- 动态重定向