第三章、内存管理
一、内存的基础知识
1、内存的作用
2、内存的存储单元编址
1、作用:区分程序的数据放在何处
2、存储单元的编址方式:
(1)按字节编址–>存储空间占1个字节
(2)按字编址—>存储空间占1个字
3、几个常用的数量单位(*)
举例:
题目:
4、指令的工作原理
1、工作过程
我们写的代码(进程),会被翻译成cpu能识别的指令,这些指令会告诉cpu去哪读写数据,以及这个数据该如何处理
2、工作细节
我们写的程序代码,被编译后会生成一个装入模块(如下图1),然后被装入到内存中。这就会产生地址上的问题(如在装入前,某指令的逻辑地址是1,装入后,其物理地址便成为了101,如下图2)
3、解决
如何将逻辑地址转为物理地址?
4、绝对装入
理解:在编译时,就知道了程序要存放到内存中的哪个位置,那么将直接生成绝对地址(物理地址)对应的代码
特点:只适用于单道程序环境,灵活性差
5、可重定位装入(静态重定位)
理解:在装入模块装入内存时,将逻辑地址转换为物理地址
特点:内存要在作业装入前,分配其要求的全部内存空间
? 运行期间不能再移动
? 多道批处理操作系统
6、动态运行时装入(动态重定位)
理解:通过一个重定位寄存器(存装入模块存放的起始位置),cpu运行到相应的指令位置时,装入程序再将逻辑地址改为物理地址
特点:允许程序在内存中发生移动
? 现代操作系统
7、源代码到程序的过程
理解:源代码中的一个个方法,通过编译,生成一个个目标模块(.o),一个个目标模块通过链接,生成一个装入模块(.exe),装入模块装入内存,实现运行(如下图)
分析:那么,链接有哪些方式呢?
8、三种链接方式
理解:类似于装入的三种方式(如下图)
9、内存管理的概念
1、理解:操作系统管理内存的什么呢?
2、分析:
(1)内存的分配与回收
(2)提供某技术从逻辑上对内存空间进行扩充
(3)负责程序的逻辑地址与物理地址的转换
(4)内存保护
? 理解:进程只能访问自己的内存空间
? 实现1:在cpu中设置上下限寄存器
? 实现2:通过重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器),分别记录进程的起始物理地址和最大逻辑地址
?
|