このページの本文へ

前へ 1 2 3 4 次へ

基礎から覚える 最新OSのアーキテクチャー 第3回

OSの仕事はハードウェアをアプリから「隠す」こと?

2011年08月26日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

OSの重要な役割は
ハードウェアの管理

 オペレーティングシステム(OS)の仕事のひとつは、「ハードウェアの管理」である。現代のOSでは、複数のプログラムが同時に動く「マルチタスク」が普通であり、キーボードやマウス、ディスプレーにHDDなどのハードウェアは、すべてOSが管理している。

 ハードウェアといってもマウスやキーボードのように直接ユーザーが操作するようなもの(Human Interface Deviceとも言う)から、USBやPCI Expressなどのコントローラー、CPUのチップセット、Ethernetや無線LANのコントローラーのようなものまで、パソコンには多くのハードウェアがある。

 このようなハードウェアの多くは、内部的な「状態」を持っている。例えばUSBの場合、デバイスがつながっているポートとそうでないポートがあるし、あるタイミングではデバイスとデータ転送をしているかもしれない。また、USBなどのコントローラーは、電源オンのあと何らかの状態設定が行なわれるのが普通だ。

 こうした内部状態があるため、ソフトウェアからのハードウェア操作は、内部状態を考慮して行なう必要がある。例えば、適当にデバイスをリセットするわけにはいかず、データが転送されていないタイミングで行なわねばならない、などだ。

 そのため、デバイスに対して複数のプログラムが“同時に”アクセスすることは、問題となる可能性が高い(図1)。例えるなら2つのテレビリモコンを使い、2人が同時に操作するようなものだ。片方がボリュームを下げたのに、もう一方が上げてしまうといったことが起こりうる。ボリュームくらいならいいが、あるプログラムがデバイスを使ってデータ転送中に、別のプログラムがデバイスをリセットしたりしたら目も当てられない。

図1 あるソフトウェアが次の作業のためにデバイスの内部状態を変更した直後に、別のプログラムがそれを変更してしまうと、次の処理が正しく行なえない可能性が出てくる

 複数のアプリケーションが特定のデバイスを利用する場合は、OSがアプリケーションからリクエストを受け付けて、ハードウェアの状態を考慮しながら、ハードウェアを操作する(図2)。

図2 OSはアプリケーションとデバイスの間に入り、アプリケーションからの依頼を受けてデバイスを操作する。このような構造にすることで、デバイスの内部状態がきちんと管理されて、正しく扱うことが可能になる

 このようにすることで生まれるメリットがいくつかある。ひとつは、ハードウェアの「抽象化」である。通常ハードウェアは、固有の型式でデータのやりとりを行なう。同種のハードウェアであっても、細かい型式が違う場合もあるだろうし、アクセスのやり方が違うこともある。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン