PR

【IT用語解説】I/O(入出力)とは?データが機器との間を移動する仕組みを解説

I/Oとは?をコンピュータ基礎シリーズの統一デザインで表すアイキャッチ IT-Skills

I/O(Input/Output/入出力)とは、コンピュータやプログラムが、自分の外側との間でデータを受け渡すことです。キーボード入力や画面表示だけでなく、ファイルの読み書き、ネットワーク通信、プリンターへの出力もI/Oです。

I/Oのポイントは「どちらから見て入力か、出力か」です。テキストエディタからSSDへデータを渡すのは出力、SSDから読み戻すのは入力です。

このページで学べる内容
  • I/Oの入力と出力を決める基準
  • memo.txtで起きる3種類のI/O
  • CPU処理とI/O処理の違い
  • I/O待ちと同期・非同期の考え方
  • レイテンシ・IOPS・スループット・キューの見方
スポンサーリンク

I/Oは境界を越えるデータ移動

NISTではI/Oを、コンピュータとの通信に使う機器と、その通信で扱うデータを含む一般用語としています。実務では、プログラムとOS、OSと機器、コンピュータとネットワークなど、ある境界を越えるデータの受け渡しとして使われます。

memo.txtへ「A」と入力して保存する場面には、少なくともキーボード入力、画面出力、ストレージ出力があります。

キーボードからアプリへの入力、アプリから画面への出力、アプリからOSを経由したSSDへのファイル出力、ネットワークとの送受信を示す図
I/Oは、プログラムと外部の間でデータを受け渡す処理です。入力・出力は、中央のプログラムから見た向きで決まります。

memo.txtで起きるI/Oを分ける

I/O 入力か出力か 移動するデータ
キーボード → アプリ 入力 キー操作から得られた文字A
アプリ → 画面 出力 表示する文字や描画命令
ストレージ → アプリ 入力 開いたmemo.txtの内容
アプリ → ストレージ 出力 保存する新しい内容
アプリ ↔ ネットワーク 入力と出力 受信データと送信データ

ある処理の出力が、次の処理の入力になることがあります。サーバーが送信した応答はサーバーから見れば出力、受信するブラウザから見れば入力です。

CPU処理とI/O処理は役割が違う

CPUは命令の演算・比較・分岐などを実行します。一方、I/Oはキーボード、SSD、ネットワークなどとのデータ移動です。CPUが書き込み要求を準備しても、機器側の処理が完了するまで時間がかかる場合があります。

分類 主に時間を使う対象
CPUバウンド 計算や命令実行 圧縮、暗号計算、画像変換
I/Oバウンド 外部との読み書き・待ち 大量ファイル読込、DBアクセス、通信待ち

処理が遅いとき、CPU使用率が高ければCPUが忙しい可能性があります。CPU使用率が低くても、ストレージやネットワークの完了待ちで進めない場合があります。したがって「CPUが空いている=処理が速い」とは限りません。

I/O待ちとは何か

スレッドが読み書きを依頼し、結果が必要になるまで先へ進めない状態をI/O待ちと呼びます。OSは待っているスレッドからCPUを外し、実行可能な別スレッドへCPU時間を回せます。I/Oが完了すると、待っていたスレッドを再び実行可能にします。

プロセスとスレッドの関係はプロセスとスレッドの違いで確認できます。

同期I/Oと非同期I/O

方式 要求した処理の進み方 考え方
同期I/O 必要な結果が返るまで呼び出し側が待つ 単純だが待ち時間がその処理を止める
非同期I/O 完了を待たず別処理へ進み、後で通知や結果を受け取る 待ち時間をほかの仕事に使える

非同期にすれば必ず速くなるわけではありません。I/O装置の実速度は変わらず、完了通知・順序・エラー処理が複雑になります。目的は「待っている間に何を進められるか」です。

I/O性能を見る4つの指標

指標 意味 見るときの質問
レイテンシ 1回のI/Oが完了するまでの時間 1回の応答は何msか
IOPS 1秒あたりのI/O回数 小さな要求を何回処理できるか
スループット 1秒あたりに運ぶデータ量 合計で何MB/s運べるか
キュー 処理待ちのI/O要求 装置の前に要求がたまっていないか

Linuxではカーネルが/proc/diskstatsなどへブロックI/O統計を公開し、sariostatが読み取ります。ただし、数値の意味や集計方法はOS・ツール・バージョンで異なるため、項目名だけで即断しません。

注意。 キューが増えて応答が遅くても、原因がストレージ装置そのものとは限りません。アプリの要求パターン、ファイルシステム、OSキャッシュ、ネットワーク、仮想化層など、I/O経路のどこで待っているかを切り分けます。

まとめ:I/Oとは何か

  • I/Oはコンピュータやプログラムと外部とのデータ受け渡し
  • 入力・出力は、どの主体から見るかで決まる
  • キーボード、画面、ストレージ、ネットワークはいずれもI/Oの相手
  • CPUが空いていてもI/O待ちで処理が進まない場合がある
  • 性能はレイテンシ・IOPS・スループット・キューを要求パターンと合わせて見る

I/Oとは、境界を越えてデータを移動させる処理です。memo.txtの入力・表示・保存を分けて追うと、CPU処理とは別に、機器や通信の完了を待つ時間があることまで理解できます。

関連する基礎用語

タイトルとURLをコピーしました