简单说说linux内存

问题1:linux对进程地址空间的3G/1G划分会导致什么问题?

A:由于kernel只分配到了1G的地址空间,所以,如果user space的进程没有给kernel space有效数据的话,它可以直接寻址的物理内存最多只有1G。那么,如果物理内存有2G,就有1G是kernel无法直接寻址的。

为了解决这个问题,开发者引入了low memory 和high memory的概念。low memory也叫main memory,是指内核能直接寻址访问的那部分内存,在3G/1G的划分下,实际上会小于1G。high memory是指kernel没有能够这直接映射的那部分内存。当kernel要使用high memory时,它会建立一个特殊的page table 来映射这部分内存,这个代价是比较昂贵的。

For the most part, the kernel's own data structures must live in low memory. Memory which is not permanently mapped cannot appear in linked lists (because its virtual address is transient and variable), and the performance costs of mapping and unmapping kernel memory are too high. High memory is useful for process pages and some kernel tasks (I/O buffers, for example), but the core of the kernel stays in low memory.

(以上这段话引自http://lwn.net/Articles/75174/)

2. 为什么会出现virtual memory?

A:简化内存处理,提供统一接口,更有效的利用物理内存。

over

你可能感兴趣的:(简单说说linux内存)