I/O / ブロッキングI/O / ノンブロッキングI/O / 同期I/O / 非同期I/O / I/Oの多重化

サーバ

I/Oとは?

 状態:-  閲覧数:1,686  投稿日:2009-07-10  更新日:2017-07-30  
Input/Output
・「入出力」の略

入力(input)
・「機器」や「システム」などに、外部から「データ」や「信号」を入力すること

出力(output)
・「機器」や「システム」などから、外部へ「データ」や「信号」を出力すること

ブロッキングI/O

 閲覧数:259 投稿日:2016-11-28 更新日:2016-11-28 

ブロッキングI/Oとは?


データ処理が完了するまで待つ
・一つのクライアントとしか通信できない


ノンブロッキングI/O

 閲覧数:278 投稿日:2016-11-28 更新日:2016-11-28 

ノンブロッキングI/Oとは?


データ処理の完了を待たずに他の処理を行う

処理がすぐできない時
・エラーを返し、ブロック状態にさせない

同期I/O(Syncronous I/O)

 閲覧数:258 投稿日:2016-11-28 更新日:2016-11-28 

同期I/Oとは?


データ処理の入出力が可能になった時点で通知

1台のクライアントからのアクセスだけでプロセスが専有されてしまう
・複数のクライアントへのレスポンスを返すことができない

非同期I/O(Asyncronous I/O)

 閲覧数:284 投稿日:2016-11-28 更新日:2016-11-28 

非同期I/Oとは?


I/O処理が完了したタイミングで通知するI/Oモデル

処理がすぐできない時
・処理が完了するまでバックグラウンドで待機
・終了したタイミングで通知を返す方式

通知
・シグナルもしくはコールバックによって行われる

通知があるまでは
・アプリケーション側で他の処理を進めることができる

ネットワークI/Oの多重化(I/O Multiplexing)

 閲覧数:304 投稿日:2016-11-28 更新日:2016-11-28 

ネットワークI/Oの多重化とは?


1プロセス1スレッドで複数のネットワーク接続を同時に捌 く
・poll()、select()、epollシステムコールを利用して、複数のファイルディスクリプタを1つのプロセスで管理する

I/Oでブロッキングが発生すると
・一つのクライアントとしか通信できない
・これを解決するための手段の一つ


バーチャルホスト

コメント投稿(ログインが必要)