专注于操作系统内核的实现
分类: IT业界
2013-02-21 15:53:24
首先大家过年好,我也好久没有写博客了,几个月了吧,今天就来说说LMOS的最新情况。
春节期间也没什么进展。
这个最新特性要从我遇到的麻烦开始说起,什么麻烦呢?其实LMOS00.04最主要是我写
了个全新的内存管理器,包括虚拟内存。LMOS的内核和进程都运行在虚拟地址空间中。大家
知道LMOS内核是32位的,也就是说LMOS能工作在32位x86CPU上。
大家知道32位x86CPU的那些个寄存器全都是32位的,也就是说最多可以有0~0xffffffff
这么大的虚拟内存空间。要是在80年代这个空间是非常大的,可是今天这实在是太小了,原本
就小的虚拟空间,还要被内核自己挖一块去,进程的虚拟空间就更小了。大家可能和我一样有
这样的想法:为什么内核和进程要在同一地址空间中,不能各是各的。这个问题我不想说,大
家问问设计x86的工程师去,不能这样我很烦恼。大家可能会想启用CPU的PAE特性,可是这
仅仅只能通过32位的虚拟地址去访问大于4GB的物理内存,还要频繁的修改页表,麻烦至极
不说,性能损失是非常可观的。
左思右想了好几天,最终决定,把LMOS内核改成64位的。64位的地址空间就大了不少,
况且现代CPU都支持64位技术的。我承认这是我决策上的失误,我一开始就应该直接做64位
的内核。往后64位是趋势,无论智能终端还是大型服务器领域。何况我现在还不用考虑应用
程序和驱动程序的兼容性问题,可以随心所欲的修改和设计。反正将来可能也要做成64位的,
不如趁现在代码量还不多,就一步到位。以免日后在支持64位就会有诸多束缚。况且64位架
构下已经禁止分段但不完全很多设计上的缺陷所产生的麻烦已经不复存在。
LMOS-00.04将废除32位支持,全面支持64位架构,不过不是IA64,而是x86_64,或者
是AMD64。我现在正在编写64位的硬件抽象层。相信过不了多久就会完成。最后说一句:
LMOS只是进度很慢,从来没有停止。