分类:
2009-03-22 11:03:45
由于Linux/i386和L4/x86对于地址空间的划分都是下列方案:
1、用户空间:[0,0xC0000000),即[0,3G);
2、内核空间:[0xC0000000, 0xFFFFFFFF],即[3G, 4G)。
L4的物理内存管理相对于Linux至少有如下优势:
1、L4的物理内存管理放置于用户线程,Linux则将其放置于内核;所以L4可以自由定制物理内存管理算法而不必重新编译内核。
2、L4的单个物理内存管理器可直接管理[0,3G)物理内存;而Linux只能直接管理1G内存,因为可以直接映射到L4内存管理器的物理内存有3G,而直接映射到内核的物理内存最多只能有1G;
3、 由于[3G,4G)的空间属于内核空间,单个L4地址空间无法管理所有物理内存,但Sigma0可以将[3G,4G)范围的物理内存Grant到另外一个 地址空间的3G以内范围,由另外一个地址空间的线程来管理这些高端内存;Linux则不得不通过实现一个蹩脚的算法(预留一小段1G以内的虚拟空间,通过 将超过1G的物理页面映射到这段空间来操作它们)来管理高端内存。