操作系统笔记-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. 该小节仅对内存管理进行一个简单的框架介绍
相关推荐
浩瀚地学9 小时前
deepagents学习打卡day07
经验分享·笔记·python·学习·agent
泰晶科技9 小时前
【智能手表晶振选型:小尺寸与低功耗如何兼得】
人工智能·笔记
Awh-9 小时前
ARM 裸机开发 DAY5 学习笔记
arm开发·笔记·学习
箓维10 小时前
线程的优缺点,与进程的关联和差异
java·服务器·笔记
江屿风10 小时前
【Linux系统】【从【收尾】缓冲区到【新开】磁盘块:一节课打通文件系统底层原理】流食般投喂
linux·运维·服务器·人工智能·笔记
李游Leo10 小时前
HarmonyOS 7 + ArkUI + Adaptive Layout 学习笔记:折叠屏多形态布局适配与窗口状态响应机制【鸿蒙心迹】
笔记·学习·harmonyos
路漫漫其修远兮sjw10 小时前
Linux 运维知识点笔记(中级)
linux·运维·笔记
宵时待雨10 小时前
linux笔记归纳24:多路转接select
linux·服务器·笔记·高并发
一只旭宝10 小时前
【C++复习】四种类型转换 + 常见设计模式 + Redis/MySQL(后端面试复习完整版)
c++·redis·笔记·mysql·设计模式
91刘仁德11 小时前
RAG实战-Embedding模型(BGE)
笔记·embedding·rag