一、内存的基础知识
什么是内存?有何作用?
这么做的原因是,程序本来是放在外存中的,放在磁盘中的,但是磁盘的读写速度很慢,而cpu的处理速度又很快
存储单元就是存放数据的最小单元,每一个地址对应一个存储单元,而一个存储单元中能存储多少数据,要看计算机是按字节编址还是按字编址的,如果是按字节编址,一个存储单元
补充知识:几个常用的数量单位
这里的“4GB”中的“4G“其实是数量,而“B”是一个数据的单位,B指的是“字节”Byte,b指的是“一个比特位”bit
知识滚雪球:指令的工作原理
假设程序的装入模块装入内存时并不是从地址为0的地方开始的,而是从地址为100的地方开始,这就意味着操作系统给这个程序分配的地址空间其实是100~279。所以如果是这种情况的话,程序的逻辑地址和它最终存放的物理地址就会出现对应不上的情况
所以在这个小节中我们将介绍三种策略来解决地址转换的问题
装入的三种方式——绝对装入
装入的三种方式——可重定位装入
装入的三种方式——动态运行时装入
装入的三种方式——动态重定位
在之后学习了“虚拟存储管理”之后,就可以对这个特性有更深入的理解了
从写程序到程序运行
刚才介绍的三种装入策略可以实现 逻辑地址 到 物理地址 的转换
接下来介绍的是三种链接的方式
链接的三种方式
知识回顾与重要考点
二、内存管理的概念
内存空间的分配与回收
内存空间的扩展
地址转换
为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换(这个过程称为地址重定位(三种装入方式))应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况。
内存保护
- 操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰
方法一:
方法二:
重定位寄存器(就是上小节中的)即 在动态运行时装入这种方式中,设置一个重定位寄存器来记录每一个进程的起始物理地址
知识回顾与重要考点
三、覆盖与交换(大纲删除?)
知识总览
覆盖技术
如果程序有一个明显的调用结构
注意这里B和C不可能同时被调用,也就是说在同一个时间段内,内存中要么有B有么有C即可,不需要同时存在B和C,所以B和C共享一个覆盖区
交换技术
对换区的速度,或者说输入输出的速度,是要比文件区更快的。所以我们的进程数据被换出时,一般是放在对换区,换入的时候也是从对换区换到内存
PCB会常驻内存,不会被换出外存:所以其实所谓的换出进程,并不是把进程相关的所有的数据一个不漏的全部调到外存里,操作系统为了保持对这些换出进程的管理,那PCB这个信息还是需要放在内存中)