4.4 ソフトウェアとコンピュータの特徴

4.3 コンピュータの構成要素とその働きでは,コンピュータを構成する要素であるCPU,記憶装置について見てきました.今週の冒頭でも述べたように,これからはソフトウェアについて解説していきます.また,ソフトウェアがこれまで解説してきたハードウェアとどのように関係しているかを見ていくことにしましょう.

プログラム

コンピュータにさせたい仕事を実行させるためには,プログラムと呼ばれるものが必要となります.逆に,プログラムがなければコンピュータは動作しません.プログラムとは,コンピュータに実行させたい仕事の手順をコンピュータが理解できる形式で記述したものです.プログラムは予め人間によって記述され,コンピュータに与えられている必要があります.プログラムを記述することをプログラミングと呼び,その際に用いる言語をプログラミング言語と呼びます.プログラミング言語は,コンピュータに与える命令を厳密に記述できるように人工的に作られた言語です(私たちが日常利用している日本語などの言語は自然言語と呼ばれます).

プログラムとデータ

プログラムは情報を処理する命令の集合です.しかし,コンピュータの内部ではそのプログラム自体も情報として扱う事が出来ます.情報処理では,「処理内容を表す情報」と「処理対象となる情報」の2つの異なった情報があることになり,とくにこれらを区別する際には,前者をプログラム,後者をデータと呼びます.例えば,Windowsではプログラム自体のファイルは,〜.exeというファイル名で保存するという決まりごとがあります.Unixにはこのような決まりごとはありません.どちらの場合もプログラムであってもデータと同じようにファイルとして扱う事は共通しています.

プログラムとデータ

コンピュータの特徴

機械としてのコンピュータをハードウェアと呼ぶのに対し,そのハードウェアに仕事をさせ,様々な目的に利用する技術を総称してソフトウェアと呼びます.これは通常プログラムの形をとります.このソフトウェアという言葉は,ハードウェアという言葉と対応して使われることが普通です.プログラムもソフトウェアという概念の一部であり,この教材の中ではほぼ同義として使用します.

コンピュータは入力された情報を加工,処理し,その結果を出力する機械です.同じコンピュータに対して,異なる内容の命令が記述されたソフトウェアを与えて実行させることで,そのコンピュータは様々な仕事をすることが可能です.4.3 コンピュータの構成要素とその働きで見たように,ハードウェアは記憶や演算などの使用目的ごとに存在しています.これに対して,メールの送受信やWebの閲覧,文書処理などのサービスは用途別に開発されたソフトウェアを共通のハードウェアに与える事で実現しています.

このように汎用のハードウェアを持ち,ソフトウェアを入れ替えることで様々な情報を様々な方法で処理ができるという事がコンピュータの特徴です.

様々な用途に使われるコンピュータ

● 練習問題

  1. 普段我々が使用しているソフトウェアにはどのようなものがあるだろうか?それぞれのソフトウェアの用途も考え,以下のような表を作ってみよう.
  2. ソフトウェアの名前 用途
    各自で記入しよう 各自で記入しよう

  3. 「コンピュータは使用目的を告げずに販売される商品である」といわれることもあるが,これはどういった意味だろうか?また我々の身近に他にそういった商品があるだろうか?考えてみよう.

基本ソフトウェアと応用ソフトウェア

コンピュータで利用できるソフトウェアは,その果たす役割の違いによって基本ソフトウェアと応用ソフトウェアの2種類に大別する事が出来ます.

応用ソフトウェアはアプリケーションとも呼ばれ,特定の作業や業務を行う為に使用されるソフトウェアのことです.前に述べたように,利用者は異なるソフトウェアをコンピュータで実行して操作することで,文書作成,表計算,電子メール,Webページの閲覧など,コンピュータを様々な用途に使うことができます.

基本ソフトウェアとして,OS(Operating System)があげられます.私たちがアプリケーションを用いてコンピュータに仕事をさせる時,アプリケーションはキーボード,ディスプレイなどの入出力装置や本体内部のメモリやハードディスクなどの様々な装置を利用して仕事を行っています.この時,コンピュータを構成するこれらの装置を効率よく使うために働くソフトウェアがOS(Operating System)と呼ばれるものです.

OSは様々な装置やアプリケーションの間に立ち,コンピュータが行う基本的な仕事を管理しています.これが基本ソフトウェアと言われる理由です.OS自身もソフトウェアであるためハードディスク上に書き込まれています.たいていのコンピュータでは,電源を入れると自動的にOSがメモリに読み込まれて実行される仕組みが備わっています.この仕組みによって,利用者は電源を入れる操作だけでOSが起動した状態からコンピュータを使う事ができ,すぐにアプリケーションを起動してスムーズに作業ができるわけです.OSが起動するとアプリケーションをすぐに使う事ができる仕組みに関しては,この後解説します.代表的なOSとしては,Unix,Windows,MacOSなどがあります.

以後はOSが説明に加わってくるので,区別を明確にするために応用ソフトウェアをアプリケーションに呼び換えて説明していきます.以下はこれまでの用語を整理した図です.

用語の系統樹

OSの役割

OSの具体的な役割には様々なものがありますが,その中でも以下の3点について説明していきます.

  • アプリケーションとハードウェアの仲介
  • ユーザーインターフェースの提供
  • 資源の管理
  • アプリケーションとハードウェアの仲介

    コンピュータを構成する様々な装置(入出力装置や本体内部の記憶装置などのハードウェア)は非常に複雑な機械であり,アプリケーションがこれらの装置を直接制御することは面倒です.OSはこれらの装置とアプリケーションの仲介役を果たしています.ハードウェアの制御をOSに任せることによって,アプリケーションはOSとだけやり取りをすればよくなります.それによって,同じOS上であれば,コンピュータのハードウェアの違いに関係なく同一のアプリケーションを利用することができます.逆に,特定のアプリケーションはそのアプリケーションが対応しているOS上でしか動作しません.従って,Unix環境だけで動作するように作られたアプリケーションをWindows環境で利用することはできません.

    OSとアプリケーションとハードウェアの階層構造

    ユーザーインターフェースの提供

    ユーザーインターフェースとは,コンピュータがユーザに対して情報を表示したり操作を促すための仕組みのことを意味しています.現在ではアイコンなどを利用したGUI(Graphical User Interface)が主流となっています.OSがユーザーインターフェースを提供することによって,私たちはコンピュータ内部での複雑な処理を意識せずにコンピュータを利用することができます.また,個別のアプリケーションソフトウェアで使用するユーザーインターフェースも共通でないと,使い勝手が良くありません.よって共通のユーザーインターフェースを提供して,それぞれのアプリケーションの使い勝手を向上させる役割も担っています.

    資源の管理

    二次記憶装置と主記憶装置の領域やCPU(の演算時間)などのように,利用できる量に限りがあるものをコンピュータの資源とよびます.これは1つのコンピュータを多数の人が利用する時にも適用される考え方です.OSはこれらの資源を効率的に使用するための機能を持っています.

    OSはデータが二次記憶装置のどの場所に記憶されているかを管理しています.この機能と前に説明したGUIによる操作を組み合わせる事で,ファイルのアイコンをダブルクリックするだけで,そのデータの中身を見ることができるわけです.例えば,私達はファイルに名前を付けて保存していますが,OSがない状態ではハードディスクに格納されている番地等でファイルを管理しなければいけなくなります.ハードディスクに格納されている場所と,ファイルの名前を対応付けているのがOSなのです.

    メモリには様々な情報が書き込まれます.しかし,メモリ上に好き勝手に情報を書き込んでしまうと,元々あった必要な情報が上書きされてしまい,コンピュータが正常に動作しなくなってしまいます.そのような事態を避けるため,OSはメモリの番地(情報を保管する区画に割り振られた数字)を管理しています.

    CPUは同時に2つ以上の処理を実行することができません.必ずどれか1つの処理が占有する事になります.しかし,コンピュータを普段使っているときは,CDプレーヤーで音楽を再生しながら,文書の作成などをしたことのある人も多いはずです.これはOSがCPUに対して,時間を細かく区切って処理する内容を割り振っている為です.この切り替えが高速に行われている為に同時に2つのアプリケーションを動かしているように見えるのです.OSによって現在実行されているプログラム(アプリケーション)をプロセス(process)と言います.

    それではみなさんが使っているコンピュータで,実際に現在どういったプロセスがあるのかをみてみましょう.

    端末ウィンドウで ps と入力すると以下のようになります.

    % ps
       PID TT       S  TIME COMMAND
      2842 pts/1    S  0:00 tcsh
      2844 pts/2    R  0:00 -tcsh
    
    	  

    ここで左上に PID というものが出ています.これはプロセスごとに割り当てられている番号です.この番号をプロセスID(process id)といいます.

    emacsやMozillaは,終了のキーやメニューが用意されています.しかし,時にはアプリケーションに欠陥があって,実行が止まらなくなったり,何をしても反応がなくなったりします.そのような時には,そのプロセスを強制終了させなければなりません.

    まず,ps コマンドで終了したいプロセスの pid を調べます.
    その後,次のように入力します.

    % kill (終了したいプロセスの pid)
    	

    そうするとプロセスが終了します.

    これでも終了しない場合は,ここで kill のオプションとして -9 をつける(% kill -9 (PID))と,強制的に終了します.ただし,編集中のファイルの情報などは失われる可能性があります.

    ● 練習問題

  • xclock & を実行し,ps コマンドの表示を確認しなさい.
  • kill コマンドで上の xclock を終了させなさい.
  • アプリケーションが実行される仕組み

    コンピュータはどのような仕組みでアプリケーションを実行しているのでしょうか.emacsでファイルを開いて編集し保存する過程を例に見てみましょう.

    1. まず,利用者がキーボードやマウスを用いてアプリケーション(emacs)を実行する命令を入力します.
    2. OSは入力を解釈し,起動したいアプリケーション(emacs)がハードディスク(二次記憶装置)のどこに記憶されているかを探し出し,メモリ(主記憶装置)に読み込むという処理をします.
      アプリケーションの実行1
      さらに「ipl」というファイルをemacsで開くとすると,OSはiplというファイルのデータもハードディスクから探してきて,メモリに読み込むという処理をします.
      アプリケーションの実行2

      ここで,メモリに記憶できる以上の大きなアプリケーションが実行されようとすると,OSはCPUの仮想記憶(Virtual Memory)機能を用いて,実行が可能となる仕組みを提供します.アプリケーションの中で,これから実行される部分だけをメモリ上に置き,実行を開始します.実行に伴って,必要な部分がメモリ上にないと,実行し終わった部分に新たに必要となった部分を上書きして,実行を続けます.こうして十分なメモリがある場合と比べると,ディスクとメモリの間に情報のやり取りが増えるために実行速度が低くなります.

    3. OSはメモリに呼び出したアプリケーション(emacs)を実行させます.
      アプリケーションの実行3
    4. キーボードなどからファイル編集をするための命令を打ち込むと,この命令はOSを介してアプリケーションに伝わり,アプリケーションが処理の命令をOSを介してCPUに伝えます.CPUはメモリからファイルのデータを取り出しては,命令に従った処理を行い,その結果をメモリに書き込みます.
      アプリケーションの実行3
    5. データに処理を加えた途中経過や結果は,ディスプレイ上に表示されます.この表示の作業もOSとアプリケーションが連携して行います.また,結果をプリンタなどに出力することもできます.
    6. 4.3 コンピュータの構成要素とその働きで述べたように,主記憶装置であるメモリは,電源が切れると記憶した情報が消えてしまいます.このままでは困るので二次記憶装置にデータを記録する必要があります.編集を加えたiplというファイルを保存すると,OSはiplというファイルのデータをメモリからハードディスクに移して保存する処理をCPUにやらせます.
      アプリケーションの実行3

    ● 練習問題

    1. あるコンピュータには64メガバイトのメモリが搭載されています.このコンピュータのOSの実行には合計で25メガバイトのメモリが必要です.ここで仮に,それぞれのアプリケーションの実行に必要なメモリの量は以下のとおりであるとします.これらのアプリケーションの中から,同時に2つのアプリケーションを実行しようとした時,二次記憶装置を併用せずに実行できる組み合わせを全て挙げなさい.
    2. アプリケーション名 実行に必要なメモリの量
      emacs 8メガバイト
      Mozzila 33メガバイト
      xpaint 4メガバイト

    3. 1の問題では計算を簡単にする為に,メモリの消費量は実際のコンピュータの場合とは異なるモデルケースで出題しました.では実際はどうなのでしょう?WindowsではメモリやCPUの使用状況,プロセスなどを確認できるタスクマネージャというものがあります.Ctrl,Delete,Altキーを同時に押して,タスクマネージャーを確認してみましょう.またアプリケーションを起動させたり,作業をしてみたりして変化を観察してみましょう.
    4. タスクマネージャー

    5. Windowsのメモ帳というアプリケーションを起動し,「hello.txt」というファイルを開いて,「こんにちは」と入力して保存する作業過程を考えてみましょう.以下の空欄を埋めてください.
    6. ユーザからの命令OSがCPUにやらせる処理ハードディスクからメモリに移されるデータメモリからハードディスクに移されるデータ
      メモ帳の起動     ----
      hello.txtを開く     ----
      「こんにちは」と入力 メモ帳の実行処理 ---- ----
      hello.txtを保存 ----