Linux的分段和分页机制

Tags: Memory   Linux  

分段可以给每一个进程不同的线性地址空间,而分页可以把同一线性地址空间映射到不同的物理空间。与分段相比,Linux更喜欢使用分页方式,因为:

1、当所有进程使用相同的段寄存器时,内存管理变得简单。

2、RISC体系结构对段的支持有限。

leon Published by 2014-05-02 23:58

Detail »

Linux中内存的分配和回收

Tags: Memory   Linux  

一。[[Anchor(NBE1)]]系统启动时的内存操作

1。pg0的位置和尺寸

当 系统刚刚启动时,在分页功能未打开前,线性地址和物理地址是一一对应的。刚开启分页功能时,pg0的内存地址是 在编译内核时定义好的,见arch\i386\kernel\vmlinux.lsd.S,大小为4096字节,启始地址紧跟内核在内存中物理地址。由于 内核保护模式代码启始位置为0x100000,所以pg0地址=0x100000+内核保护模式代码尺寸。

对pg0的操作主要是开启分页机制时填写页面描述表信息,上一节在第一次页寻址设置中已经详细介绍。

leon Published by 2014-04-21 23:50

Detail »

Linux伙伴系统算法及改进

Tags: Memory   Linux  

Linux内部使用页框来管理物理内存,在实际应用中,经常需要分配一组连续的页框,而频繁地申请和释放不同大小的连续页框,必然导致在已分配页框的内存块中分散了许多小块的空闲页框。这样,即使这些页框是空闲的,但要分配一个大块的连续页框就可能无法满足。

Linux采用了伙伴系统来解决上述难题。把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512和1024个连续页框的页框块。最大可以申请1024个连续页框,对应4MB大小的连续内存。每个页框块的第一个页框的物理地址是该块大小的整数倍。例如,大小为16个页框的块,其起始地址是16×212的倍数。内存中的空闲页框组织形式如下图:

leon Published by 2014-04-11 00:00

Detail »

频繁分配释放内存导致的性能问题的分析

Tags: Memory   Linux  

现象
1 压力测试过程中,发现被测对象性能不够理想,具体表现为:
进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70
2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000

leon Published by 2014-04-03 12:44

Detail »