操作系统 第三章 第一节(王道计算机操作系统+课后习题提炼)

本文是对王道计算机408操作系统+王道2025操作系统考研复习指导部分的提炼总结,个人心得,包含视频内容和课后习题的提炼.
本人是26届408考生,本文属于考研复习的笔记,会持续更新~
建议搭配视频和指导书食用~ ~ 视频课请看王道计算机考研408操作系统
本文是操作系统第三章 第一节内容
总目录2026考研408 操作系统

3.1 内存管理概念

3.1.1 内存管理的基本原理和要求

  • 内存管理的概念
    • 内存可以存放数据,程序执行前需要先放入内存中才能被CPU处理
    • 在多道程序环境下如何管理多个程序的数据。内存用于临时存储数据和程序,以便CPU能够快速处理。
    • 在多道程序环境下,多个程序需要同时在内存中运行,这就涉及到如何区分和管理这些程序的数据。
    • 内存的存储单元地址
      • 内存从0开始,每一个地址对应一个存储单元
      • 如果计算机按字节编址,那么每个存储单元的地址就是一个字节,即1B,8个二进制位
      • 如果是按字编址,那么每个存储单元的地址就是一个字,存储单元大小得看字长为多少的计算机
        • 如果是一个字长为16位的计算机,那么一个存储单元就是16位,即2B
    • 补充知识
      • 计算机的单位换算
        • 位(Bit):最小的数据单位,表示一个二进制数位,可以是01
        • 字节(Byte):基本的存储单位,通常用于表示一个字符。
          • 1 Byte = 8 Bits
          • 1 KB = 2^10 Bytes
          • 1 MB = 1,024 KB = 2^20 Bytes
          • 1 GB = 1,024 MB = 2^30 Bytes
  • 内存管理的主要功能
    • 内存空间的分配和回收
      • 为正在运行的程序分配内存空间。这包括为程序代码、数据和堆栈分配内存。
      • 当程序结束或不再需要某些内存时,操作系统负责回收这些内存,以便它们可以被其他程序使用。
    • 地址转换
      • 内存管理单元(MMU)负责将逻辑地址转换为物理地址。逻辑地址是程序生成的地址,物理地址是内存中的实际地址。
    • 内存空间的扩充
      • 利用虚拟存储技术,操作系统可以将磁盘空间用作内存扩展,以便在内存不足时继续运行程序。
    • 内存共享
      • 允许多个程序共享内存中的数据,以便它们可以相互通信。
    • 存储保护
      • 保证各个进程之间的内存空间不会相互干扰,以及保护操作系统的内存空间不受用户程序的影响。
      • 内存保护的两种方法
        • CPU中设置上,下限寄存器,进程如果要访问地址要先检查是否越界
        • 采用重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器),重定位寄存器存放进程起始地址,界地址寄存器存放进程最大逻辑地址
程序的链接与装入
  • 创建进程首先要将程序和数据装入内存,将用户源程序变为可用在内存中执行的程序,需要以下步骤
    • 编译
      • 由编译程序将用户源程序编译成若干目标模块
    • 链接
      • 由链接程序将若干目标模块以及他们所需的库函数链接在一起,成一个完整的装入模块
    • 装入
      • 由装入程序将装入模块装入内存,并为其分配内存空间
  • 当一个装入模块装入内存时,有三种装入方式
    • 绝对装入
      • 在绝对装入方式中,程序在编译时就确定了其在内存中的绝对位置,编译器会生成包含绝对地址的目标代码。
      • 装入程序按照这些绝对地址将程序和数据装入内存。
      • 特点
        • 它适用于单道程序环境,灵活性很低
    • 可重定位装入(静态重定位)
      • 它允许程序在编译时使用相对地址,而在装入内存时根据内存的当前情况,将程序装入到内存的适当位置。
      • 通常起始地址从0开始。当程序被装入内存时,所有逻辑地址都需要根据程序在内存中的实际起始地址进行调整,这个过程称为重定位。重定位确保了程序中的指令和数据引用在内存中的正确位置。
      • 特点
        • 适用于多道程序环境,灵活性高
        • 作业装入内存时,必须分配其所需的全部内存空间,如果没有足够内存就不装入
        • 作业一旦进入内存后,在运行期间不能移动,也不能再申请空间
    • 动态运行时装入(动态重定位)
      • 动态重定位是一种在程序执行过程中进行地址重定位的技术
      • 它允许程序在装入内存时不进行任何修改(不把逻辑地址转为实际地址)
      • 而是在程序要真正执行的时候,通过硬件支持的地址变换动态地将相对地址转换为绝对地址。
      • 这种技术需要硬件的支持,如重定位寄存器,来实现地址的动态转换。
      • 特点
        • 可以将程序分配到不连续的存储区
        • 在程序允许前只需要装入他的部分代码即可投入允许
        • 在允许期间根据需要动态申请分配内存
        • 便于程序段的共享,可以向用户提供一个比存储空间大的多的地址空间
  • 链接的三种方式
    • 静态链接
      • 在程序运行之前,将各个模块以及库函数链接在一起,形成一个完整的装入模块,之后不再拆开
    • 装入时动态链接
      • 在装入内存的时候,边装入边链接,形成一个完整的装入模块
    • 运行时动态链接
      • 在程序运行的时候,只有需要用到该模块的时候才链接,优点是便于修改和更新,便于实现目标模块的共享
内存空间的扩充
  • 覆盖技术
    • 早期计算机内存很小,引入覆盖技术来解决程序大小超过内存大小的问题
    • 核心思想:将程序分为多个段(多个模块),常用的段(模块)常驻内存使用,不常用的段(模块)在需要的时候再装入内存
    • 内存分为一个固定区和一个覆盖区,固定区存放常驻内存的段,并且调入之后不再调出(除非运行结束),覆盖区存放不常驻内存的段
    • 缺点
      • 必须由程序员来声明覆盖结构,对用户不透明,增加变成负担
  • 交换技术
    • 在内存紧缺的时候,系统将内存中某些进程暂时换出到外存上,把外存具备运行条件的进程换入内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值