🔖

なぜコンピュータにはOSが必要なのか

2023/06/15に公開

前書き

OSがなくてもプログラムを動かすことは技術的に可能です。
例えば家電製品等を制御する組込みソフトウェアでも、OSが搭載されていないタイプがあります。
それではなぜOSが必要なのでしょうか?

OSがない場合の課題

まずはOSの必要性を知るために、OSを使わないとどのような課題が生じるかを知る必要があります。
OSを使用しないことによる課題はたくさんあるのですが、メモリ管理を例に説明します。

プログラムを実行すると、まず最初に必要量のメモリを確保しにいきますが、OSを搭載していない場合、確保するメモリの場所(メモリアドレスという)を直接指定する必要があります。

そしてここにプログラムAとプログラムBがあるとします。
奇遇なことに両方とも同じメモリアドレスを確保する作りとなっていました。
同時に実行するとどうなるでしょう?
なんと!プログラムAが確保した領域を、プログラムBが上書きしてしまったようです。
その結果プログラムAのメモリ上のデータは壊れてしまったので、プログラムAがエラーとなってしましました。

といったように、このようなケースでは2つのプログラム間でメモリの利用について、整合性が取れるように作りこんでおく必要がありました。
しかしプログラムで溢れる現代において、そんなことを考慮するのは不可能です。

OSの機能

そこでOSの出番です。
OSにはメモリ管理システムという機能が搭載されています。
メモリを確保する際、OSのメモリ管理システムを経由することで、具体的なメモリアドレスの指定が不要になります。代わりに何バイト確保するのかを指定するだけで済みます。
その際どのメモリアドレスを用いるかはメモリ管理システムが自動的に管理してくれます。

今回はメモリを例にしましたが、その他にディスクやCPU、ネットワーク、ファイル等の管理をOSがしてくれているおかげで、ハードウェアを完璧に理解しなくてもPCやスマホを利用したり、開発に取り書かれるわけですね。

ちなみに前書きで記載した、OSが搭載されていないタイプの組込みソフトウェアは、機能が最小限のため、自力でメモリ管理等を組み込んでいます。
ハードウェアの知識が必要なので開発の複雑さは増しますが、必要な機能だけを選んで実装できるので、リソースを効率的に使用できたり、高いパフォーマンスを発揮できる等のメリットがあるそうですね。

後書き

コンテナ技術学習の前段としてLinuxの学び直しをしており、アウトプットを兼ねて執筆しました。
まずは第一弾としてOSの必要性について記載しましたが、今後はLinuxに関するより具体的な内容について記載できればなと思います。
誤りがある場合、ご指摘いただけますと幸いです。

Discussion