问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

五分钟读懂内存管理

创作时间:
作者:
@小白创作中心

五分钟读懂内存管理

引用
CSDN
1.
https://blog.csdn.net/Coldreams/article/details/139334917

内存管理是操作系统中的核心概念之一,它决定了计算机如何有效地使用内存资源。本文将从内存的基本概念、分类、功能、工作原理、结构、应用以及内存管理的几种方式等方面,帮助读者全面理解内存管理的核心内容。

计算机系统结构

什么是内存

内存(Memory),通常指计算机内存,是计算机系统中的一种存储设备,用于临时存储数据和指令,以便处理器能够快速访问和处理。内存是计算机系统的重要组成部分,主要用于存储正在运行的程序和操作系统的数据,确保系统能够高效地执行任务。内存通常分为两大类:随机存取存储器(RAM)和只读存储器(ROM)。

内存的分类

  • 随机存取存储器(RAM)

  • 动态随机存取存储器(DRAM):需要周期性刷新以维持数据,常用于主内存。

  • 静态随机存取存储器(SRAM):不需要刷新,速度快,但成本高,通常用于缓存(Cache)。

  • 只读存储器(ROM):存储永久性数据,通常包含系统引导程序和固件,不易修改。

内存的功能

  1. 存储操作系统、应用程序和数据:内存提供一个临时存储区域,存储当前正在使用的数据和程序。
  2. 高速访问:内存的读取和写入速度远快于硬盘等存储设备,因此系统能更快地响应用户操作和执行任务。
  3. 数据交换:内存用于在CPU和其他硬件设备之间传输数据,确保高效的数据处理和系统运行。

内存的工作原理

  1. 加载数据:当程序或操作系统需要处理数据时,这些数据会从较慢的存储设备(如硬盘)加载到内存中。
  2. 执行指令:CPU从内存中读取指令和数据进行处理,执行操作。
  3. 临时存储:处理中间结果和临时数据存储在内存中,以便快速访问和修改。
  4. 数据交换:内存与CPU、硬盘、输入/输出设备之间进行数据交换。

内存的主要特性

  • 易失性:RAM是易失性的,当电源关闭时,存储在其中的数据会丢失。
  • 容量和速度:内存的容量和速度决定了系统的性能和多任务处理能力。更多的内存容量和更快的速度可以显著提高系统性能。
  • 存取时间:内存的存取时间通常以纳秒(ns)为单位,表示读取或写入数据所需的时间。

内存结构

内存通常以层次结构组织,包括以下层次:

  1. 寄存器:CPU内部的高速存储单元,存取速度最快,但容量有限。
  2. 缓存(Cache):位于CPU和主内存之间,分为L1、L2、L3等不同级别,用于加速数据访问。
  3. 主内存(RAM):主要用于存储正在执行的程序和数据,容量较大,但存取速度相对较慢。

内存的应用

  1. 操作系统运行:操作系统核心及其服务和驱动程序运行在内存中。
  2. 应用程序执行:应用程序及其数据加载到内存中执行。
  3. 数据缓存:临时存储常用数据和指令,提高系统响应速度。

内存管理

连续分配管理(工业使用较多)

  • 单一连续分配:只能用于单用户单任务操作系统。作业一旦进入内存,要等结束之后释放。无法实现多个进程共享主存
  • 固定分区分配:将内存分成若干区,不同区可以放不同程序。要先确定,运行就不能改变。通常采用静态重定位方式装内存。
  • 动态分区分配:是可变分区分配。根据作业大小动态分配创建分区

非连续分配管理

  • 页式存储

  • 物理内存空间分为块(不一定连续),块大小与页大小相同,从0开始编号

  • 逻辑空间等分为页,从0开始编号,页面大小为4KB

  • 逻辑地址结构:页号,位移量(页内地址)

  • 地址长度为32位,011位为页内地址,即,每页大小为4KB;1231位为页号,最多220页

  • 逻辑地址/212=页号%212=页内地址

  • 物理地址=块号*块大小+偏移量

  • 缺页中断与页面置换算法

  • OPT:最优页面置换算法

  • FIFO:先进先出算法

  • LRU:最近最久未使用算法

  • 页式存储优缺点

  • 优点:

  • 很好的解决外部碎片问题,只会产生内部碎片

  • 打破内存分配的连续性需求

  • 提高主存的利用率

  • 缺点:

  • 程序需要全部装入内存,需要有相应的硬件支持

  • 会有内部碎片产生

  • 动态的地址变化、方案实施需要耗用额外的系统资源

  • 存储扩展问题没有解决一一进程大小受限制,可用块数小于进程需要的块数时需要等待

  • 段式存储

  • 段式存储基本原理:用户编制的程序是由若干段组成的:一个程序可以由一个主程序、若干子程序、符号表、栈以及数据等若于段组成。每一段都有独立、完整的逻辑意义,每一段程序都可独立编制,且每一段的长度可以不同。每一段都可从“0”编址,段与段之间地址不连续,但段内地址是连续的。

  • 分段式存储管理为作业的每一个段分配一个连续的内存区域,用来存放该段信息。

  • 段式管理的数据结构

  • 逻辑地址结构:段号,位移量(段内地址)

  • 段内地址 16位 即段最大大小64KB

  • 逻辑地址/216=段号%216=段内地址

  • 物理地址=基址+段内地址

  • 段式存储优缺点

  • 优点:

  • 没有内部碎片

  • 可以以段为单位编写和编译,隔断程序修改互相不影响

  • 可以针对不同类型的段采取不同的保护

  • 可以以段为单位进行共享,包括通过动态链接进行代码共享

  • 缺点:

  • 会产生外部碎片,不过由于进程被分为多个小块,所以外部碎片也会很小

  • 段页式存储

  • 段页式存储原理:用户程序先分段,每个段内部再分页 (内部原理同基本的分页、分段相同)

  • 段页式存储总结

  • 1、结合了段式和页式的优点;但是增加了表 (存储表和查询表)开销,只在大型计算

  • 机系统中使用

  • 2、段页式存储会产生外部碎片,还会产生内部碎片

  • 段式和页式和段页式存储的比较

  • 页式存储 就是说将程序分页时,页的大小是固定的,只根据页面大小强硬的将程序切割开而分段时比较灵活,只有一段程序有了完整的意义才将这一段切割开

  • 分页式作业的地址空间是一维的,页间的逻辑地址是连续的,而分段式作业的地址空间则是二维的,段间的逻辑地址是不连续的

  • 在页式、段式存储管理中,为获得一条指令或数据,须两次访问内存而段页式则须三次访问内存

内存碎片

内存碎片主要分为,内部内存碎片和外部内存碎片。

  • 内存分页由于内存空间都是预先划分好的,页与页之间是紧密排列的,所以不会有外部碎片。
  • 但是,因为内存分页机制分配内存的最小单位是一页,即使程序不足一页大小,我们最少只能分配一个页,所以页内会出现内存浪费,所以针对内存分页机制会有内部内存碎片的现象。
  • 内存分段管理可以做到段根据实际需求分配内存,所以有多少需求就分配多大的段,所以不会出现内部内存碎片
  • 但是由于每个段的长度不固定,所以多个段未必能恰好使用所有的内存空间,会产生了多个不连续的小物理内存,导致新的程序无法被装载,所以会出现外部内存碎片的问题。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号