読み方 : どうきアイオー

同期I/O【syncronous I/O】ブロッキングI/O/blocking I/O

概要

同期I/OとはCPUと周辺機器や記憶装置との間でデータの入出力を行う際に、その処理の完了を待ってから次の処理へ進む制御方式。処理の流れが入出力の進行と同じ時間軸で進むことからこのように呼ばれる。
同期I/Oのイメージ画像

同期I/Oでは、プログラムが外部装置に対するデータの読み込みや書き込みを要求すると、その処理が完了するまで後続の命令は実行されない。外部装置からの応答やデータ転送が終わり、完了が通知されてから、停止していた箇所の続きへ処理が戻る。

処理の流れが一本道であるため制御の構造は単純で、プログラムの設計や実装が容易になる。また、I/Oの完了を確認してから次の命令へ進むため、データの整合性を保ちやすく、予期せぬタイミングでデータが書き換わるような不具合も生じにくい。

一方、CPUに比べてストレージネットワークといった外部装置の動作速度は極めて遅く、I/Oが発生する度にCPUが待機状態となる。その間は他の処理を進められないため、CPU資源を十分に活用できず、システム全体のスループットが低下する。ネットワーク通信のように遅いだけでなく応答時間が不規則、予測困難な処理では、この影響がさらに大きくなる。

こうした待機時間の問題を回避する方式が「非同期I/O」(ノンブロッキングI/Oとも呼ばれる)である。I/O処理の完了を待たずに後続の処理を並行して進め、完了の通知を受けた時点で結果を処理する。CPU遊休時間が減るため、多数のI/Oが発生するWebサーバデータベースサーバなどでは処理効率が大幅に向上する。

ただし、データの到着順序の管理や割り込み処理の制御が必要になり、プログラムの設計は複雑化する。なお、「同期I/O」「非同期I/O」という名称は結果の受け取り方を指し、「ブロッキングI/O」「ノンブロッキングI/O」は呼び出し時に待機が発生するか否かを指す。厳密には区別されるが、一般には同義として扱われることが多い。

(2026.6.9更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。