内存管理

内存管理的基本概念

操作系统对内存的划分和动态分配,就是内存管理的概念。

内存管理的功能

  • 内存空间的分配和回收
  • 地址转换
  • 内存空间的扩充(虚存、覆盖等)
  • 存储保护

源程序变为内存中可执行程序的三个步骤

  • 编译
  • 链接
  • 装入

程序的链接

  • 静态链接:完整的可执行程序
  • 装入时动态链接:装入内存时,边装入边链接
  • 运行时动态链接:执行时链接,便于更新和修改,便于实现对目标模块的共享

程序的装入

  • 绝对装入:逻辑地址与物理地址完全相同,只适合单道程序环境,地址由编译程序给出或程序员赋予。
  • 可重定位装入(静态重定位):多道程序环境下,多个目标的起始地址都是从0开始,作业需要一次性装入内存,不能在内存中移动。
  • 动态重定位:地址转换在程序执行时进行,需要重定位寄存器,程序可以分配到不连续的存储区,便于程序段的共享,可以给用户提供比存储空间大得多的地址空间。

内存保护

内存分配器,保护操作系统不受用户进程的影响,同时保护用户进程之间不会相互影响。内存保护由操作系统和硬件机构合作完成。

覆盖和交换

覆盖和交换是多道程序环境下用来扩充内存的两种方法。

  • 覆盖:把用户空间分为固定区和覆盖区,把经常活跃的部分放在固定区,把即将访问的段放入覆盖区,其他段放在外存,在需要调用前才把它调入覆盖区。内存中能更新的地方只有覆盖区的段,固定区的段常驻内存。
  • 交换:把处于等待状态的程序从内存移出,把准备好竞争CPU的程序从外存移到内存。

交换技术主要在不同进程之间进行,而覆盖用于同一程序或进程中。

连续分配管理方式

指为用户程序分配一个连续的内存空间。

单一连续分配

内存分为系统区和用户区,无需内存保护,内存中永远只有一道程序。

固定分区分配

把内存分为若干固定大小的区域,每个分区只装入一道作业。有两种划分方法:

  • 分区大小相等
  • 分区大小不等

动态分区分配

又称为可变分区分配,在进程装入内存时动态地建立分区,分区的大小和数量可变。会产生外部碎片,可以通过紧凑技术来解决。有四种动态分区的分配策略:

  1. 首次适应算法:按照地址递增的顺序查找第一个满足要求的空闲分区。
  2. 最佳适应算法:空闲分区按容量递增的方式排序,找到第一个满足要求的空闲分区。
  3. 最坏适应算法:空闲分区按容量递减的方式排序,找到第一个满足要求的空闲分区。
  4. 循环首次适应算法:跟首次适应算法类似,但是分配内存时从上次查找结束的位置继续开始。

非连续分配管理方式

分页管理方式

  • 目的:提高内存利用率,提升计算机性能。
  • 实现:通过硬件实现,对用户透明。
  • 思想:把主存划分为大小相等且固定的块,作为主存的基本单位。每个进程也以块为单位进行划分,进程在执行时以块为单位逐个申请主存的块空间。
  • 页:进程中的块称为页。
  • 页框:内存中的块。
  • 块:外存中的块
  • 地址结构:分为两部分,第一部分为页号,第二部分为页内偏移量。
  • 页表:系统为每个进程建立一张页表,存放在内存中,页表由页表项组成,页表项第一部分为页号,第二部分为内存中的块号,页表项的第二部分和地址的第二部分共同组成物理地址。页表的作用即实现了从页号到物理块号的映射,再加上地址结构第二部分的偏移量获取进程物理地址。
  • 地址变换机构:把逻辑地址转换成物理地址,一般设置一个页表寄存器,存放页表的始址和页表长度,进程未执行时,页表的始址和长度存放在进程控制块中,执行时才存入页表寄存器。
  • 地址空间:页式管理中地址空间是一维的。
  • 快表:又称相联存储器(TLB),拥有快表后存取数据只需要一次访存(匹配成功的情况)
  • 二级页表:顶级页表只能有一个页面,建立多级页表的目的主要在于建立索引,减少内存空间的占用。

分段管理方式

  • 目的:考虑用户和程序员,方便编程、信息保护和共享、动态增长、动态链接。
  • 段表:每个进程都有一张逻辑空间与内存空间映射的段表,段表项记录该段在内存中的始址和长度。
  • 地址结构:段号、段内偏移量。
  • 段表:段号、段长、本段在内存的始址。
  • 地址变换机构:设置一个段表寄存器,存放段表的始址和段表长度(和段号比)
  • 地址空间:因为每段的长度是不固定的,没法通过整数除法得出段号,因此段号和段内偏移量都需要显示地给出,所以分段管理的地址空间是二维的。

段页式管理方式

  • 思想:用分段的方法来分配和管理用户的地址空间,用分页的方法来管理物理存储空间。
  • 逻辑地址结构:段号、页号、页内偏移量。
  • 地址变换机构:系统为每个进程建立一张段表,每段都有一张页表。在一个进程中,段表只有一个,页表可能有多个。在没有快表的情况下,访问一次数据实际需要访问三次主存。
  • 地址空间:二维。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值