[[PageNavi(internal24-navi)]]
{{{ comment
h2w-title:プロトコル実行コンテキスト
}}}
= プロトコル実行コンテキスト = #SECTION05920000000000000000
プロトコル処理の基本的な実行コンテキストに注目することにする。
送信処理は、原則送信要求を行ったプロセスのコンテキストでドライバまで走り切る。ただしドライバの能力を越えて送信要求があった場合は送信データをnet_device構造体に繋ぎ、ソフト割り込みハンドラにより遅延して再度ドライバの送信処理を起動する。再送機能をサポートするプロトコルではタイマ処理の延長で送信処理が動作することもある。
受信処理において、割り込みハンドラで実行するのはドライバの割り込みハンドラのみであり、その後の処理はソフト割り込みハンドラに委ねる(softnet_dataにデータを繋ぎソフト割り込みハンドラの起動要求を出す)。ソフト割り込みハンドラは、受信可能な状態にデータを整えsock構造体にリンクするところまでを実行する。プロセスコンテキストで行われる処理はsock構造体からデータを取り出す処理だけである。
[[Embed(internal24-images:img119.gif)]]
この構成は、以下のような効果がある。
* 割り込みハンドラのコンテキストで実行する区間を 最小限に絞り、受信応答性を上げることができる。
* 可能な限り同一のコンテキストで走行することにより、 処理の遅延を招きにくい。
----
''(NIS)HirokazuTakahashi [[BR]]2000年12月09日 (土) 23時55分06秒 JST''1
[[PageNavi(internal24-navi)]]