- 1
- 0
- 约1.35万字
- 约 13页
- 2018-11-26 发布于天津
- 举报
原则的运用的相关资料.doc
原则的运用
第三章概要介绍了高效实现网络系统的15条原则,这一章用一些例子说明这些原则是怎么运用的。这里给出的例子都很小,但并不简单。我们要重点关注的是思维方式,而不是一个具体问题的解决。这些例子均从真实的问题中抽取,有些解决方案就是在真实产品中使用的。对于每个例子,按照提出问题、分析提示和解决思路的顺序来介绍。
4.1 应用设备通道的缓冲区验证
应用程序通常必须通过系统调用来收发包,这是因为只有内核可以与网络适配器直接交互,而由内核统一操纵I/O设备也便于实现应用程序之间的隔离。然而,通过内核通信增加了系统调用的开销。
为降低开销,应用设备通道允许应用程序直接读写网络适配器的内存来进行网络收发。
应用设备通道的基本思想
将网络适配器内存看成是主存的一部分,采用虚拟存储系统来管理。为什么可以将适配器内存看成是主页的一部分呢?在一个内存映射的体系结构中,设备的寄存器被映射到一块内存区域,CPU通过读写这块内存区域与设备通信。因此从理论上说,在一个内存映射的体系结构中,内存可以位于总线上的任何地方。
具体来说,操作系统将网络适配器的存储空间划分成一系列的物理页,预先为每个应用分配一定数量的物理页,并映射给应用程序使用。应用程序可以直接读写映射给它的内存页,这个过程不需要内核参与,从而消除系统调用。
由于空间有限,适配器内存并不用来直接存放数据包。数据包放在位于主存的包缓冲区中,适配器中只存放包缓冲区的描述符。收发数据包之前,应用将需要使用的包缓冲区描述符写入适配器内存。当适配器需要收发数据包时,从适配器内存中得到包缓冲区描述符。
这里有一个问题,应用程序将需要使用的包缓冲区描述符写入适配器内存,如何保证应用只使用分配给它的包缓冲区?
隔离应用程序的保护机制
应用设备通道采用的方法是,内核预先为每个应用程序分配一定数量的物理内存页存放包缓冲区,并将这些物理内存页映射给应用程序使用;内核同时将这些内存页的页号也通知给网络适配器。
网络适配器检查每个应用程序给出的页号是否在其合法的页号集合中。
比如,在图4.1中,内核将内存页X、Y、……、L、A映射给应用P使用,这个信息也配置到网络适配器中。P要求适配器将发给它的下一个包放入位于页A的一个包缓冲区中,适配器检查页A是否在分配给P的合法页集合中。
问题
假定合法页组织在一个线性表中,顺序查找,那么验证的代价为O(n),n为合法页的数量。如果n很大,这个操作的开销很大,会降低适配器的收发包速度。如何加速验证的过程?
分析
通常会想到的一种方法是使用一个比线性表好的数据结构来降低验证过程的复杂度(P15)。擅长算法的人立即会想到使用哈希表,……
二分查找可以提供lon(n)的最坏查找时间,但当n较大时开销也比较大。
这两种数据结构都不能解决问题。
现在我们换个思路,能不能不用算法来解决这个问题?(想一想)
应用的合法内存页是由内核分配的,内核同时将该组页号也传给了适配器,也就是说,应用和适配器拥有相同的信息和数据结构。因此,如果采用系统思维的话,我们可以让应用程序在读写请求中给出页号时,同时指出该页号在线性表中的位置(线索),来方便适配器在线性表中迅速找到指定的页(P9)。
解决方案
适配器将每个应用的合法页保存在不同的数组中,如图4.2所示。仅当内核更新每个应用程序的合法页集合时,适配器更新相应的数组。
当P请求将一个数据包放入页A时,它同时向适配器传递一个句柄,这个句柄就是页A在合法页数组中的索引。适配器使用这个句柄可以很快验证A是否在P的合法页集合中。
验证的代价包括一次数组访问和一次比较操作。注意,页号在数组中的位置只是一个帮助快速定位的线索,线索不一定正确,所以需要验证。
这个例子说明了系统思维的重要性:不要将适配器查找页号看成是一个孤立的问题(那样就变成了一个纯算法的问题),而是要把它放在整个系统中,看到应用程序和适配器的线性表都是操作系统提供的,是相同的,从这个角度来提出高效的解决方案。
4.2 ATM流量控制调度器
ATM是上世纪80年后期至90年代中期提出的一种网络技术,为了解决已有IP网络的不足,如不支持连接、不提供服务质量、IP路由器很慢等。虽然ATM技术的理念是好的,但是由于缺少上层应用,以及IP网络已经占领了市场,ATM技术最终并未普及开来,将来也不会再有发展。尽管如此,不妨碍我们用ATM举这个例子。
每条VC上使用流量控制来限制发送速度。具体做法是:VC每隔一定时间获得一些credit,每个credit可以用来发送一个信元。可以将credit理解成令牌。
4.3 使用Dijkstra算法计算路由
因特网中最常使用的域内路由协议是OSPF协议。路由器首先通过相互交换链路状态分组获得网络的带权拓扑图,然后使用Dijkstra算法计算最小代价路
原创力文档

文档评论(0)