和欣嵌入式操作系统是基于构件化软件模型,构件化软件设计思想贯穿了整个系统的设计与实现,系统实现本身就是构件模式,除内核中层控制部分外,所有系统功能都以构件接口形式提供。另外,操作系统对构件化软件模型提供了必要的运行环境,来源不同的构件可以在该环境上实现互操作,系统提供了构件自动寻址/自动加载机制,用户不必知道调用的构件程序是本地的还是来自于网上,即构件运行环境对用户透明。构件化系统的实现,使得操作系统本身具有高度的灵活性和扩展性。和欣采用了CAR构件技术。
1.2 CAR构件技术
CAR构件技术是在总结面向对象编程、面向构件编程技术的发展历史和经验的基础上,为更好地支持面向以Web服务为代表的下一带网络应用软件开发而发明的。CAR(Component Assembly Runtime)构件技术定义了一套网络编程时代的构件编程模型和编程规范,它规定了一组构件间相互调用的标准,使二进制构件可自描述并能够在运行时动态链接。
CAR构件技术通过二进制的封装及动态链接技术解决软件的动态升级和软件的动态替换问题,面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,同时为用户提供多个接口。整个构件隐藏了具体的实现,只用接口提供服务。这样,在不同层次上,构件均可以将底层多个逻辑组合成高层次上粒度更大的新构件,构件之间通过约定的接口进行数据交换和信息传递,构件的位置相互透明,可以在同一个或不同的用户进程空间、不同的机器设置不同的构件上用不同的语言编写,只要其符合事先约定的构件规范。
2 和欣操作系统上的TCP/IP协议栈的特点与实现
2.1 和欣嵌入式操作系统上TCP/IP协议栈的特点
由于嵌入式系统在硬件资源的占有量以及处理器的处理能力等方面的限制,使得TCP/IP协议的嵌入式实现与其在通用操作系统中的实现有很大不同。首先,由于嵌入式处理器的时钟频率低,地址、数据总线窄,导致嵌入式系统对一个通用IP包的处理要花费更多的处理机时间,从而影响其他任务的执行,因此需要对庞大的复杂的TCP/IP协议栈进行裁剪,使之具有简单、高效的特点同时在设计嵌入式TCP/IP协议栈时要合理控制中断处理程序的大小,使得中断处理程序的运行时候尽可能短;同时把那些无实时性要求和费时的工作移到主程序中执行,从而保证协议的正确执行,具体来说,就是把TCP/IP协议的处理工作放到主程序中对网络接口的控制芯片采用循环查询方式,在其他中断任务的执行间隙处理TCP/IP协议,以牺牲系统的响应时间换取系统的可靠性,再者由于嵌入式的系统的存储空间有限,一般情况下只能开辟几KB字节的缓存区接收数据包,并且其存储空间固定,不是动态分配的。因此,遇到大数据包时就会出现缓冲区溢出的错误。通常,嵌入式系统接收的数据包类型仅为系统状态配置包、控制动作命令包、通信控制包等,这些包容量较小,由实时数据或网页向网络发送的数据包比较长,但可以通过设计格式加以控制。
和欣操作系统是基于微内核的操
(2)如何设计构件接口。要实现(1)所提到的构件的自由替换,必须设计良好的构件接口。所有的构件实现应该继承该接口。设计接口的原则是尽量保持接口的通用性和简洁性。当有新的功能添加时,可以通过继承实现新的接口方便地加入原有的框架,从而实现软件的无缝升级。
(3)提高网络通信的效率。一个高效的通信协议需要满足:1)上下文切换和定时器的轻型完成;2)多个协议具有统一的使用界面;3)在网络设备,层和用户层之间有高效的缓冲机制,避免不必要的拷贝。
如果操作系统提供了快捷的上下文切换及高效的进程间的通信,则整个网络协议栈便可以作为一个用户态进程对用户进程提供服务,如果进程上下文切换比较复杂,则整个网络协议栈可以作为动态链接库链入用户进程地址空间,但需要对多进程共享的数据加锁,进行同步访问控制。另外一种选择是将网络协议栈装入内核空间,也可以避免频繁的进程上下文切换带来的系统开销。
因为采用了通用的SOCKET编程接口作为终提供给用户使用的接口,从而使多个协议具有统一的使用界面。同时,在采用细粒度构件的网络协议栈中,各层协议之间的接口也是精细构造的统一接口,为了避免大量数据的拷贝,需要设计良好的数据结构,同时采取"共享内存"的方法。网络协议各层次间尽量以指针方式传递数据。
构件化的网络协议栈具有以下优点:
(1)针对不同网络应用的需求,能限度地利用领域相关知识进行调整,提高了性能。
(2)底层构件可以在不影响顶层使用的情况下进行修改。
(3)方便用户添加及开发调试新的协议。
该文采用上海科泰公司的CAR构件技术在和欣操作系统上实现了一个构件化的网络协议栈,该网络协议构件既可以加载在内核态,也可以加载到用户态,方便开发调试,有利于开发新网络协议栈,其他开发者采用构件的方法开发出了高效或者针对某特定领域的网络协议栈,可以方便地替换和欣操作系统上原有的网络协议栈。使用构件化的方法开发网络协议栈也可以推广到其他支持构件的操作系统上。
[1]. CAR datasheet https://www.dzsc.com/datasheet/CAR_1852009.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。