自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

vanbreaker的专栏

谨以此记录下自己的每一点、每一滴、每一步

  • 博客(9)
  • 收藏
  • 关注

原创 Linux伙伴系统(三)--分配页

水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7621289       前面已经介绍了伙伴系统的原理和Linux伙伴系统的数据结构,现在来看伙伴系统是如何来分配页面的。实际上,伙伴系统分配页面的算法并不复杂,但是由于考虑到分配内存时要尽量减少碎片的产生(涉及迁移机制)以及当内存不足时需要采取各种更

2012-05-31 20:22:34 10914 1

原创 Linux伙伴系统(二)--伙伴系统的初始化

水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7611585       伙伴系统的初始化主要是初始化之前介绍的伙伴系统涉及到的数据结构,并且把系统初始化时由bootmem allocator管理的低端内存以及系统的高端内存释放到伙伴系统中去。其中有些和zone相关的域在前面>中已经有所介绍。

2012-05-29 13:06:39 8585 1

原创 Linux伙伴系统(一)--伙伴系统的概述

水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7605367 伙伴系统的概述        Linux内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下,避免碎片的产生。Linux采用伙伴系统解决外部碎片的问题,采用slab解决内部碎片的问题,在这里我们先讨论外部碎片问题。避免外部

2012-05-28 16:18:02 41687 9

原创 Linux高端内存映射(下)

非连续内存分配         非连续内存分配是指将物理地址不连续的页框映射到线性地址连续的线性地址空间,主要应用于大容量的内存分配。采用这种方式分配内存的主要优点是避免了外部碎片,而缺点是必须打乱内核页表,而且访问速度较连续分配的物理页框慢。       非连续内存分配的线性地址空间是从VMALLOC_START到VMALLOC_END(具体可以参见>),共128M,每当内核要用vmal

2012-05-22 21:54:15 8966 4

原创 Linux高端内存映射(中)

临时内核映射       临时内核映射和永久内核映射相比,其最大的特点就是不会阻塞请求映射页框的进程,因此临时内核映射请求可以发生在中断和可延迟函数中。系统中的每个CPU都有自己的临时内核映射窗口,根据不同的需求,选择不同的窗口来创建映射,这些窗口都以枚举类型定义在km_type中enum km_type {KMAP_D(0) KM_BOUNCE_READ,KMAP_D(1) KM

2012-05-18 17:22:52 5088 1

原创 Linux高端内存映射(上)

高端内存概述        在32位的系统上,内核占有从第3GB~第4GB的线性地址空间,共1GB大小,内核将其中的前896MB与物理内存的0~896MB进行直接映射,即线性映射,将剩余的128M线性地址空间作为访问高于896M的内存的一个窗口。引入高端内存映射这样一个概念的主要原因就是我们所安装的内存大于1G时,内核的1G线性地址空间无法建立一个完全的直接映射来触及整个物理内存空间,而对于8

2012-05-18 13:49:02 9494 1

原创 Linux节点和内存管理区的初始化

节点和管理区是内存管理中所涉及的重要概念,其数据结构在前文《linux物理内存概述》中已经介绍,现在让我们来看看linux是如何完成节点和管理区的。       在内核首先通过setup_arch()-->paging_init()-->zone_sizes_init()来初始化节点和管理区的一些数据项static void __init zone_sizes_init(void){

2012-05-10 20:36:33 8535 6

原创 Linux页表机制初始化

Linux启动并建立一套完整的页表机制要经过以下几个步骤:1.临时内核页表的初始化(setup_32.s)2.启动分页机制(head_32.s)3.建立低端内存和高端内存固定映射区的页表( init_memory_mapping())4.建立高端内存永久映射区的页表并获取固定映射区的临时映射区页表(paging_init())下面主要介绍3和4  一、低端内存页表的

2012-05-09 17:18:26 12351 3

原创 bootmem allocator

在系统启动阶段,buddy系统和slab分配器建立之前,系统的每个节点都拥有自己的bootmem allocator来实现内存的分配,当启动阶段结束后,bootmem allocator将被销毁,而相应的空闲内存会提交给buddy系统来管理,因此bootmem allocator所存在的时间是短暂的,它的宗旨是简单,而非高效!bootmem allocator的基本思想是在一个节点中建立一片位图区

2012-05-03 15:54:52 5153 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除