内存基础知识
- 内存是用于存放数据的硬件,因为CPU和IO之间存在速度差,所以需要一个缓冲区
- 内存如何分布
- 内存地址:每个地址对应一个存储单元,会根据内存大小算出存储单元数量,从而计算地址表达需要的位数(4GB,按字节编址,即需要2^32个存储单元,所以地址长32位)
- 存储单元:存放数据的“小房间”。“按字节编址”--1B一个格子;“按字编址”--1Byte一个格子
指令基础知识
- 指令是进程运行的原理,存放在进程的程序段中
- 指令(我们写的代码)需要编译成机器码,编译生成的指令使用的是逻辑地址(相对地址)
逻辑地址与物理地址区别:
- 逻辑地址是相对的,于当前进程的起始位置的相对值
- 物理地址是绝对的,于0位置的相对值
从写程序到程序运行过程
![d8d9a8feec8f713f3817073653cd1639.png](https://img-blog.csdnimg.cn/img_convert/d8d9a8feec8f713f3817073653cd1639.png)
- 编辑源代码文件
- 编译:由编译程序将用户源代码编译成若干个目标模块(高级语言翻译成机器语言)
- 链接:将目标模块以及所需库函数链接在一起,形成一个完整的装入模块
- 装入:由装入程序将装入模块装入内存运行。把逻辑地址转换到物理地址
绝对装入--程序编译时--单道程序阶段,此时还没产生操作系统(什么都要自己做)
- 编译阶段直接产生绝对地址的目标代码。装入程序按照装入模块的地址,将程序和数据装入内存。
- 绝对装入只适用于单程序环境,因为只有单进程的机子,每个程序需要在什么位置可以提前设置。
静态重定位/可重定位装入--程序装入内存时---早期的多道批处理系统