- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7协议工程之协议实现技术研讨
第七章 协议实现技术 7.4.2共享缓冲区的分配和管理 为了提高存储空间的利用率,人们往往采用共享缓冲器的方法。图7.6为共享缓冲区示意图。传输层提供n条逻辑链路服务,每个应用层协议实体(如a,b,c)通过表示层协议实体P和会晤层协议实体S使用一条逻辑链路。N条逻辑链路共享发送缓冲区. 例如当应用层实体a要发送一个报文时,它从发送缓冲区获取一个或多个缓冲器,然后将装载报文的缓冲链逐层传递给P层,S层,传输层和网络层。网络层将报文从指定通讯网络或线路发出之后,将空缓冲器归给发送缓冲区。接收缓冲区向各个通讯网络端口或点对点线路端口提供接收缓冲器。装填有接收报文的缓冲器首先由网络层处理,网络层或将缓冲器上交传输层处理(如果报文的目的地址是本地地址),或将缓冲器交给另外的通讯网络端口转发(如果报文的目的地址不是本地结点),或将缓冲器归还给接收缓冲区(如果报文是网络层报文)。 图7.6共享缓冲区 第七章 协议实现技术 共享缓冲区固然可以提高存储空间利用率,但如果没有合理的分配管理算法,将带来严重的副作用。第一个严重的副作用是缓冲器的枯竭。当某条逻辑链路通讯流量特别大时,它可能独占所有发送缓冲器,以致其它应用层协议实体不能获得缓冲器,造成缓冲器枯竭现象。第二个严重的副作用是不合理的接收缓冲器分配管理算法将会造成网络死锁现象。 第七章 协议实现技术 本节讨论缓冲器的公平分配问题,下节讨论接收缓冲器分配管理与网络性能的关系。 对于发送缓冲器,最常用的分配算法是平方根法。设发送缓冲区所能提供的缓冲器数目为B,当前活跃的逻辑链路数为n,那么每条链路所能占用的发送缓冲器的最高限额不应大于B/ 。 对于接收缓冲器,缓冲器的占用者的概念不同于发送缓冲器。当一个通讯子网接收一个报文,并将报文放入缓冲器之后并不能立刻确定该缓冲器由谁占用。装填接收报文的缓冲器经由网络层处理之后,报文的占用者就确定了 第七章 协议实现技术 例如,当图7.6中的net1收到一个报文并将缓冲器交网络层之后;网络层处理该报文,如果该报文向net2转发,那么缓冲器占用者是net2;如果该报文上交传输层,那么缓冲器的占用者是本地结点。这样,如果网络层有路由功能,并且它支持m路输出线路(通讯子网端口),那么接收缓冲器要在m+1个对象中分配;如果网络层没有路由功能,那么所有接收缓冲区都归本地结点所有。如果本地结点当前有n条活跃逻辑链路,那么对于分配给本地结点的那份接收缓冲器再按n个对象分配(或平均分配,或按平方根分配)。 第七章 协议实现技术 7.4.3 接收缓冲器的分配管理 如果网络层有路由功能,那么接收缓冲区的分配管理算法就比较复杂,不合理的分配算法还将产生死锁等副作用。下面分别讨论三个副作用及解决办法。 1.直接死锁(direct deadlock) 假定接收缓冲区的分配是任意的,即每一条输出线路端口可以占用任意多缓冲器,直至接收缓冲区枯竭为止,那么图7.7所示的直接死锁现象就可能出现。图中,由于结点A的所有接收缓冲器已被端口a所占用,它不能再接收b的报文,而B的所有缓冲器已被端口b所占用,它也不能接收A发出的报文,死锁发生!直接死锁产生的原因是双方接收缓冲区同时枯竭,解决的办法是避免接收缓冲区枯竭。假定结点的接收缓冲区的缓冲器总数为C,对于有m条输出线路(端口)同时活跃的情况,各条输出线路所能占用的接收缓冲器限额应小于Ct=C/(m+1),本地结点看作一路输出,它所分配的限额也为Ct。按照这种平均法则分配接收缓冲器枯竭现象永不会发生,直接死锁就消除了。 第七章 协议实现技术 图7.7直接死锁 第七章 协议实现技术 2.间接死锁(indirect deadlock) 即便是对输出线路所占用的缓冲器进行限制图7.8所示的死锁还可能发生。这种由多个结点的输出队列所形成的环路死锁称为间接死锁。间接死锁发生时各个结点的接收缓冲区并没有枯竭。图7.8中,A中的输出线路a的所有报文的目的地址不是B,但必须经过B的端口b转发,由于b的输出队列长度已经达到限额,B无法接收A发来的必须经过端口b转发的报文。由于同样情况,C无法接收B发来的必须经端口c转发的报文,D无法接收C发来的必须经端口d转发的报文,A无法接收D发来必须经端口a转发的报文,死锁发生! 第七章 协议实现技术 图7.8间接死锁 第七章 协议实现技术 间接死锁的解决办法之一基于分类报文概念。网络层处理输入报文时按照一定的分类方法将它们分成不同类别的报文,给每个报文打上类别标记,并按照报文类别分配接收缓冲器的限额。 报文分类的第一种方法是按照输出线路进行。例如,假如某结点有三条输出线
文档评论(0)