操作系统--3. 内存管理

本文详细介绍了内存管理的基础知识,包括存储单元、逻辑地址与物理地址的区别,以及内存管理的各种概念,如覆盖、交换、内存空间的分配与回收。重点讨论了连续分配管理方式(单一连续、固定分区、动态分区)和非连续分配管理方式(分页存储、分段存储、段页式存储),详细阐述了地址变换机构和页面置换算法。此外,还探讨了虚拟内存的原理和策略,包括请求分页存储管理及其页面分配策略。
摘要由CSDN通过智能技术生成

1 内存基础知识

1.1 存储单元

  • 按字节编址的计算机,每个存储单元大小为1字节,即8个二进制位。
  • 按字编址的计算机,每个存储单元大小根据计算机的位数确定。
    在这里插入图片描述

1.2 逻辑地址 vs 物理地址

  • 逻辑地址(相对地址):每个程序段的地址都是从0开始编号的地址。
  • 物理地址(绝对地址):实际内存中的真实地址编号。
    在这里插入图片描述
    逻辑地址到物理地址的映射需要装入程序需要解决的问题。

装入的三种方式

  1. 绝对装入在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。
    在这里插入图片描述
  2. 静态重定位:由又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存适当的位置。装入时对地址进行“重定位”,将逻辑地址转化为物理地址(地址变换是在装入时一次性完成的)
    在这里插入图片描述
  3. 动态重定位:又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存后,并不会立即把逻辑地址转化为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址,这种方式需要一个重定位寄存器的支持。

在这里插入图片描述
优点:

  1. 可将程序分配到不连续的存储区,
  2. 在程序运行前只需要装入他的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存,
  3. 便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。

链接的三种方式

  1. 静态链接:在程序运行之前,先将各目标模块及他们所需要的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。
    在这里插入图片描述

  2. 装入时动态链接:将各目标模块装入内存时,边装入边链接的方式。
    在这里插入图片描述

  3. 运行时动态链接:在程序执行中需要该目标模块时, 才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。
    在这里插入图片描述

在这里插入图片描述

2 内存管理的概念

内存管理需要做些什么事?

  1. 操作系统负责 内存空间的分配与回收
    在这里插入图片描述
  2. 操作系统需要提供某种技术从逻辑上 对内存空间进行扩充。
    在这里插入图片描述
  3. 操作系统需要提供地址转换功能,负责程序的 逻辑地址物理地址 的转换
    在这里插入图片描述
  4. 操作系统需要提供 内存保护 功能。保证各进程在各自存储空间内运行,互不干扰。
    在这里插入图片描述
  • 方法一:在CPU中 设置一对上、下限寄存器 ,存放进程的上下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
    在这里插入图片描述
  • 方法二:采用 重定位寄存器(又称 基址寄存器)和 界地址寄存器(又称 限长寄存器)进行越界检查。重定位寄存器中存放的是进程的 起始物理地址。界地址寄存器中存放的是进程的 最大逻辑地址
    在这里插入图片描述

在这里插入图片描述

3 覆盖和与交换

3.1 覆盖

覆盖技术:用来 解决程序大小超过物理内存总和 的问题。
基本思想:将程序分为多个段(多个模块)。常用的段常驻在内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。需要常驻内存的段放在“固定区”中,调入后不再调出(除非运行结束)。
在这里插入图片描述
缺点:程序的调用结构必须由程序员显性声明,操作系统完成自动覆盖。对用户不透明,增加了用户编程负担。覆盖技术只用于早期的操作系统中。

3.2 交换

交换技术:又称对换技术。内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)。换出时,进程被换出到外存,对应的PCB保留在内存中并插入 挂起 队列。 进程被换出后必须要记录进程存在外存的什么位置,这个信息由PCB 保存。
在这里插入图片描述
挂起:被换出的进程称为挂起(suspend)态,挂起态由分为 就绪挂起阻塞挂起。从而引入7状态模型,具体参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值