Reliable transfer of data requires modules to check whether space is available on the target module and to block the sending module if space is not available.This check requires extra communication between the modules,but the overhead enables the system to provide a stronger abstraction than one which does not guarantee reliable transfer.The stronger abstraction typically reduces the complexity of the code in the modules.In the STREAMS abstraction,however,there is unreliability introduced by the driver end,which is allowed to drop messages if the corresponding device cannot handle the incoming data.Consequently, even if there is reliable transfer of data between the modules,messages could be dropped at the device if the corresponding buffer fils up.This requires retransmission of data and special code for handling such retransmissions,thereby somewhat limiting the advantages that are associated with reliable transfer between the modules.
Reliable transfer of data requires modules to check whether space is available on the target module and to block the sending module if space is not available.This check requires extra communication between the modules,but the overhead enables the system to provide a stronger abstraction than one which does not guarantee reliable transfer.The stronger abstraction typically reduces the complexity of the code in the modules.In the STREAMS abstraction,however,there is unreliability introduced by the driver end,which is allowed to drop messages if the corresponding device cannot handle the incoming data.Consequently, even if there is reliable transfer of data between the modules,messages could be dropped at the device if the corresponding buffer fils up.This requires retransmission of data and special code for handling such retransmissions,thereby somewhat limiting the advantages that are associated with reliable transfer between the modules.