没一直看完所有帖子。不过讨论内存模型的时候,有时得分清哪些是 linux 对内存模型的抽象。哪些是底层硬件对系统编程的要求。
我的概念是,GDT 之类的这些寻址机制,理解成 x86 架构的知识比较好。它不属于 linux 的范畴。在其它架构下运行的 Linux 可能完全不是这个样子的。书一般会就 x86 这个架构讲 Linux,讲的寻址都是硬件上的东西。换句话说,windows 要想用 x86 的处理器也得这么写,和 linux 没什么关系。
由于我学得也是 x86 架构下的 Linux,所以我也很难界定 Linux 和硬件之间的界线。但 linux 为了能在各种硬件平台上运行,这两者之间的界线应该是特别清晰的。linux 内核对内存有个很明确的模型抽象,然后底层就是在所有硬件上实现了内核要求的这个内存模型。Linux 的模块化做得很好,内存模块和其它模块的耦合性有限,所以这块的知识一般也非常容易拎出来单讲。一般就 x86 这个架构讲的书,往往也有模糊这个界线的倾向,把内核模型和硬件模型讲的水乳交融。不过我感觉应该不是这样的。