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

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

プログラム

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

プログラムとデータ

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

プログラムとデータ

コンピュータの特徴

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

コンピュータは入力された情報を加工,処理し,その結果を出力する機械です.同じコンピュータに対して,異なる内容の命令が記述されたソフトウェアを与えて実行させることで,そのコンピュータは様々な仕事をすることが可能です.私達はコンピュータを様々な用途に使用していますが,4.2 コンピュータの構成要素とその働きで見たように,それぞれの使用目的ごとにハードウェアが個別に存在しているわけではありません.メールの送受信や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つのアプリケーションを動かしているように見えるのです.CPUによって現在実行されているプログラム(アプリケーションおよび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 -9 (終了したいプロセスの pid)
    

    そうするとプロセスが強制的に終了されます.

    ここで kill のオプションとしてついている -9 というのは,SIGKILL という種類のシグナルを送ることを指示しています.このオプションをつけることによってコンピュータに負荷を与えることなく,プロセスの強制終了を行う事ができます.

    ● 練習問題

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

      それでは,コンピュータはどのような仕組みでアプリケーションを実行しているのでしょうか.OSが起動している状態でアプリケーションが実行される仕組みを見てみましょう.

    1. まず,利用者がキーボードやマウスを用いてアプリケーションを実行する命令をOSに対して入力します.
    2. OSは利用者に指定されたアプリケーションがハードディスクのどの部分に格納されているかを管理しています.命令は実行されているOSによって解釈され,指定されたアプリケーションがハードディスクなどの二次記憶装置から主記憶装置であるメモリに読み込まれます.
    3. 次にメモリに移動したアプリケーション本体に記述された処理がOSによってCPUに転送され,処理が始まります.つまりアプリケーションの実行が始まります.この状態が,アプリケーションがプロセスに加わるという意味です.処理対象となるデータもOSの管理している情報を元にしてメモリ上に移されます(文書処理などを行う際には文書などのデータもメモリに置かれます).

      この時,コンピュータに搭載されているメモリに記憶できる情報量よりも,大きな情報量を持つアプリケーションが実行の為にメモリに移される可能性もあります.するとメモリがいっぱいになって,アプリケーションが実行できなくなってしまいます.そこでOSはメモリだけではなく,ハードディスクを併用し,実際より多くのメモリの容量があるように振舞えるように働きます.しかしハードディスクはメモリと比べてデータを読み書きする速度が遅いので,アプリケーションの動作が遅くなったりします.またOSからの指示に従って,CPUはどのデータをメモリとハードディスクの間で入れ替えるかを判断する処理も行わなくてはいけなくなります.OSが適切にデータの入れ替えの指示を出しそこなったりして,コンピュータが不安定になる事もあります.

    4. キーボードなどからデータを作成編集するための命令を打ち込むと,この命令は実行されているOSを介してアプリケーションに伝わり,アプリケーションが処理の命令をOSを介してCPUに伝えます.CPUは処理対象であるデータをメモリから呼び出し,データに対して命令に従った処理を行い,その結果をメモリに書き込みます.
    5. データに処理を加えた途中経過や結果は,ディスプレイ上に表示されます.この表示の作業もOSとアプリケーションが連携して行います.また,結果をプリンタなどに出力することもできます.
    6. 4.2 コンピュータの構成要素とその働きで述べたように,主記憶装置であるメモリは,電源が切れると記憶した情報が消えてしまいます.そのため,作成編集がすんだデータを保存する場合は,データをメモリから二次記憶装置にうつして保存します.保存された場所はOSが管理しているので,再度アプリケーションからデータを読み出すことも可能です.

    1から3の手順

    4から6の手順

    ● 練習問題

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

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

    5. emacsを起動し,iplというファイルを開き,"A"という文字を入力して保存する作業過程を考えることにしよう.以下の表の?の部分を選択肢から語句を選んで埋めてみよう.語句は同じものを何度使っても良い.なお以下の表は上から下に向かって時間が進むとし,OSの実行に関しては表に含めないとする.
      • 選択語句:「emacsの実行処理」,「iplというファイルのデータ」,「emacsのアプリケーション自体のデータ」

    入力装置からの入力 CPUで行われる処理 ハードディスクからメモリに移されるデータ メモリからハードディスクに移されるデータ
    なし なし なし なし
    emacsの起動コマンド なし
    iplというファイルを開くというコマンド なし
    "A"とタイピング なし なし
    iplというファイルを保存するコマンド なし