【计算机操作系统】内存管理的概念

内存管理的概念

内存管理需要实现以下功能:

  1. 内存空间的分配与回收
  2. 内存空间的扩充
  3. 地址转换
  4. 内存保护

内存空间的分配与回收

存储管理方式随着操作系统的发展而发展,在操作系统由单道向多道发展时,存储管理方式便由单一连续分配发展为固定分区分配;为了能更好地适应不同大小的程序要求,又从固定分区分配发展到动态分区分配;为了更好地提高内存的利用率,进而从连续分配方式发展到离散分配方式一一页式存储管理

引入分段存储管理的目的,主要是为了满足用户在编程和使用方面的要求,其中某些要求是其他几种存储管理方式难以满足的

操作系统作为系统资源的管理者,当然也需要对内存进行管理,包括:

① 记录哪些内存区域已经被分配出去,哪些又还空闲

② 合理分配进程存放空间

③ 进程结束之后将进程占用的内存空间回收

内存空间的扩充

操作系统需要提供某种技术从逻辑上对内存空间进行扩充(操作系统的虚拟性)

】某游戏大小超过 60GB,按理来说这个游戏程序运行之前需要把 60GB 数据全部放入内存,然而某电脑的内存仅有 4GB ,但是这个游戏依然可以在该电脑上顺利运行,这就是利用了操作系统的虚拟性,采用虚拟技术实现(在这里了解即可,在【覆盖与交换】一文中会进一步介绍)

地址转换

为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址,而逻辑地址到物理地址的转换 (这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况

内存保护

内存一般来说会分为操作系统使用的内存区域,还有普通的应用程序使用的内存区域,各个用户进程都会被分配到各自的内存空间,某进程对操作系统使用的内存区域的访问和对其他进程内存区域的访问都应该被禁止(否则会导致系统不安全),该进程只能访问与之对应的内存区域

两种实现方法

  1. 在CPU中设置一对上、下限寄存器,存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值相比,判断有无越界
  2. 采用重定位寄存器 (又称基地址寄存器 )和界地址寄存器 (又称限长寄存器 )来实现这种保护
    重定位寄存器含最小的物理地址值(起始物理地址 ),界地址寄存器含逻辑地址的最大值(最大逻辑地址
    内存管理机构动态地将逻辑地址与界地址寄存器进行比较 ,若未发生地址越界,则加上重定位寄存器的值后映射成物理地址,再送交内存单元

小结

  1. 操作系统负责内存空间的分配与回收
  2. 操作系统需要提供某种技术从逻辑上对内存空间进行扩充(实现虚拟性)
  3. 操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换(三种装入方式)
  4. 操作系统需要提供内存保护功能,保证各进程在各自存储空间内运行,互不干扰

计算机操作系统】 专栏的文章 均有参考 《王道计算机考研 操作系统》 课程视频

相关推荐
IOT.FIVE.NO.118 分钟前
Linux实操笔记2 Ubuntu安装Nginx的不同方法
linux·笔记·ubuntu
akbar&1 小时前
计算机三级 - 数据库技术 - 第十三章 大规模数据库架构 笔记
数据库·笔记
sixteenyy1 小时前
学习笔记(一)
笔记·学习
吃什么芹菜卷2 小时前
2024.9最新:CUDA安装,pytorch库安装
人工智能·pytorch·笔记·python·深度学习
云边有个稻草人2 小时前
【刷题】Day5--数字在升序数组中出现的次数
开发语言·笔记·算法
月夕花晨3742 小时前
C++学习笔记(26)
c++·笔记·学习
zhangrelay4 小时前
Arduino IDE离线配置第三方库文件-ESP32开发板
笔记·学习·持续学习
我叫啥都行4 小时前
计算机基础知识复习9.13
linux·笔记·后端·系统架构
南斯拉夫的铁托4 小时前
线性代数(宋浩版)(4)
经验分享·笔记·线性代数
俊昭喜喜里5 小时前
Git学习笔记
笔记·git·学习