CS-1章 コンピュータサイエンスと基本
【CS1-06】第6話 オペレーティング・システム(OS)の役割
現代のコンピュータで重要な役割を果たす「OS」
オペレーティング・システム(Operating System)、通称「OS(オー・エス)」はソフトウェアの1つですが、ハードウェアとソフトウェアをコントロールする、パソコンなど現代のコンピュータには欠かせない、コンピュータを動かすための基盤となるものです。OSには様々な種類があり、その用途によって使い方や操作方法もいろいろです。
現代のパソコンに搭載されているOSとして有名なものは「Windows(ウインドウズ)」や「Mac OS (マックオーエス)」などが主なものでLinuxやFreeBSDなども最近個人で使う人が増えてきました。OSはパソコンだけでなくスマートフォンにも搭載されていて、代表的なものに「Android(アンドロイド)」や「iOS(アイ・オーエス)」があります。つまりスマートフォンもコンピュータですからOSが必要になります。
今回はこの「OS」について少し掘り下げていきましょう。
ハードウェアとソフトウェアの橋渡しをするOS
OSの主な作業としてハードウェアとソフトウェアとをつなぐという役割があります。ハードウェアというのはコンピュータの目に見える部分です。パソコン本体の中に入っているCPUやHDD、RAM(メモリ)などの部品もハードウェアです。そのハードウェアであるHDDの中にデータとして入っているのがソフトウェアでこれは目に見えないものです。
この目に見えない「ソフトウェア」がデータとしてRAM(メモリ)などのハードウェアの中で電気信号としてONとOFFを繰り返すことを1秒間に数億回行う事で、ハードの部分を動かすことができます。
コンピュータに電源が入るとパソコンのマザーボード上にあるチップに用意されている命令が行きます(図中の①②)。これは「コンピュータを使えるように準備をしよう」というもので、HDDに入っているOSがRAM(メモリ)に転送されていき動作を開始していきます。そしてマザーボードに接続されている様々な機器などの状態をチェックします。例えば
- メモリは何GB搭載されているのか?
- インターネットに接続するための部品は正常に動作しているか?
- USBには何が接続されているのか?その先は電源がはいっているか?
他にも沢山の事をチェックしていきます。
最近のWindowsやMac OSなどではこのチェックしている様子を表示してくれませんが、むかしは表示されているときもありました。
当サイトFabshopでも良く取り扱うLinux系OSの起動画面を動画で見てみましょう。
※動画をクリックして再生してください。
「起動時間」は大忙し!
コンピュータはこのように、HDDからRAMへOSデータを展開しながらコンピュータのハードウェアを1つずつ全部チェックしています。この時間を「起動時間」といいコンピュータが使えるようにするための準備をしている時間です。
起動時間は最初の画面が出てきてもまだ続いています。コンピュータには必ずチカチカ点滅している「アクセスランプ」と呼ばれるHDDへのアクセスを行っていることを知らせるランプが付いています。このランプがチカチカ点滅しているときにはHDDが大忙しで動いているときです。
このチカチカが落ち着かないうちに「クリック」するなどの命令をコンピュータに送ると場合によってはその処理は後回しにされたりしてなかなかすぐに動かない場合もあります。
「人」にコンピュータを使わせるための「GUI」
さて、以前の話題でコンピュータが行っている処理を人が分かるようにするのはとても大変な作業という話しをしました。コンピュータの処理を人間がわかりやすいように視覚的にしたものを「GUI」といいます。グラフィカル・ユーザー・インターフェース(Graphical User Interface)の略で、WindowsやMacOSなどのように画面にフォルダやファイルの形が現れて、マウスを使って矢印(カーソル)を移動させて指示をおこなうような、いわゆる今ではあたりまえの画面の事をGUIと呼びます。
ではGUIでないOSの画面はどのようなものか下の動画を見てみましょう。こちらはRaspberry Piというコンピュータで利用するLinux系のOS「Raspbian」のGUIでない画面での操作です。
上の動画では、黒い画面に白い文字で文字を入力してコンピュータに指示することで、指示した内容をコンピュータが処理して私たちに結果として返してくれています。この1分程度の動画では以下の事をやっていました。
- ログインIDでコンピュータにログイン
- ログイン後、フォルダの中身を表示
- 「test001」という名前のフォルダを作成
- 電子回路を接続できるピン番号を確認
- test.py という名前のファイルを開いて内容を確認
- システムからログアウト
このように文字で決まった命令文をコンピュータに与える画面を「コマンドライン」と呼び、決まった命令を打ち込んでいきます。元々「パソコン」もこのようにコマンドラインから計算や処理を行っていましたが、今ではユーザーが使いやすいようにほとんどGUIになっています。
コマンドラインからのコンピュータの操作はとてもシンプルで安定して動きます。GUIでは「人」に見せるために沢山の処理をこなさなければなりません。そのため、限られたコンピュータの性能の中で沢山のプログラムを動かし、メモリ領域を確保するため、複雑な処理を始めるとコンピュータの動作が遅くなったりする場合があります。
OSのソフトウェア上での働き
オペレーティングシステムはハードウェアとソフトウェアのつなぎ役を行いますが、ソフトウェア上でも大きな役割を担っています。次の図はオペレーティングシステムのソフトウェアでの役割を表したものです。
青い部分ではOSはハードウェアとのやり取りをおこなっています。ソフトウェアは黄色い部分での作業です。たとえばワープロのアプリケーションを思い出してください。ワードや一太郎などワープロにもいろいろ種類がありますが、文字を入力する場合はキーボードから行います。キーボードから入力された情報はオペレーティングシステムが認識してその情報をワープロソフト上に表示させていきます。
少し想像してみましょう。ワードが起動すると白紙の紙が一枚出ますが、その枠の外側に沢山のボタンが並んでいてそのさらに外側はウィンドウで囲まれています。このウインドウを作るという作業はワードが呼び出して行いますが、もともとはOSが持っている機能を利用しています。また文字を受け取って表示させるなどの機能もOSが持っていてそれらの機能を各アプリケーションに渡します。
アプリケーションで共通な機能はOSが担当
ワープロの例にある通り文字を入力するという機能は様々なアプリケーションで使います。GUI、つまり人にわかりやすく見せるようにウインドウを開いたり、インターネットと接続してアップデートしたり、同時に複数の処理を行う場合の優先順位を決めたりなど、アプリケーションの共通部分はOSが担当しています。印刷するという機能は、写真を加工するソフトやインターネットを見るための「ブラウザ」でも利用します。
もしこれら共通の機能をそれぞれのアプリケーションで持ってしまっていたらどうでしょう。アプリケーションを開発する人はキーボードから文字が入力されたら受け取って表示するという機能までプログラムを作ります。写真加工ソフト、ワープロソフト、インターネットを見るソフトそれぞれが同じ機能を搭載していてそれらを動かしたら同じ機能で沢山のメモリが呼び出されてしまい動作が遅くなってしまいます。またアプリケーション1つ1つの容量も多くなり開発する時間もかかってしまいます。
基本的な部分をまとめて効率的に行う事で、コンピュータ上の資源(リソース)を有効に活用しています。
メモリの割り当て
先ほどのOSが起動してくるまでの図にもどります。
Windows 10を例にとって考えてみます。電源を入れてWindowsが起動してきます。この図でいうとパソコンに搭載されているメモリは「4GB」です。Windows10の64bitバージョンはMicrosoftの公式サイトでは2GBのメモリを搭載しているものとあります。4GBのメモリですから十分だと思いますが、実はこれだと不十分です。
この後に、ワープロ、表計算などのアプリケーションを起動することを考えてみます。OS同様にアプリケーションにも「推奨空きメモリ」というものがあります。つまりOSが起動し終わった後にあとどれくらい空きがあるかという事です。
オフィス系アプリケーションは結構空きメモリ容量が必要です。推奨は4GBだとしたら、OSが2GBつかっているので、足りません。でも、作業はしないといけません。OSは最低限必要な機能を提供していますから終了して空きを増やすわけにはいきません。
仮想メモリでがんばる!
メモリが足りないからといってソフトウェアが動かなくては困ります。この場合コンピュータは普段データを保管しておくHDDに「仮想メモリ」を作ります。
HDD(ハードディスクドライブの略)と言えば中に円盤が入っています。以降のハードウェアの中でさらに詳しく話をしていきますが、最近ではSSDと呼ばれる、より高速なドライブもあります。HDDの場合、中で円盤が回転しています。回転する円盤の中からデータを探してRAM(メモリ)に展開するという作業を行っていて「保存」などの作業をした際にはRAM(メモリ)上にあったデータをHDDに書き込んでいます。
つまりHDDは書き込んだり・読みだしたりするときだけ働くもので、メモリに比べて非常に遅い速度で動作します。
つまり、HDDを仮想メモリで使いだすとコンピュータは全体的に動作が遅くなります。
それだけではありません。HDDへのアクセスが非常に多くなるため、高速で回転している円盤はいつもより沢山動きます。ですからHDDへの負荷が多くなるため、HDDの寿命にも影響してきます。
HDDはデータを保管してある場所です。ここに負荷がかかり無理をさせていると保管してあるデータも心配です。
こういった理由でも元々RAMは多めに積んでおきたいものです。RAMが多ければHDDへの負荷も減ることになります。自分が意図していないアプリケーションがバックエンドで動いている可能性もあります。その際には知らずのうちにRAMの空き容量を消費してしまっていることになります。