OSの重要な役割は
ハードウェアの管理
オペレーティングシステム(OS)の仕事のひとつは、「ハードウェアの管理」である。現代のOSでは、複数のプログラムが同時に動く「マルチタスク」が普通であり、キーボードやマウス、ディスプレーにHDDなどのハードウェアは、すべてOSが管理している。
ハードウェアといってもマウスやキーボードのように直接ユーザーが操作するようなもの(Human Interface Deviceとも言う)から、USBやPCI Expressなどのコントローラー、CPUのチップセット、Ethernetや無線LANのコントローラーのようなものまで、パソコンには多くのハードウェアがある。
このようなハードウェアの多くは、内部的な「状態」を持っている。例えばUSBの場合、デバイスがつながっているポートとそうでないポートがあるし、あるタイミングではデバイスとデータ転送をしているかもしれない。また、USBなどのコントローラーは、電源オンのあと何らかの状態設定が行なわれるのが普通だ。
こうした内部状態があるため、ソフトウェアからのハードウェア操作は、内部状態を考慮して行なう必要がある。例えば、適当にデバイスをリセットするわけにはいかず、データが転送されていないタイミングで行なわねばならない、などだ。
そのため、デバイスに対して複数のプログラムが“同時に”アクセスすることは、問題となる可能性が高い(図1)。例えるなら2つのテレビリモコンを使い、2人が同時に操作するようなものだ。片方がボリュームを下げたのに、もう一方が上げてしまうといったことが起こりうる。ボリュームくらいならいいが、あるプログラムがデバイスを使ってデータ転送中に、別のプログラムがデバイスをリセットしたりしたら目も当てられない。
複数のアプリケーションが特定のデバイスを利用する場合は、OSがアプリケーションからリクエストを受け付けて、ハードウェアの状態を考慮しながら、ハードウェアを操作する(図2)。
このようにすることで生まれるメリットがいくつかある。ひとつは、ハードウェアの「抽象化」である。通常ハードウェアは、固有の型式でデータのやりとりを行なう。同種のハードウェアであっても、細かい型式が違う場合もあるだろうし、アクセスのやり方が違うこともある。
この連載の記事
-
第13回
PC
ARM版Windows 8実現の布石となったWindows 7の「MinWin」 -
第12回
PC
アプリがWindowsの機能を使うには? APIとDLLの仕組み -
第11回
PC
マルチコアCPUの消費電力はスケジューリングで変わる? -
第10回
PC
AMD FX向けにパッチで修正 スケジューラーが抱える難題 -
第9回
PC
マルチコアCPUを賢く使いこなす スケジューリングの秘密 -
第8回
PC
意味の違いがわかる? タスクとプロセスとスレッド -
第7回
PC
Windowsのメモリー管理をx86の仕組みから読み解く -
第6回
PC
メモリー不足を根本的に解決する64bit OSの仕組み -
第5回
PC
Windows 8でMetro Styleアプリを動かす「WinRT」 -
第4回
PC
Windowsを動かすデバイスドライバーの仕組み 前編 - この連載の一覧へ