论文部分内容阅读
本文探讨了WebitOS中TCP相关任务的互斥问题。WebitOS是一个嵌入式实时操作系统,其内核是一个基于静态优先级的抢占式实时内核。要使其与Internet互联的关键是实现TCP/IP协议。而在这一抢占式内核上设计TCP协议时会遇到如下问题:在一个TCP连接上发送与接收数据的过程是在不同的任务中完成的,若不加以控制,则不同的任务在并发访问tcpsocket这一共享内存区时会造成对TCP状态机的状态访问存在竞争条件。传统的解决方法有关闭中断和使用信号量。关中断会影响系统对外部中断及时响应和处理的能力;在一般情况下,信号量是解决互斥和同步协调任务的较好方法。然而,TCP状态机比较复杂,涉及的函数和需要保护的共享资源较多,若使用信号量的方法实现互斥,则在所有涉及到的函数中都要对信号量进行检测,这需要一定的系统开销。
由于WebitOS对于同等优先级的任务并不进行轮转调度,提出了一个解决方案,即创建一个与接收任务相等优先级的发送任务来专门进行发送,并对提出的方案以及传统的解决方案进行了研究并分别实现。最后,在以ATmega128MCU为核心的InternetAccessServer开发板上,利用一个基于嵌入式HTTP协议的应用程序对提出的方案的实现和传统解决方案的实现进行了测试和分析。分析实验结果证明了创建单独的发送任务这种解决方案的正确性和合理性。