在深入LWIP分析的第四部分,我们将聚焦于底层的消息处理机制回顾上文,我们已对以太网接口初始化内存管理数据结构体如以太网DMA描述符Puf网卡结构以太网句柄进行了详尽的源码解析这些驱动构成了网络接口层的基础,属于TCPIP四层模型的底层超时操作是关键环节,它涉及TCP的连接建立重传。
LwIP协议栈的核心目标是减少内存消耗和代码体积,以适应那些内存和计算资源极为有限的环境为了实现这一目标,lwIP对API进行了精心的简化和裁剪,去除了不必要的数据复制操作,从而简化了系统的处理流程和内存管理要求。
lwip 使用 pbuf 结构体对数据进行封装和协议栈内部传递,pbuf 的重要性与 linux 内核协议栈中的 skb_buff 类似pbuf 可以是 PBUF_RAMPBUF_POOLPBUF_REF 或 PBUF_ROM 类型,分别用于不同内存管理和数据引用场景在数据收发过程中,以 UDP 为例,lwip 通过注册回调函数实现 UDP 接收,通过创建。
lwIP内存管理基于内存池与内存堆原理,内存堆与内存池实质上直接操作数组实现lwIP内存堆采用可变长分配策略,支持任意大小内存申请First Fit算法从低地址空间查找符合要求的内存块,将其切割并返回剩余部分至动态内存堆中,优点在于时间换空间在lwIP内存堆初始化时,设置MEM_LIBC_MALLOC为0初始化mem结。
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。