这是一篇介绍基于Linux硬实时操作系统XtratuM的文章。XtratuM是由部分原RTLinux/GPL的开发人员于2004年开发,是欧洲OCERA项目的一部分。XtratuM类似RTlinux系统,XtratuM位于Linux内核和底层硬件之间。XtratuM采用了超微内核技术,其主要功能包含硬件中断管理,时钟管理和内存管理,以及一个基于优先级的调度器。当前XtratuM已经发布了三个版本,V0.1, V0.3 和V1.0。XtratuM也是一个简单的虚拟机,它采用的是半虚拟技术(para-virtulization),Linux 和其它的OS做为独立的域运行于XtratuM之上,每个域有自己独立的物理内存和地址空间,Linux是具有最低优先级的ROOT域,其它域可以是具有高优先级的实时系统,例如RTLinux。本文主要包含XtratuM与RTlinux系统的关系,XtratuM系统的功能模块和实现,XtratuM系统的使用等。
XtratuM 一词源于StratuM,意味分层的意识,也就是说XtratuM 系统是一层一层的,就像"宝塔镇河妖"中的宝塔。当然 ,XtratuM系统不会像宝塔那么多层,那么XtratuM到底 有几层呢?了解Linux系统的人都知道,Linux系统共用两层 :内核和用户层。同样在XtratuM系统中,也有两层 ,XtratuM内核层和XtratuM用户层。类似于Linux 系统,XtratuM内核向下可以访问硬件,向上可以为Xtrat uM用户层服务。但是在XtratuM系统中,运行于Xtratu M用户层的不在是一个个的进程或线程了,而是域(domain) 。什么是域呢?简言之,是一种比进程更上层的可运行单元 ,一个进程可以有多个线程,同样,一个域可以包括多个进程 。有人会问,那域不是成操作系统了吗?我可以回答你,"you are right"。在XtratuM系统运行的域,就是一个个独立的操 作系统。
在XtratuM中,Linux不在单单是Linux操作系统 ,它还是一个域,一个运行于XtratuM系统上的域 ,但是由于Linux要完成系统的启动和关闭等重要任务 ,它被命名为根域(root domain)。当XtratuM系统运行起来以后 ,XtratuM会将中断,定时器和部分物理内存管理接管过来 。而Linux系统就会失去控制底层硬件中断和定时器的权限 。这里为什么说XtratuM负责部分物理内存呢?我们知道 ,系统启动时首先运行的是Linux系统,然后XtratuM系统 是以module的形式被加载,当XtratuM系统被加载后 ,XtratuM才去接管部分硬件设备。至于内存 ,它不会管理所有的物理内存,而仅仅管理除了Linux不用的物理 内存。这里的不用是指能够被XtratuM系统获取并且不会被Li nux内核给交换出去。具体实现我们后面会介绍。Linux启动时 已经获取了自己需要的物理内存,它不在去关心或向XtratuM索 取额外的物理内存空间了,但是对于其它的域,例如RTLinux系 统,它的启动是通过加载工具的。它需要向XtratuM申请内存 ,并且是足够的物理内存。XtratuM根据实际情况会给RTLi nux系统或其它新加载的域分配定额的物理内存。当然 ,现在的新加载域不会获取很多的物理内存,因为,Linux的运行 会使用大量的内存资源,并且RTLinux系统的运行也不需要这么 多空间。因此,在XtratuM 1.0中,除了域镜像占用的空间以外,XtratuM系统只会给每 一个新域分配大约3MB的物理内存作为栈。因此说XtratuM只 是实现部分内存管理,它不会干涉Linux对内存的使用。
既然Linux"活"在XtratuM的上面,那么Linux又是 如何生存的呢?答案是通过底层的虚拟机。XtratuM就是能够支 持Linux运行的虚拟机,但是它不是个令人讨厌的管家婆 ,它仅仅关心它认为比较重要的资源。XtratuM系统的目的是结 束当前RTLinux/GPL的这种架构,并取而代之 ,也就是说它的目的是实现具有实时性能的新一代实时Linux系统 。为了满足这种目的,XtratuM认为与实时性能相关的资源最重 要的是两个:中断和时钟。为此,XtratuM采用超微内核设计思 想,仅仅实现了中断和硬件时钟的管理,并且采用虚拟技术 ,为上层的系统或域提供虚拟中断和虚拟时钟。而Linux就是生活 在这种虚拟环境中,过着被"欺骗"的生活。
待续..........