第2章 mbuf存储器缓存.docx

2 2— PAGE 10 第 2 章 mbuf:存储器缓存 引言 网络协议对内核的存储器管理能力提出了很多要求。这些要求包括能方便地操作可变长缓存,能在缓存头部和尾部添加数据(如低层封装来自高层的数据),能从缓存中移去数据 (如,当数据分组向上经过协议栈时要去掉首部),并能尽量减少为这些操作所做的数据复制。内核中的存储器管理调度直接关系到连网协议的性能。 在第 1 章我们介绍了普遍应用于Net/3 内核中的存储器缓存:mbuf,它是“memory buffer”的缩写。在本章,我们要查看mbuf 和内核中用于操作它们的函数的更多的细节,在本文中几乎每一页我们都会遇到mbuf。要理解本文的其他部分必须先要理解mbuf。 mbuf 的主要用途是保存在进程和网络接口间互相传递的用户数据。但 mbuf 也用于保存其他各种数据:源与目的地址、插口选项等等。 图 2.1 根据不同 m_flags 值的四种不同类型的mbuf 图 2.1 显示了我们要遇到的四种不同类型的mbuf,它们根据在成员 m_flags 中填写的标志 M_PKTHDR 和 M_EXT 不同而不同。图 2.1 中四个mbuf 的区别从左到右罗列如下: 如果 m_flags 等于 0,mbuf 只包含数据。在mbuf 中有 108 字节的数据空间(m_dat 数组)。指针 m_data 指向这 108 字节缓存中的某个位置。我

文档评论(0)

1亿VIP精品文档

相关文档