操作系统笔记-3.1.1.2 内存管理的概念

王道操作系统笔记,视频链接:3.1.1.2 内存管理的概念

知识总览

  1. 内存管理的概念
    • 内存空间的分配与回收
    • 内存空间的扩充
    • 地址转换
    • 存储保护

内存管理的功能

  1. 内存空间的分配与回收:
    • 问题:
      • 操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?
      • 操作系统要怎么记录 哪些内存区域已经被分配 出去了,哪些又还空闲?
      • 新的进程到达,很多位置都可以放,那应该放在哪里?
      • 当进程运行结束之后,如何将进程占用的内存空间回收?
    • 在此不展开,之后会有专门的小节进行介绍
    • 操作系统负责内存空间的分配与回收
  2. 内存空间的扩充:
    • 操作系统需要提供某种技术从逻辑上对内存空间进行扩充(实现虚拟性)
    • 在此不展开,之后会有专门的小节进行介绍
  3. 地址转换:
    • 为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。
    • 而逻辑地址到物理地址的转换 (这个过程称为地址重定位 )应该由操作系统负责,
      • 地址重定位利用三种装入方法实现:
        • 绝对装入 :
          • 编译时产生绝对地址
          • PS:因为该方法仅在单道程序阶段使用,此时操作系统尚未诞生,
            • 所以实际上绝对装入是由编译器完成的,并非操作系统
        • 可重定位装入 :
          • 装入时将逻辑地址转换为物理地址
          • PS:由装入程序负责进行,一般用于早期的多道批处理操作系统
        • 动态运行时装入 :
          • 运行时将逻辑地址转换为物理地址,需设置重定位寄存器
          • PS:这种方式一般是现代操作系统的装入方式,
            • 之后学习页式存储和段式存储的时候会经常接触这种方式
    • 这样就保证了程序员写程序时不需要关注物理内存的实际情况。
    • 操作系统需要提供地址转换 功能,负责程序的逻辑地址与物理地址的转换
  4. 内存保护:
    • 操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰
    • 一般来说,内存会分为操作系统使用的内存区域与普通的应用程序使用的内存区域
      • 各个用户进程会被分配到各自的内存空间,进程只能访问自己的内存空间
        • 如果用户进程一想对其他进程或操作系统的内存空间进行访问,应该阻止,
        • 否则会影响整个系统的安全。
        • 这就是内存保护希望做的事情
    • 例子:
      • 假设进程1的逻辑地址空间为0 → \to → 179,实际物理地址空间为 100 → \to → 279
      • 内存保护可采取两种方法:
        • 方法一:在CPU中设置一对上、下限寄存器 ,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
        • 方法二:采用重定位寄存器 (又称基址寄存器 )和界地址寄存器 (又称限长寄存器 )进行越界检查。重定位寄存器中存放的是进程的起始物理地址 。界地址寄存器中存放的是进程的最大逻辑地址 。
          • PS:可以理解为前者记录线段的起点,后者记录线段的长度

知识回顾与重要考点

  1. 该小节仅对内存管理进行一个简单的框架介绍
相关推荐
鸽芷咕5 分钟前
把 SQL 编辑器用顺:KSQL Developer 从补全到事务的实战笔记
笔记·sql·编辑器
LuminousCPP15 分钟前
数据库学习笔记(二):MySQL 基础操作入门|在 CentOS Stream 10 上连接、建库与建表
数据库·经验分享·笔记·学习·mysql·centos
cao233312 小时前
关于 y0 y1 yn 变量名冲突说法的指正
笔记
~patience~21 小时前
WAV 逆向分析工具使用笔记
笔记
滴啦嘟啦哒21 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
xier_ran21 小时前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名21 小时前
ai应用开发的学习笔记
服务器·笔记·学习
乔旭伟21 小时前
中小厂生产管理系统选型笔记:驱动方式、主线链路与成本结构
笔记·需求分析·规格说明书
xier_ran21 小时前
【infra之路】AI 编译器学习笔记(十四):为什么要 tiling,以及矩阵计算单元的“固定“
人工智能·笔记·学习
如旧呀1 天前
origin绘制等距的HSD置信区间
笔记·origin