分类: LINUX
2009-03-31 08:57:30
MSP-Linux
1、概述
随着电子信息化的发展和网络时代的到来,网络的安全性和实时性越来越被人们所关注。UNIX做为一种更安全、更可靠的实时操作系统应用于国防领域等方面,已经成为未来发展方向,但是UNIX成本太高,此时一种开放性的操作系统(L-UNIX)完全继承了UNIX安全、可靠的全部优点:
基于PC的开发式架构开放性的操作系统,友好的人机交互界面和网络通信协议。
可靠的系统安全,系统采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
自带绝大多数开发工具
良好的可移植性,能从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。
为了满足硬实时系统严格的响应时间要求,我们公司就在L-UNUX基础上加上自己的硬实时开发机制,可以完全兼容UNIX的MSPLinux。
2、MSPLinux 简介
MSPLinux 是我们公司开发的基于Linux的实时系统解决方案,是目前Linux 平台的纯软件的硬实时扩展子系统。MSPLinux不对Linux系统进行任何修改,完全继承Linux 的特点,同时具备以下优点:
中断仿真:
在中断控制硬件与LINUX核心之间放置一个软件仿真层,所有的硬件中断都被仿真器所截获。不论何时若有中断发生,仿真器就检查这个变量。如果是1(LINUX已开中断),就立即调用LINUX的中断处理程序;否则,LINUX中断被禁止,中断处理程序不会被调用,而是在保存着所有挂起中断的信息的变量的相应位置1。当LINUX重新开中断,所有挂起中断的处理程序都会被执行。这种仿真方式可以称之为"软中断"。
实时任务:
实时任务是在一个由核心控制的调度程序的调度下执行的用户定义的程序。MSPLinux 最初将实时任务设计成ELF格式的目标文件。这一设计方案的最大缺点就是性能比较差。原因在于,第一,486的缓存是虚拟的。所以每当页表目录的基址寄存器改变时,TLB(转换后备缓冲器)就会失效。由于实时任务的上下文转换频繁,所以TLB的频繁失效就导致系统性能的严重下降。第二,486的保护级别变换耗时不少。比如,陷入更高级别时需要71个循环,而其它指令一般少于10个循环。解决的办法就是使用可加载模组技术,所有的实时任务都同处于一个地址空间-内核地址空间,不仅避免了频繁的TLB失效,同时也消除了变换保护级别的消耗,而且任务转换也变得相当容易。
进程调度:
MSPLinux 是一个独立的内核,独立于Linux 内核而单独存在,也就是说MSPLinux 把Linux 内核变成一个子任务,可以和其他实时任务同时被调度。MSPLinux 自带一个完全抢占、静态优先数的缺省调度程序,它把LINUX的任务设为最低的优先级。如果实时任务消耗掉全部的处理器时间,LINUX的任务就得不到一点CPU时间来运行,系统看起来就好像挂起。MSPLinux 采用的方法是允许用户编写自己的调度程序,并可以编译成模组的形式。这样就可以方便地试验不同的策略和算法对于某一特定应用的适合性,从中选出最优。并且提供RT-FIFO(实时队列)信息交换。
时钟:
MSPLinux 通过将系统的实时时钟设置为单次触发态,然后利用CPU的计数寄存器提供高达CPU时钟频率的定时精度,可以提供几个微妙级的调度粒度。
支持轻量级的实时TCP/IP传输协议。
3、MSPLinux 应用领域
因为MSPLinux 是一个基于Linux 的实时内核,因此最适合应用在既要求X-W图形等高级任务,又需要实时任务的场合,如下面的领域:
航空、航天、军事测控
基于PC的控制软件/设备
分布式实时仿真
工业生产自动化
运动控制、机器人和数控设备
实时数据采集和测量
4、MSPLinux 应用架构
MSPLinux 是一个独立的内核,独立于Linux 内核而单独存在,其将Linux 内核变成一个子任务,可以和其他实时任务同时被调度。MSPLinux 自带一个完全抢占、静态优先数的缺省调度程序,并将LINUX的任务设为最低的优先级。如图:
(图片没办法弄上)