このページの本文へ

前へ 1 2 次へ

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

「OS」はどうやってプログラムを動かしているのか?

2011年07月28日 12時00分更新

文● 塩田紳二

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

 「OS」こと「オペレーティングシステム」は、コンピューターのソフトウェアの1種で、「基本ソフトウェア」とも呼ばれる。簡単にいうと「アプリケーションソフトウェアを動かすためのソフト」のことだ。アプリケーションという「ソフトウェア」を動かすのに、OSという「ソフトウェア」が必要とはなんだか言葉遊びのようだが、ここがコンピューターのコンピューターたる所以でもある。

 本連載では私たちに馴染みの深いOSであるWindowsやAndroidを題材に、身近なOSの内部構造について説明していきたい。特にWindowsに関しては、Windows XP時代以前とWindows 7/Vista以降で大きく様変わりしているので、「OSの話なんて、もう聞き飽きたよ」という方にもお楽しみいただけるかと思う。

OSの仕事はアプリを動かすための
リソース管理にあり

OSはアプリケーションからの要求を受けて、管理するハードウェアを操作する

 OSの役割は、「アプリケーションソフトウェアを動かす」という説明の「動かす」にある。OSはアプリケーションをメモリーに読み込んで、実行を開始する。しかし、例えばウェブブラウザーではインターネット接続が必要だし、表計算ソフトではグラフを表示するなどのグラフィックス機能が、ゲームに至ってはGPUを制御して画面を描画するといった機能が必要になる。

 こうした機能を、すべてアプリケーション内に抱え込んで実現することはできない。それだけでプログラムが膨大になってしまう。動作するパソコンにどのようなハードウェアがあるかを事前に特定できないので、考えられるすべてのハードウェアに対応しなければならなくなるからだ。

 そうは言っても、アプリケーションがハードウェアを直接操作するのは、MS-DOSの時代には頻繁に行なわれていた。そのためアプリケーションにバグがあったり設定を間違ったりすると、容易くパソコンがフリーズするといったことが珍しくなかった。WindowsのようなモダンなOSが開発されたのは、グラフィックスやサウンドなどのハードウェアを、アプリケーションが管理しなくていいようにするためだった。

 OSはユーザーがコンピューターで実行するプログラムを、効率的に動かすためのソフトウェアとして作られた。まっさらなコンピューターにプログラムをどう実行させて、次のプログラムにどう切り替えるかといった処理を、手作業ではなくコンピューター自身に管理させるのがOSの発想である。

 コンピューターは機械なので、壊れないかぎりずっと動き続ける。だが、毎回人間が「次はこのプログラム」と面倒をみていたのでは大変だ。そこで、「コンピューターが次に何をやらせるか」を指示できるように、コンピューターの面倒はコンピューター自身ができるようなプログラムを作ればいい。それを実現するためには、実行するアプリケーションプログラムにも、「仕事が終わったときにどうするのか」や「エラーならどうすべきか」といったルールを定義しなければならない。

 アプリケーションが必要とする一般的な機能は、OSが管理してアプリケーションに機能を提供する。これを「資源(リソース)の管理」という。リソースとは、各種I/OデバイスからCPUの処理時間、HDD上の記憶領域など、「コンピューター自体をプログラムから扱えるもの」として考えたものをいう。逆に言えば、ハードウェアの一部であってもプログラムから扱えないものは、リソースにはならない。例えばノートパソコンの画面やキーボードはリソースとして扱えるが、筐体そのものやディスプレーのヒンジなどは、リソースにはならない。

 一定のルールに従ったアプリケーションプログラムであれば、OSはメモリーに読み込んで実行させる。アプリケーションが要求するなら、他のプログラムに影響が出ないようにリソースを割り当てるわけだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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