内存管理的概念
内存管理需要实现以下功能:
- 内存空间的分配与回收
- 内存空间的扩充
- 地址转换
- 内存保护
内存空间的分配与回收
存储管理方式随着操作系统的发展而发展,在操作系统由单道向多道发展时,存储管理方式便由单一连续分配发展为固定分区分配;为了能更好地适应不同大小的程序要求,又从固定分区分配发展到动态分区分配;为了更好地提高内存的利用率,进而从连续分配方式发展到离散分配方式一一页式存储管理
引入分段存储管理的目的,主要是为了满足用户在编程和使用方面的要求,其中某些要求是其他几种存储管理方式难以满足的
操作系统作为系统资源的管理者,当然也需要对内存进行管理,包括:
① 记录哪些内存区域已经被分配出去,哪些又还空闲
② 合理分配进程存放空间
③ 进程结束之后将进程占用的内存空间回收
内存空间的扩充
操作系统需要提供某种技术从逻辑上对内存空间进行扩充(操作系统的虚拟性)
【例】某游戏大小超过 60GB,按理来说这个游戏程序运行之前需要把 60GB 数据全部放入内存,然而某电脑的内存仅有 4GB ,但是这个游戏依然可以在该电脑上顺利运行,这就是利用了操作系统的虚拟性,采用虚拟技术实现(在这里了解即可,在【覆盖与交换】一文中会进一步介绍)
地址转换
为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址,而逻辑地址到物理地址的转换 (这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况
内存保护
内存一般来说会分为操作系统使用的内存区域,还有普通的应用程序使用的内存区域,各个用户进程都会被分配到各自的内存空间,某进程对操作系统使用的内存区域的访问和对其他进程内存区域的访问都应该被禁止(否则会导致系统不安全),该进程只能访问与之对应的内存区域
两种实现方法
- 在CPU中设置一对上、下限寄存器,存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值相比,判断有无越界
- 采用重定位寄存器 (又称基地址寄存器 )和界地址寄存器 (又称限长寄存器 )来实现这种保护
重定位寄存器含最小的物理地址值(起始物理地址 ),界地址寄存器含逻辑地址的最大值(最大逻辑地址 )
内存管理机构动态地将逻辑地址与界地址寄存器进行比较 ,若未发生地址越界,则加上重定位寄存器的值后映射成物理地址,再送交内存单元
小结
- 操作系统负责内存空间的分配与回收
- 操作系统需要提供某种技术从逻辑上对内存空间进行扩充(实现虚拟性)
- 操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换(三种装入方式)
- 操作系统需要提供内存保护功能,保证各进程在各自存储空间内运行,互不干扰
【计算机操作系统】 专栏的文章 均有参考 《王道计算机考研 操作系统》 课程视频