ソフトウェアフロー制御
ソフトウェアとハードウェアの両方のフロー制御には、ハンドシェイクタスクを実行するためのソフトウェアが必要です。このため、ソフトウェアフロー制御という用語は多少誤解を招きます。つまり、ハードウェアフロー制御を使用すると、通信ケーブルにハンドシェイク状態を通知する追加のラインが存在することになります。XON-XOFFフロー制御とも呼ばれるソフトウェアフロー制御では、標準の通信回線を使用してバイトが送信側に送信されます。
ハードウェアフロー制御を使用すると、送信側と受信側の間に多くの回線が存在する必要があり、ケーブルが太くて高価になります。したがって、通信で最大のパフォーマンスを得る必要がない場合は、ソフトウェアフロー制御が適切な代替手段となります。ソフトウェアフロー制御は、2つのデバイス間のデータチャネルを利用して、帯域幅を削減します。ほとんどの場合、帯域幅の減少はそれほど驚くべきことではなく、使用しない理由です。
ソフトウェアフロー制御で使用するために、2バイトがASCII文字セットで事前定義されています。これらのバイトは、送信を停止および再開できるため、XOFFおよびXONと呼ばれます。XOFFのバイト値は19です。これは、キーボードでCtrl-Sを押すことによってシミュレートできます。XONには、Ctrl-Qと同等の値17が割り当てられています。
ソフトウェアフロー制御の使用は簡単です。文字の送信を延期する必要がある場合、文字XOFFが回線で送信され、通信を再開するためにXONが使用されます。XOFF文字を送信しても、XOFFを発行したデバイスの方向の通信が停止するだけです。
この方法にはいくつかの欠点があります。1つはすでに説明されています。通信チャネルでバイトを使用すると、帯域幅を消費します。もう1つの理由はより深刻です。
ハンドシェイクは主に、最近受信したバイトを格納するために使用されるメモリ内のバッファであるレシーババッファのオーバーランを防ぐために使用されます。オーバーランが発生した場合、これは通信チャネル上の新しい文字の処理方法に影響します。ソフトウェアがうまく設計されていない最悪の場合、これらのキャラクターはチェックせずに捨てられます。このような文字がXOFFまたはXONである場合、通信の流れが著しく損なわれる可能性があります。送信者は、XOFFが失われた場合は新しい情報を継続的に提供し、XONが受信されなかった場合は新しい情報を送信しません。
これは、信号品質が悪い通信回線にも当てはまります。回線上のノイズのためにXOFFまたはXONメッセージが明確に受信されない場合はどうなりますか?送信される情報のXONまたはXOFF文字が情報バイトとして含まれていないことにも特別な注意が必要です。
したがって、ソフトウェアフロー制御を使用したシリアル通信は、通信速度がそれほど速くなく、バッファオーバーランまたはデータ損傷が発生する可能性が最小限である場合にのみ許容されます。
高速CSMA
イーサネットCSMAキャリアセンスのような高速では、ランダムバックオフタイマーを使用した多重アクセス、衝突検出/回避が、最適化のための確率的確率のスループットについて分析されています。