首页 理论教育 物联网操作系统Contiki:uIP协议缓存区管理技巧

物联网操作系统Contiki:uIP协议缓存区管理技巧

时间:2023-11-20 理论教育 版权反馈
【摘要】:缓存区管理是协议栈中的关键操作,接收和发送的数据分组缓存在存储器中,缓存管理系统确保有足够的存储器可用于数据分组。在通用协议栈中,较差的缓存管理策略可能导致性能欠佳。为了提供高吞吐量,传统IP 堆栈使用不同复杂度的缓存管理策略。为了确保uIP 协议正在处理数据分组时数据分组缓存区不会被重写,尤其是当uIP 协议明确要求设备驱动程序写数据的时候,uIP 协议不允许通信设备驱动程序直接写入缓存区。

物联网操作系统Contiki:uIP协议缓存区管理技巧

缓存区管理是协议栈中的关键操作,接收和发送的数据分组缓存在存储器中,缓存管理系统确保有足够的存储器可用于数据分组。在通用协议栈中,较差的缓存管理策略可能导致性能欠佳。在智能物体中,内存要求尤其严格的缓存管理具有确保协议栈即使在内存不足时也能运行的关键功能。

为了提供高吞吐量,传统IP 堆栈使用不同复杂度的缓存管理策略。需要快速分配和释放缓存区,以满足来自网络并由应用程序发送大量数据的需求。对于智能物体,其数据速率通常远低于通用计算机,因此不需要针对高吞吐量优化缓存管理策略,相反,内存是稀缺资源,因此缓存管理机制必须能够有效地利用少量内存。

uIP 协议的缓存管理策略非常简单,为了使使用内存少并降低代码复杂性,uIP协议的所有分组都放在单个内存缓存区中,当通信设备驱动程序接收到分组时,把这些分组复制到缓存区,输出分组直接在该相同缓存区创建。使用单个缓存区有三个优点:第一,没必要实现复杂的缓存区管理机制,这些机制需要代码空间和缓存内存,在内存受限的系统中这都是资源浪费;第二,因不需要处理多缓存机制而使协议实现变得更加简单;第三,因为缓存位于内存中单个位置不移动,C编译器常常能以机器代码级别更好地优化,从而更加有效地利用稀缺的代码内存。

数据分组缓存区足够大,可以容纳最大的数据分组,当来自网络的数据分组到达时,设备驱动程序将其放入全局缓存并调用uIP 协议输入处理代码,如果分组包含应用程序数据,则uIP协议使用数据分组缓存区中的应用程序数据调用相应的应用程序。由于缓存区中的数据将被下一个接收到的数据分组覆盖,因此应用程序必须立即对数据执行操作,或将数据复制到辅助缓存区中以供以后处理。在应用程序完成数据处理之前,数据分组缓存区不会被新数据分组覆盖。(www.xing528.com)

为了确保uIP 协议正在处理数据分组时数据分组缓存区不会被重写,尤其是当uIP 协议明确要求设备驱动程序写数据的时候,uIP 协议不允许通信设备驱动程序直接写入缓存区。如果数据分组在uIP 协议正处理缓存区中的数据时到达,该分组将在通信设备硬件中排队或由通信设备驱动程序处理排队,大部分通信设备有硬件实现的缓存存储器,当数据分组到达时将被存入其中。

数据分组缓存区的大小在编译时是可配置的,uIP 协议内存使用总量取决于要在其中运行实现的特定系统应用程序,内存配置确定系统应该能够处理的流量和最大同时连接数,同时向多个客户端发送和接收大量数据的系统通常比偶尔发送几个字节的系统被配置更多的内存。只需100 个字节的RAM即可运行uIP,但这种配置提供了极低的吞吐量,并且只允许少量的同时连接。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈