虚拟内存,地址空间,page cache

Tags: Memory   Linux  

我们平时编写程序, 执行程序的时候, 总是会接触到"内存(memory)", "buffer", "cache" 这样的概念, 多少会在英文术语和中文翻译中迷失. 本文尝试建立对这些概念和其原理的初步认识.

leon Published by 2014-03-17 03:57

Detail »

How to install latex on Fedora

Tags: Linux   Latex  

yum -y install texlive texlive-latex texlive-xetex
yum -y install texlive-collection-latex
yum -y install texlive-collection-latexrecommended
yum -y install texlive-xetex-def
yum -y install texlive-collection-xetex

Only if needed:
yum -y install texlive-collection-latexextra

leon Published by 2014-03-11 03:06

Detail »

Linux slab 分配器剖析

Tags: Memory   Linux  

动态内存管理

内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:

  • 最小化管理内存所需的时间
  • 最大化用于一般应用的可用内存(最小化管理开销)

内存管理实际上是一种关于权衡的零和游戏。您可以开发一种使用少量内存进行管理的算法,但是要花费更多时间来管理可用内存。也可以开发一个算法来有效地管理内存,但却要使用更多的内存。最终,特定应用程序的需求将促使对这种权衡作出选择。

leon Published by 2014-03-10 03:19

Detail »

x86 CPU中逻辑地址到物理地址映射过程

Tags: Memory   Linux  

(1)从CR3寄存器中获取页面目录表(Page Directory)的基地址;

(2)以线性地址的Directory位段为下标,在目录(Page Directory)中取得相应页面表(Page Table)的基地址;

(3)以线性地址中的Table位段为下标,在所得到的页面表中获得相应的页面描述项;

(4)将页面描述项中给出的页面基地址与线性地址中的offset位段相加得到物理地址。

leon Published by 2014-03-09 16:17

Detail »

Linux SLAB 分配器介绍和SLUB的出现原因

Tags: Memory   Linux  

多年以来,Linux 内核使用一种称为 SLAB 的内核对象缓冲区分配器。SLAB 分配器源于 Solaris 2.4 的分配算法,工作于物理内存页框分配器之上,管理特定大小对象的缓存,进行快速而高效的内存分配。

SLAB 分配器为每种使用的内核对象建立单独的缓冲区。Linux 内核已经采用了伙伴系统(Buddy System)管理物理内存页框,因此 SLAB 分配器直接工作于伙伴系统之上。每种缓冲区由多个 slab 组成,每个 slab就是一组连续的物理内存页框,被划分成了固定数目的对象。根据对象大小的不同,缺省情况下一个 slab 最多可以由 1024 个物理内存页框构成。出于对齐等其它方面的要求,slab 中分配给对象的内存可能大于用户要求的对象实际大小,这会造成一定的内存浪费。

Src:http://www.cnblogs.com/leaven/archive/2010/11/12/1875505.html

leon Published by 2014-03-09 04:18

Detail »