美文网首页电子元器件知识
浅谈操作系统的内存分配原则

浅谈操作系统的内存分配原则

作者: 927120b75c96 | 来源:发表于2018-12-12 15:27 被阅读12次

  在多道程序当中,如果要让我们的程序运行,必须先创建进程。而创建进程的第一步便是要将程序和对应的数据装入内存。把用户的源程序变成可执行的程序要经历“编译-链接-装入”三个过程。

  此刻我要说的就是最后的一个步骤,如何为一个用户程序分配相应的内存空间。

  第一种:单一连续分配方式

  适用于单用户、单任务的操作系统。没什么好讲的。

  第二种:固定分区分配

  此种分配方式把内存空间分为固定大小的区域,每个分区允许一个作业被装入。分区大小可以不相同。通常会建立一张分区使用表来记录每个分区的起始地址、分区大小、状态。没有足够大的分区则拒绝分配内存。此种分配方式是最早的多道程序的存储管理方式。

  缺点:限制了进程的数目,内存空间利用率比较低。

  第三种:动态分区分配

  此种方式涉及到相应的数据结构(分区表、分区链),分区分配算法和回收操作。

  分区分配算法有:首次适应算法 ( 以链表结构为例,下同。从链首开始顺序查找,找到一个符合条件的分区即可进行相应的分配,没有符合条件的则分配失败 ) 、循环首次适应算法(从上一次符合条件的分区进行循环查找 ) 、最佳适应算法(首先需要把空闲分区链表按容量排序 [ 排序的目的是为了加速查找,否则就要遍历整个链表 ] ,然后从链首进行顺序查找 ) 、最坏适应算法( 选择最大的空闲分区,然后进行分配 ) 、快速适应算法 ( 分类搜索算法,采取分区表加上相同类别管理的链表进行记录,仅需根据进程的长度,即可分配相应的内存空间 )。

  回收内存的方式:只要回收空间与空闲分区相邻接,那么仅需与空闲分区合并即可;否则,需为回收区单独建立一项新的表,然后把回收区的首地址插入到空闲链中相应的位置。

  缺点:相应分配的算法比较复杂,回收空间需要合并分区,系统开销大。

  第四种:伙伴系统

  规定:已分配区间或空闲区间的大小均为2的k次幂。

  具体:当进程需要一个长度为n的空间时,需要计算一个i值,使得2的i-1次方小于n,2的i次方大于等于n。然后根据计算结果,得到空闲分区链表中查找大小为2的i次方的空闲分区,如果不存在这样的分区,则将2的i+1次方化成两个2的i次方的空闲分区,以此类推,总有符合的空闲分区。回收与分配空间的方式恰好相反。

  第五种:哈希算法

  在分类搜索算法的基础上,利用哈希快速查找的优点,快速到查找相同容量类别的链表,实现最佳的分配策略。

  第六种:可重定位分区分配

  此种算法考虑到的情况是:有很多内存碎片。对于一个进程来说,没有任何一个碎片能够满足进程所需的容量要求,但是碎片的容量总和能够满足一个或者多个进程的容量要求。

  解决方案:①把内存中的所有作业全部移动,让他们紧凑在一起,这样内存碎片便集中在一起了。(需要对移动的程序地址进行修改才行)

  分区分配算法:与动态分区分配算法类似,不过多了“紧凑”的操作。

  第七种:对换

  将占用内存却没有干什么事情的进程给放到对换区(外存分为文件区和对换区)。

  到这里,关于《浅谈操作系统的内存分配原则》已经说完了,该内容是云汉芯城小编通过网络搜集资料整理而成,如果你还想了解更多关于电子元器件的相关知识及电子元器件行业实时市场信息,敬请关注微信公众号【云汉芯城】

  (素材来自网络,由云汉芯城小编搜集网络资料编辑整理,如有问题请联系处理!)

相关文章

  • 浅谈操作系统的内存分配原则

    在多道程序当中,如果要让我们的程序运行,必须先创建进程。而创建进程的第一步便是要将程序和对应的数据装入内存。把用户...

  • 内存

    操作系统对内存管理哪些内容: 1. 操作系统负责内存空间的分配和回收 2. 操作系统需要提供某种技术从逻辑上内内存...

  • 【操作系统】3.1 内存管理基础

    1.内存管理的介绍 问题:操作系统的内存管理主要是做什么? 操作系统的内存管理主要负责①内存的分配与回收(mall...

  • 内存与性能

    申请与释放内存 申请内存的过程 用户态使用malloc向操作系统申请内存 操作系统查找页面是否有空闲内存,如果有则...

  • 内存管理——分页、分段

    参考 怎样通俗的理解操作系统中内存管理分页和分段?计算机操作系统 - 内存管理

  • 内存

    操作系统的物理内存: —— 常说的 “内存条”数据从磁盘中加载到内存后,才能被CPU访问。【操作系统的代码和数据...

  • linux操作系统基础知识有哪些

    内容来源(公众号:PHP版WEB项目)linux操作系统基础知识:1、操作系统区分物理内存和虚拟内存;2、了解内存...

  • 内存优化(三)Android对象池使用

    概述 由内存优化(一)浅谈内存优化中看出,内存优化不仅要从防止内存泄露入手,也要注意频繁GC卡顿,内存抖动以及不必...

  • Linux C 内存管理

    32位操作系统内存最大空间为 2^32 = 210*2102^104 = 4GB; 64位操作系统的内存分布 ​ ...

  • Android内存泄漏问题

    一、垃圾回收 一般来说,程序使用内存遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然...

网友评论

    本文标题:浅谈操作系统的内存分配原则

    本文链接:https://www.haomeiwen.com/subject/dgzuhqtx.html