んだ日記

ndaDayoの技術日記です

デバイスとファイルの管理:デバイスとデバイスコントローラ 計算機システム概論 第26回より

さて、前回はメモリ管理ページテーブル方式について見ていきました。

nda-desu.hatenablog.com

今回からは、デバイスとファイルの管理について整理していきます。

計算機システム概論 第26回「デバイスとファイルの管理:デバイスとデバイスコントローラ」 - YouTube

本記事は↑の動画の自分用のメモです。

ブロック型デバイスと文字型デバイス

まずは、デバイスの種類について整理していきます。

バイスと一口にいっても、大きく分けて2種類あります。

  1. ブロック型デバイス
  2. 文字型デバイス

これらの2つは、データの取り扱う方法が違います。

ブロック型デバイス

ブロック型デバイスは、データを固定の大きさのブロック単位で扱います。

各ブロックは、アドレスを持ち、データのRead/Writeは、1つまたは複数のブロックごとに行います。

例としては、USBメモリSSDなどがブロック型デバイスです。

文字型デバイス

文字型デバイスは、1文字ずつのデータをストリームとしてRead/Writeします。

ブロック型とは異なり、アドレスという概念はありません。

例としては、プリンタ、LANなどのネットワーク、マウス、キーボードが文字型デバイスです。

その他

モニターは、ブロック型デバイスと文字型デバイスのどちらでもありません。

バイスコントローラ

続いては、デバイスコントーラについて整理しましょう。

バイスコントローラについては、以下の説明がわかりやすかったです。

入出力デバイスには、プログラムからの命令を受け付けて動作制御したり、入力情報をプログラムに送信したりするための制御機構が必要になる。この制御機構を持つ装置がデバイスコントローラと呼ばれる 

オペレーティングシステム (未来へつなぐ デジタルシリーズ 25) p.93

例えば、マウスにしても移動した情報を電気信号に変換するだけではダメで、その情報をCPUとやりとりすることで意味をなしますよね。

その役割をデバイスコントローラが担っておるわけですね。

講義スライドp158より

このイメージのように、CPUとデバイスコントローラは、デバイスコントローラのレジスタやバッファへのRead/Writebを行います。

メモリマップIO

では、続いて、デバイスコントローラとどのようにデータをやり取りするのか?その方式について見ていきましょう。

方式は2種類あります。

1つ目は、IOポートです。

この方式は各レジスタにそれぞれIOポートを割り当て、プログラムからIOポートから入出力する特別な命令を発行してやり取りします。

もう一つは、メモリマップIOという方式によって、データをやり取りします。

メモリマップIOとは、メモリ空間を用いる方法です。

物理メモリ上に、IO制御レジスタにアドレスを割り当て、その領域を使ってデータをやり取りします。

IOポートの方式では、アセンブラによって命令を記述しなければならないのですが、メモリマップIO方式ではその必要はないです。

メモリマップIO方式が標準的に使用されているそうです。

Direct Memory Access

最後に、Direct Memory Access、DMAについても軽く触れて終わりたいと思います。

Direct Memory Accessとは、その名の通り、直接メモリにアクセスする方法です。

なぜ、DMAが必要か?というと、プロセッサとデバイスの処理速度の違いによる待ちの発生です。

プロセッサとデバイスでデータをやり取りする際に、プロセッサに比べてデバイスでは処理速度が遅いため、プロセッサのリソースが無駄になってしまいます。

なので、DMAコントローラという専用の機構を通じて、デバイスからプロセッサを介さずにダイレクトにメモリアクセスすることで、効率化を図ろうという感じです。

よー考えられてますね。

まとめ

今回からは、デバイス、I/O管理に入っていきました。

プロセス管理、メモリ管理、とやってきて、I/O管理、ファイルシステムに突入してきたわけですが、OSの全体像がみえてきて、感動でぎょざいます。

次回はデバイスドライバについてやっていきます。

僕から以上。あったかくして寝ろよー

参考書籍