内存管理简介之Buddy算法和slab分配

1.Buddy算法
linux对空闲内存空间管理采取buddy算法,
 Buddy算法:
把内存中所有页面按照2^n划分,其中n=0~5,每个内存空间按1个页面、2个页面、4个页面、8个页面、16个页面、32个页面进行六次划分。划分后形成了大小不等的存储块,称为页面块,简称页块,包含一个页面的页块称为1页块,包含2个页面的称为2页块,依次类推。
每种页块按前后顺序两两结合成一对Buddy“伙伴”。系统按照Buddy关系把具有相同大小的空闲页面块组成页块组,即1页块组、2页块组……32页块组。 每个页块组用一个双向循环链表进行管理,共有6个链表,分别为1、2、4、8、16、32页块链表。分别挂到free_area[] 数组上。
位图数组
用于标记内存页面使用情况,第0组每一位表示单个页面使用情况,1表示使用,0表示空闲,第二组每一位表示比邻的两个页面使用情况,一次类推。默认为10个数组,当一对Buddy的两个页面中有一个事空闲的,而另一个全部或部分被占用时,该位置1.两个页面块都是空闲,对应位置0.
内存分配和释放过程
内存分配时,系统按照Buddy算法,根据请求的页面数在free_area[]对应的空闲页块组中搜索。 若请求页面数不是2的整数次幂,则按照稍大于请求数的2的整数次幂的值搜索相应的页面块组。
当相应页块组中没有可使用的空闲页面块时就查询更大一些的页块组,在找到可用的页块后分配所需要的页面。当某一空闲页面被分配后,若仍有剩余的空闲页面,则根据剩余页面的大小把他们加入到相应页面组中。
内存页面释放时,系统将其作为空闲页面看待,检查是否存在与这些页面相邻的其他空闲页块,若存在,则合为一个连续的空闲区按Buddy算法重新分组。
2.Slab算法
采用buddy算法,解决了外碎片问题,这种方法适合大块内存请求,不适合小内存区请求。如:几十个或者几百个字节。Linux2.0采用传统内存分区算法,按几何分布提供内存区大小,内存区以2的幂次方为单位。虽然减少了内碎片,但没有显著提高系统效率。
 Linux2.4采用了slab分配器算法,该算法比传统的分配器算法有更好性能和内存利用率,最早在solaris2.4上使用。
 Slab分配器思想
1)小对象的申请和释放通过slab分配器来管理。
2)slab分配器有一组高速缓存,每个高速缓存保存同一种对象类型,如i节点缓存、PCB缓存等。
3)内核从它们各自的缓存种分配和释放对象。
4)每种对象的缓存区由一连串slab构成,每个slab由一个或者多个连续的物理页面组成。这些页面种包含了已分配的缓存对象,也包含了空闲对象。

转载于:https://www.cnblogs.com/wangfengju/archive/2013/04/13/6173187.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工操作阶段计算机是如何工作的,管理信息系统作业参考答案

(一)、单项选择题1. 系统实施阶段的主要内容之一是(A)。A.系统物理配置方案的设计 B.输入设计C.程序设计 D.输出设计2. 结构化方法中,自顶向下原则的确切含义是(A)A 先处理上级机关事务,再处理下级机关事务B 先进行总体设计,后进行详细设计C …

最近处理的几个小问题_20160311

最近处理的小问题很多,我就拿出来几个,简单和大家说一说。我就分为三个方面,硬件问题,Oracle表空间迁移,MySQL断电恢复首先是硬件问题。如果看到下面的系统日志,就会发现早在2014年就出现了一些警告和问题&…

3. 什么是icmp?icmp与ip的关系_你知道如何跟女生,确定恋人关系吗?

哈喽!同学你好!我是子伯,是一名情感咨询。今天我想给你分享,和女生再暧昧期,如何去确定关系,因为......在我做咨询当中,有很多男生跟女生,不管是在聊天上,还是在线下的交…

量子计算机完整的图片,记者带你走近世界首台超越早期经典计算机的光量子计算机(组图)...

在光学体系方面,研究团队在去年首次实现十光子纠缠操纵的基础上,利用高品质量子点单光子源构建了世界首台超越早期经典计算机的单光子量子计算机。图为基于单光子的量子计算原型机结构。潘建伟教授供图据了解,多粒子纠缠的操纵作为量子计算的…

当Grid的数据源是View时,如何使用PeopleSoft自带的Save Function?

当Grid的数据源是View时,如何使用PeopleSoft自带的Save Function? 当Grid的数据源是一个View的时候,直接使用PeopleSoft自带的Save Function会显示错误,因为View是不可以执行Update的。在这种情况下,如果想使用PeopleS…

同批号不同批次同一单据中出现数量不限制

由于同一单据中XSAYMA00040259出现了同一批号不同批次的同一品种B200416 没有得到数量限制导致数量出现负数现进行更新update sphwph set shlshl700 where spidSPH00003434 and hwHWI00000002 and piciJHAYMA00010167_3update sphwph set shlshl-700 where spidSPH00003434 and…

编程题:“丑数”

今天看剑指offer的时候碰到了“丑数”这个问题,说这个“丑数”,常规的情况是,一般人碰到这个问题会感觉到无从下手,为什么呢?因为从一般人的角度来看,比如2乘以2.3.5分别为4、6、10,3乘以2.3.5的话为6、9、…

qtreewidget点击空白处时取消以选项_VUE+elementUI 点击页面空白处弹窗不隐藏

点击空白处不隐藏弹窗,点击弹窗里的‘x’和取消按钮关闭弹窗。os:人家都是让点击空白处隐藏弹窗,为啥我们的需求有点另类?!木有办法~大佬有需求,小小程序员只能领命。。。话说,element的el-dial…

漂浮的表单

代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Typ…

计算机word文档无法工作,电脑docx打不开怎么办(word文档无法打开的解决方法)...

我们在日常工作的时候&#xff0c;经常都会遇到这样子的一个问题&#xff0c;那也就是Word文件无法的现象。当我们的工作时间又非常的紧迫&#xff0c;那么个时候该怎么办呢&#xff1f;稳住&#xff0c;别慌&#xff0c;今天小编就来和大家一起探讨一下Word无法打开的解决方法…

LinkedList剖析

第1部分 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 Doubly-linked list implementation of the List and Deque interfaces. Implements all optional list operations, and per…

3013-04-13 腾讯笔试

题目及答案参考&#xff1a;地址 为什么腾讯笔试的时间是10:30到12:30?难道腾讯人事部认为计算机的学生都是3点睡觉&#xff0c;9点起床&#xff0c;13点吃饭的吗&#xff1f;做了半个小时的题&#xff0c;就饿了&#xff1b;而且刚开始发卷子的时候&#xff0c;那卷子的模样&…

jquery调用asp.net 页面后台方法

先创建一个aspx页面编写一个客户端控件<input type"button" id"AjaxDemo" value"AjaxDemo"> 再aspx后台的页面编写一个简单的方法,代码如下: [WebMethod]public static string ABC(string ABC){ return ABC;} 必须声明为静态方法&#…

powerdesigner怎么导出pdf_各种科研绘图软件中的矢量图导出技巧

引言科技论文常含有插图&#xff0c;借助插图来形象直观、简明扼要地表达所要表述的内容(梁福军. 科技论文规范写作与编辑[M]. 清华大学出版社, 2014.)。科研绘图软件有很多种&#xff0c;而软件导出的图片可以分为矢量图&#xff08;vector&#xff09;和位图&#xff08;bitm…

江西计算机一级考试教程,江西省2019年下半年计算机一级考试复习教程:计算机基础及MS Office应用上机指导...

&nbsp&nbsp[导读]:江西省2019年下半年计算机一级考试复习教程&#xff1a;计算机基础及MS Office应用上机指导&#xff0c;更多江西等级考试用书&#xff0c;请访问易考吧江西等级考试栏目江西省2019年下半年计算机一级考试复习教程&#xff1a;计算机基础及MS Office应…

Typesafe公司正式更名为Lightbend公司

Scala编程语言的发明者&#xff1a;Typesafe公司&#xff0c;已经完成他们的更名计划&#xff0c;改名后成为Lightbend公司。Typesafe公司在去年五月就宣布了他们的更名计划&#xff0c;从那时起&#xff0c;他们希望可以在两个月内完成改名相关事宜。Typesafe公司邀请了社区的…

理解Javascript_12_执行模型浅析

大家有没有想过&#xff0c;一段javascript脚本从载入浏览器到显示执行都经过了哪些流程&#xff0c;其执行次序又是如何。本篇博文将引出javascript执行模型的概念&#xff0c;并带领大家理解javascript在执行时的处理机制。 简单的开始 简单的代码&#xff1a; <script ty…

怎么制作铁闸门_“短笛”拿铁,最近的心头好!

其实花式咖啡除了市面上一些常见的款式外&#xff0c;还有一些是不常见又好喝的&#xff01;今天来给大家推荐一款“短笛”拿铁&#xff0c;最近的最爱&#xff01;什么是短笛拿铁&#xff1f;piccolo latte&#xff0c;在意大利文中“piccolo”是小的意思&#xff0c;而latte则…

计算机发展趋势是规格化,2016年春季计算机应用基础月考卷(4月).doc

2016年春季学期计算机应用基础4月考卷姓名&#xff1a; 得分&#xff1a;一、单项选择题。(共有75个小题&#xff0c;每小题2分&#xff0c;共计150分)1. 计算机的发展通常认为经历了四代&#xff0c;第二代计算机的主要元器件是( )A. 电子管 B&#xff0e;晶体管 C&#xff0e…

C#与.NET程序员面试宝典 1.3 投递简历

在IT行业中&#xff0c;应聘是大多数人获得工作机会的主要途径&#xff0c;通常人们从学校毕业后即开始参加各种形式的招聘场合。从招聘方的角度来说&#xff0c;不同的公司有不同的招聘渠道&#xff0c;但大多数都会重点采用网络、校园、招聘会3个渠道进行招聘员工。想要应聘到…