このページの本文へ

前へ 1 2 3 4 次へ

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

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

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

文● 塩田紳二

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

OSがデバイスを「多重化」する

 OSがアプリケーションに対して提供するデバイスの機能にはもうひとつ、「多重化」がある。「仮想化」と表現する場合もあるが、別の用語と混同する可能性があるので、ここでは多重化と表現する。

 プリンターのように大量のデータを受信して、動作に時間がかかるデバイスの場合でも、アプリケーションはいつでも印刷を開始できるし、自分の処理(印刷するデータの送出)が終われば、実際に印刷が終わったかどうかに関係なく、アプリケーション自体は終了できる。

 2つのアプリケーションが同時に印刷を始めても、そのページ内容が混ざってしまうことはなく、それぞれがきちんと印刷される。複数ページの印刷でも、ひとつのプログラムからの複数ページの印刷が終わってから、別のアプリケーションの印刷が始まり、2つのアプリケーションからのページが交互に印刷されることもない。

 OSはデバイスを抽象化するが、個々のアプリケーションごとに、デバイスの操作を区別して管理している。ここではアプリケーションと表現したが、同じアプリケーションが2つ同時に起動していても、それぞれは区別される。だからメモ帳のウインドウが2つあっても、それぞれの印刷はやはり個別にちゃんと区別される。

 これにより、それぞれのアプリケーションは自分だけがプリンターを使っているように振る舞うことができる。またアプリケーションを作るときにも、他のプログラムが印刷していることを考慮する必要はまったくない。

 複数のアプリケーションによる要求を同時に動作させることが困難なプリンターのような機器では、ひとまとまりの印刷処理が終わるまで、OSが内部的に別のアプリケーションの印刷を待たせているのである。一方で、アプリケーションに対しては印刷を待たせていないように見せているため、アプリケーションは何も考えることなく、印刷処理を続けられるわけだ(図5)。

プリンターのようなデバイスでは、物理的なデバイスはひとつでも、アプリケーションは他のアプリケーションの印刷状態を考えることなく、自分だけのプリンターがあるように動作できる。実際には、ある時点で印刷をしているプログラムはひとつだけで、他のアプリケーションからの印刷データは、一時的にファイルなどとして保存される。そして先の印刷が終わったら、これを取り出して印刷を続ける

 プリンターのように、アプリケーション側からの書き込み(出力)があるものは、このようにアプリケーションごとに出力を正しく管理しないと、データが混ざってしまう。

 逆にファイルでは、複数のアプリケーションが同時にひとつのファイルへ書き込むことは「禁止」される。プリンターは、コンピューターからみると書き込むだけなので、印刷が終わってしまえば、送ったデータはどうなってしまってもかまわない。

 しかし、書き込んだファイルは読み出す可能性があるわけで、書き込んだとおりに正しく読み出せなければならない。そのため「多重化」は行なわず、ひとつのアプリケーションがある特定のファイルを利用している間は、他のアプリケーションが書き込みできないように、OSがこれを保護する。このような動作を一般的に「ロック」という。

 OSはこのようにして、アプリケーションとデバイスの関連性を断ち切るような働きをする。それは、どのようなデバイスが装着されているのかを考慮することなくアプリケーションを開発できるようにするためだ。では、どのようにOSはデバイスを扱うのか、それについては次回解説することにする。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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