理解内存管理机制

简介: 概念• 假设计算机的内存就像一个大仓库,这个仓库被人为地划分成几个固定大小的区域,每个区域就是一个分区。比如把100MB的内存划分成5个分区,每个分区20MB。当一个程序需要运行时,操作系统会根据程序的大小,把它分配到一个合适的分区中。如果程序大小是15MB,就把它放到一个20MB的分区里。• 这种方式的优点是实现简单。就像仓库管理员只需要按照固定的格子来存放货物,不需要复杂的计算和调整。缺点是内存利用率低。因为分区大小是固定的,如果程序大小只有10MB,却分配了20MB的分区,那么剩下的10MB就浪费了。而且如果程序太大,超过了分区的大小,就无法运行。应用场景• 在早期的计算机系统中

固定分区分配

概念

  • 假设计算机的内存就像一个大仓库,这个仓库被人为地划分成几个固定大小的区域,每个区域就是一个分区。比如把100MB的内存划分成5个分区,每个分区20MB。当一个程序需要运行时,操作系统会根据程序的大小,把它分配到一个合适的分区中。如果程序大小是15MB,就把它放到一个20MB的分区里。
  • 这种方式的优点是实现简单。就像仓库管理员只需要按照固定的格子来存放货物,不需要复杂的计算和调整。缺点是内存利用率低。因为分区大小是固定的,如果程序大小只有10MB,却分配了20MB的分区,那么剩下的10MB就浪费了。而且如果程序太大,超过了分区的大小,就无法运行。

应用场景

  • 在早期的计算机系统中,当程序比较简单,数量也比较少的时候,固定分区分配是一种可行的方案。比如一些小型的嵌入式设备,它的功能相对固定,运行的程序种类有限,就可以采用这种简单的内存管理方式。

动态分区分配

概念

  • 这种方式就好比仓库管理员不再把仓库划分成固定大小的格子,而是根据货物(程序)的大小来灵活划分区域。当一个程序需要15MB内存时,操作系统就在内存中找到一块连续的、足够大的空间(15MB或者更大),把它分配给这个程序。如果内存中有多个足够大的空间,操作系统会根据一定的算法(如最先适应、最佳适应等)来选择一个区域进行分配。
  • 比如最先适应算法,就是从内存的起始位置开始查找,找到第一个满足大小要求的空闲区域就分配。这种方式的优点是内存利用率比固定分区分配高,因为它可以根据程序的实际大小来分配内存。但是,随着程序的运行和结束,内存中会产生很多大小不一的空闲区域,这就可能出现“碎片”问题。就像仓库里货物搬进搬出后,留下很多零散的空间,很难再找到一块足够大的连续空间来存放新的货物。

应用场景

  • 在现代计算机操作系统中,如Windows、Linux等,动态分区分配是主要的内存管理方式之一。因为现代计算机需要运行各种大小不一的程序,这种灵活的分配方式能够更好地满足需求。不过,为了减少碎片问题,操作系统会采用一些技术,比如内存紧缩(把内存中的程序和数据移动,使空闲区域集中)等。

分页管理

概念

  • 分页管理是把内存和程序都分成固定大小的页面。就像把一本厚厚的书(程序)分成很多页,每一页的大小是固定的,比如4KB。内存也被划分成同样大小的页框。当程序运行时,操作系统会把程序的页面装入内存的页框中。而且,这些页面在内存中可以是不连续存放的。
  • 举个例子,一本100页的书,每页4KB。内存有足够多的页框。操作系统可能把第1页装入内存的第10个页框,第2页装入第25个页框,第3页装入第5个页框,等等。程序运行时,通过一个地址转换机制(就像一个导航系统),把程序中的逻辑地址(比如书的页码)转换成内存中的物理地址(页框的位置)。这种方式的优点是内存利用率比较高,而且可以实现虚拟内存技术。因为程序的页面可以部分装入内存,其他页面可以暂时存放在硬盘上,当需要的时候再调入内存。

应用场景

  • 几乎所有的现代计算机操作系统都采用分页管理作为基础的内存管理技术。它能够很好地支持多任务操作,让多个程序的页面在内存中合理分布,同时通过虚拟内存技术,使得程序可以运行在比实际物理内存更大的虚拟空间中。

分段管理

概念

  • 分段管理是把程序按照逻辑模块划分成多个段。就像把一个软件项目分成多个功能模块,每个模块是一个段。每个段的大小是不固定的,根据模块的实际大小来确定。内存也被划分成段,但是内存中的段是动态分配的。当程序运行时,操作系统会把程序的段装入内存的段中。
  • 例如,一个图形绘制软件,它有绘图模块、图像处理模块和用户界面模块等。绘图模块是一个段,图像处理模块是另一个段。操作系统根据每个模块的大小,在内存中找到合适的区域来存放这些模块。这种方式的优点是符合程序的逻辑结构,方便程序员进行模块化编程和管理。但是,它也会产生内存碎片问题,而且地址转换相对复杂。

应用场景

  • 在一些对程序模块化要求较高的系统中,会采用分段管理。比如一些大型的工业控制系统软件,它有很多功能模块,分段管理能够更好地体现这些模块之间的逻辑关系。不过,现在大多数操作系统采用的是分页和分段相结合的方式,取长补短,既能体现程序的逻辑结构,又能有效管理内存。

段页式管理

概念

  • 这是分页和分段管理的结合体。程序先被分成多个段,每个段再被分成多个页。内存管理也分为两层,先按照段来分配,段内再按照页来管理。就像先把书(程序)按照章节(段)划分,每个章节再按照页划分。操作系统先找到合适的内存段,然后在这个段内找到合适的页框来装入程序的页面。
  • 例如,一个大型数据库管理系统软件,它有数据存储模块、查询处理模块和用户交互模块等几个大的段。数据存储模块又被分成很多小的页面,操作系统先把数据存储模块这个大段装入内存的一个区域,然后在这个区域内为数据存储模块的各个页面分配具体的页框。这种方式综合了分页和分段的优点,内存利用率高,又能很好地体现程序的逻辑结构。

应用场景

  • 在一些对内存管理要求非常高的复杂系统中,如大型服务器操作系统,段页式管理能够充分发挥其优势。它能够高效地管理大量的内存资源,同时支持复杂的程序结构,让系统运行更加稳定和高效。
目录
相关文章
|
9月前
|
缓存 NoSQL Linux
Linux系统内存使用优化技巧
交换空间(Swap)的优化 禁用 Swap sudo swapoff -a 作用:这个命令会禁用系统中所有的 Swap 空间。swapoff 命令用于关闭 Swap 空间,-a 参数表示关闭 /etc/fstab 文件中配置的所有 Swap 空间。 使用场景:在高性能应用场景下,比如数据库服务器或高性能计算服务器,禁用 Swap 可以减少磁盘 I/O,提高系统性能。
387 3
autojs之停用音量上停止脚本
autojs 8.7.1自带示例中提供了某些开关
2321 0
|
9月前
|
存储 固态存储
磁盘和内存的区别
存储特性: • 磁盘:非易失性存储,数据在断电后不会丢失,适合长期存储数据。 • 内存:易失性存储,数据在断电后会丢失,适合临时存储当前运行的程序和数据。 容量: • 磁盘:容量通常较大,从几百GB到数TB不等,适合存储大量的文件和数据。 • 内存:容量相对较小,一般在几GB到几十GB之间,用于提供快速的临时存储空间。 速度: • 磁盘:读写速度较慢,HDD一般在几十MB/s,SSD可以达到几百MB/s甚至数GB/s。 • 内存:读写速度非常快,通常在几十纳秒到几百纳秒之间,能够快速响应CPU的指令。
624 2
|
9月前
|
缓存 Linux
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
753 2
|
9月前
|
Kubernetes Java 调度
接入 MSE XXL-JOB 任务调度实现优雅下线
阿里云 MSE XXL-JOB 产品最新版本特别新增了分布式定时任务优雅下线功能,能有效保障高频业务处理在发布与重启过程中的平滑持续,避免数据丢失和调度失败。
409 97
|
9月前
|
运维 监控 安全
ARMS 助力假面科技研发运维提效,保障极致游戏体验
阿里云 ARMS 团队助力假面科技游戏业务实现全业务、全场景的监控和告警,全面提升监控覆盖率和告警有效率,其中告警平均恢复耗时(MTTR)缩短 50% 以上。
377 106
|
9月前
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
379 91
|
10月前
|
监控 Cloud Native 安全
基于 API 网关践行 API First 开发实践
API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业内的广泛认可。
525 159
|
11月前
|
存储 Java 开发者
浅析JVM方法解析、创建和链接
上一篇文章《你知道Java类是如何被加载的吗?》分析了HotSpot是如何加载Java类的,本文再来分析下Hotspot又是如何解析、创建和链接类方法的。
523 132
|
9月前
|
机器学习/深度学习 人工智能 监控
AI监控智能化客户行为轨迹分析技术
本方案通过目标跟踪技术(如DeepSORT)和多摄像头协作,实时分析顾客在商场内的行为路径,识别高频活动区域,优化商场布局与商品陈列,提供个性化营销服务。基于深度学习与时序数据分析,精准捕捉顾客动线,提升购物体验与销售转化率。
551 2