操作系统之内存管理

本文介绍了操作系统内存管理的基本概念,包括虚拟内存的作用,进程如何使用内存的五个段,以及逻辑地址、相对地址和物理地址的区别。内存管理技术如固定分区、动态分区、分页和分段等被讨论,强调了它们各自的优缺点。虚拟内存通过分页和分段技术提供更大的逻辑地址空间,允许程序部分加载并动态映射到物理内存,有效解决了内存不足的问题。
摘要由CSDN通过智能技术生成

操作系统之内存管理

虚拟内存

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。

img

进程如何使用内存

进程是操作系统资源分配的最小单元。操作系统分配给进程的内存空间中包含五种段:数据段、代码段、BSS、堆、栈。

数据段:存放程序中的静态变量和已初始化且不为零的全局变量。

代码段:存放可执行文件的操作指令,代码段是只读的,不可进行写操作。这部分的区域在运行前已知其大小。

BSS段( Block Started By Symbol):存放未初始化的全局变量,在变量使用前由运行时初始化为零。

堆:存放进程运行中被动态分配的内存,其大小不固定。

栈:存放程序中的临时的局部变量和函数的参数值。

img

逻辑地址、相对地址与物理地址

  • 逻辑地址:与当前数据在内存中的物理分配地址无关的访问地址,在执行对内存的访问之前必须转化为物理地址。
  • 相对地址: 特殊的逻辑地址,相对于某些已知点的存储单元。
  • 物理地址:数据在主存中的实际位置

内存管理技术

内存管理技术主要分为

  • 固定分区
  • 动态分区
  • 简单分页
  • 简单分段
  • 虚拟内存分页
  • 虚拟内存分段
  • 段页式
技术简要说明优点缺点
固定分区主存被分为很多大小固定的分区,进程可以装载到大于等于自身大小的分区。实现简单1.有内部碎片 2.活动进程的数目是固定的
动态分区分区是被动态创建的,进程可以装载到正好等于自身大小的分区。没有内部碎片,内存使用更完全有外部碎片,需要压缩外部碎片
简单分页主存被分为很多大小相同的帧,进程被分为很多与帧大小相同的页。要装入一个进程,需要将进程所有的页装入主存,可以是不连续的帧中。没有外部碎片有很少的内部碎片(仅出现在进程的最后一页)
简单分段进程被分为很多的段,要装入一个进程,需要将进程所有的段装入主存中不一定连续的动态分区。没有内部碎片,比较与动态分区,内存利用率更高,开销小有外部碎片,需要压缩外部碎片
虚拟内存分页与简单分页相比,不需要将进程的所有页装入主存没有外部碎片 巨大的虚拟内存空间 更高程度的多到程序设计复杂的内存管理开销
虚拟内存分段与简单分段相比,不需要将进程所有的段都装入主存具有虚拟内存分页的三个优点,并且支持保护和共享复杂的内存管理开销
分页

逻辑地址到物理地址的映射过程

  1. 提取页号,即逻辑地址最左的n位
  2. 以这个页号为索引,查找该进程页表中相应的帧号k
  3. 该帧的起始物理地址为k*2^m,被访问字节的物理地址是这个数加上偏移量

img

分段

逻辑地址到物理地址的映射过程

  1. 提取段号,即逻辑地址最左的n位s
  2. 以这个段号为索引,查找该进程段表中该段的起始物理地址
  3. 最右m位表示偏移量,偏移量和段长度比较,如果偏移量大于该长度,则该地址失效
  4. 物理地址为该段的起始物理地址加上偏移量的和

img

分页、分段的特点

  • 进程的所有存储器访问的都是逻辑地址,在运行时动态地转换为物理地址。
  • 一个进程可以划分为许多块,在执行的过程中,这些块不需要连续的存在主存中。
分段

对于每一个虚拟地址,处理器使用段号检索进程段表来寻找该段的页表;页号用来检索页表并查找到帧号。

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值