一种协议栈设计和实现
基于驱动程序方式的一个显着优点就在于上下文切换的次数仅仅是基于控制台应用程序的函数,并不基于协议层的数量。这样一来就可以减少实时操作系统保存和恢复任务上下文的次数,因而空出时间作更有意义的事,例如执行应用程序代码。
另一个好处在于,数据和控制信息更简单的在层与层之间传输,因为所有的协议层都处于同一个上下文中,所以相关的数据结构自动地为上下层所接受,结果你不必把他们在任务间队列中传送,由此产生的是,同时也避免了那些临界区系统由此可改进中断和优先级任务的响应时间。
3 缓冲区拷贝
缓冲区拷贝效率不高的第一个潜在因素在于:当数据在层与层之间传输时,数据缓冲区的分配、拷贝和释放,这与协议栈的结构无关,仅与缓冲区本身的结构有关。
一般来说,有两种常用的方式用于协议栈层与层之间传送数据,如图3所示。然而,这两种方式均有缺陷,我们假设,应用层有一些数据需要传送,通常我们把它称作消息,消息需被送至协议栈的最底层,因为在缓冲区中没有多余的空间来存放头尾信息,而协议层必须给数据本身加上头尾信息,协议层或分配一个足够大的缓冲区得以容纳消息本身和头尾信息,或分配两个小缓冲区,一个用于头信息,一个用于尾信息,然后用指针将三个缓冲区链接起来。
评论