PromleeBlog
サイトマップ
このブログについて
メニュー
loading..🐩🐩🐩🐩
学習
Operating System
Ten Min Operating System
入出力システムの仕組み - 1日10分で学ぶOS 12日目
入出力システムの仕組み - 1日10分で学ぶOS 12日目
📅
はじめに
入出力ハードウェアとは?
カーネルの入出力サブシステム
構成要素
処理の流れの例
アプリケーションとI/Oインターフェース
STREAMSとは?
入出力と性能
入出力スケジューリングの階層の例
まとめ
参考
はじめに
🔗
コンピューターは、マウスやキーボードなどの入力装置、モニターやプリンターなどの出力装置がなければ十分に機能しません。こうした装置とOSの間で情報をやり取りする仕組みが、*入出力システム(I/O System)*です。
今回は、入出力ハードウェアの構造から、OSが装置を扱い、管理する方法まで、例を交えて順に説明します。
入出力ハードウェアとは?
🔗
入出力ハードウェアとは、コンピューターの外部と情報をやり取りする装置のことです。代表例を挙げます。
入力装置(キーボード、マウス、スキャナー)
出力装置(モニター、プリンター、スピーカー)
記憶装置(ハードディスク、SSD、USB)
通信装置(ネットワークカード、Bluetoothモジュール)
これらの装置はすべて、*コントローラー(controller)*を介してOSとつながります。コントローラーは装置の動作を制御し、CPUやメモリとのデータのやり取りを仲介します。
カーネルの入出力サブシステム
🔗
OSのカーネルは個々の装置を直接扱わず、
ドライバー(driver)
と
入出力サブシステム
を介して管理します。
構成要素
🔗
デバイスドライバー
は、プリンタードライバーなど、特定のハードウェアを制御するプログラムです。
バッファリングとキャッシュ
では、高速に処理するため、データをメモリに保持して整理します。
割り込み処理
では、装置の作業が完了したことをCPUに通知します。
**DMA(Direct Memory Access)**では、CPUを介さず、装置とメモリの間でデータを直接転送できます。
処理の流れの例
🔗
ユーザーがプリンターで文書を印刷すると、次のように処理が進みます。
プログラムがシステムコールで要求します。
カーネルがプリンタードライバーに要求を渡します。
ドライバーがプリンターのコントローラーに命令を伝えます。
印刷が完了すると割り込みが発生し、CPUに通知されます。
アプリケーションとI/Oインターフェース
🔗
アプリケーションは入出力を直接扱わず、OSに要求します。その要求は*システムコール(System Call)*として渡されます。
read()、write()、open()、close()などが代表的なシステムコールです。
OSは要求を受け取り、適切なドライバーに渡して、結果をプログラムに返します。これにより、開発者は装置の詳しい構造を知らなくてもI/O処理を行えます。
STREAMSとは?
🔗
UNIX系のシステムでは、
STREAMS
という仕組みを使って入出力の流れを構成します。
複数の入出力モジュールを「ストリーム(stream)」のようにつなぎます。
モジュール間でデータをやり取りし、それぞれが独立して処理できます。
ネットワーク通信や端末の入出力などに使われます。
水道管に複数のフィルターを取り付けるように、入出力処理の流れを柔軟に構成できます。
入出力と性能
🔗
入出力は、システム全体の速度に大きく影響します。性能の改善には、次のような手法が使われます。
非同期I/O
では、要求の完了を待たず、次の処理に進みます。
バッファリングとキャッシュ
は、入出力とCPUの処理速度の差を補います。
割り込みによる処理
では、ポーリングに代わり、装置が完了を通知します。
ブロック入出力
では、複数のデータをまとめて処理します。
入出力スケジューリングの階層の例
🔗
OSは入出力要求を効率よく処理するために、さまざまな階層でキューを使います。
**要求キュー(Request Queue)**には、デバイスドライバーの手前で待っている要求が入ります。
スケジューリングアルゴリズム
には、FIFO、SSTF、LOOK、C-LOOKなど、ディスクに関わるアルゴリズムを使います。
**マージ(Merging)**では、隣接する要求をまとめて処理速度を上げます。
これらの手法により、システムのリソースを効率よく使えます。
まとめ
🔗
今回は、入出力ハードウェアの基本構造と、OSがそれをどう制御するかを見てきました。システムコール、ドライバー、DMA、STREAMSが実際にどうつながるのか、図を思い浮かべられるように理解しておくことが大切です。
次回は、
ファイルシステムインターフェース
を取り上げます。
参考
🔗
Operating System Concepts (10th Edition)
https://en.wikipedia.org/wiki/I/O_scheduling↗
https://www.geeksforgeeks.org/i-o-scheduling-in-operating-systems/↗
データの流れ
入出力システムの仕組み - 1日10分で学ぶOS 12日目 | PromleeBlog