理解内存管理机制

举报
久绊A 发表于 2025/02/24 22:58:37 2025/02/24
53 0 0
【摘要】 固定分区分配概念假设计算机的内存就像一个大仓库,这个仓库被人为地划分成几个固定大小的区域,每个区域就是一个分区。比如把100MB的内存划分成5个分区,每个分区20MB。当一个程序需要运行时,操作系统会根据程序的大小,把它分配到一个合适的分区中。如果程序大小是15MB,就把它放到一个20MB的分区里。这种方式的优点是实现简单。就像仓库管理员只需要按照固定的格子来存放货物,不需要复杂的计算和调整...

固定分区分配

概念

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

应用场景

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

动态分区分配

概念

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

应用场景

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

分页管理

概念

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

应用场景

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

分段管理

概念

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

应用场景

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

段页式管理

概念

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

应用场景

  • 在一些对内存管理要求非常高的复杂系统中,如大型服务器操作系统,段页式管理能够充分发挥其优势。它能够高效地管理大量的内存资源,同时支持复杂的程序结构,让系统运行更加稳定和高效。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。