● 摘要
随着Linux操作系统在计算机科学与工程的各个领域得到越来越广泛的应用,各种基于Linux的实时操作系统应运而生,其中RTLinux因为文档齐全、代码丰富、接口符合POSIX规范等优点,到了广泛的应用。但由于其自身设计上的限制,RTLinux只提供了一个实时操作系统所应提供的基本服务,不支持内存动态管理,对于磁盘与网络I/O的支持也十分有限。为了解决I/O操作的问题,RTLinux提供了RTFIFO机制。实时线程通过RTFIFO接口向实时管道的一端写入(读出)数据,同时程序员要提供一个运行在用户态下的程序从实时管道的另一端读出(写入)数据完成实际的I/O操作。这种方法的优点是逻辑简单,实现起来难度较小,但缺点是要求程序员为每个需要磁盘或者网络I/O操作的实时线程提供一个对应用户态的程序来完成实际的I/O操作,使用不便。本文分析了RTLinux目前采用的I/O机制的优缺点,并设计实现了一种新的I/O方法,即通过Linux内核提供的延迟处理机制来完成I/O操作;由于RTLinux不支持内存动态管理,为支持新I/O方法的实现本文也调研了常用的动态内存管理算法,并选取TLSF算法为RTLinux实现了动态内存管理模块。新I/O机制与目前在RTLinux中广泛使用的RTFIFO相比大大简化了实时应用程序的结构,降低实时应用开发与移植的难度,并且I/O吞吐率在单线程的情况下与RTFIFO持平,在多线程的情况下要优于RTFIFO。通过原型系统的实现验证了这一方法的可行性,同时在塞伯数据采集仿真系统中的应用也验证了该方法良好的实用性。