コンピュータの構成要素とその働き

みなさんが,特別教室で目にするコンピュータは様々な部品から構成されています.最初にそれらの部品がどのような外観をしていて,どのような機能を持っているかを見ていくことにしましょう.これから紹介するようなコンピュータを構成する機器の事をハードウェアと呼びます.コンピュータを物理的に構成しているのはハードウェアですが,ハードウェアだけではコンピュータは仕事をする事はできません.

コンピュータの構成要素

コンピュータの内部を覗いてみると以下のようになっています.

コンピュータ内部の写真1コンピュータ内部の写真2

コンピュータの中には演算をつかさどるCPUと,記憶をつかさどるメモリ,ハードディスクがあります.これらの要素が相互に協調しあってコンピュータの機能を実現しています.各構成要素について少し詳しく見てみましょう.

記憶装置

コンピュータの記憶装置には,主記憶装置(メモリ)二次記憶装置(補助記憶装置,ハードディスクやCD-ROMなど)があります.両者の特徴は以下の通りです.

主記憶装置
  • データの読み込み速度・書き込み速度が速い
  • 電源を切るとデータが全て消えてしまう
二次記憶装置(補助記憶装置)
  • データの読み込み速度・書き込み速度が(主記憶装置と比べて)遅い
  • 電源が切れてもデータは消えない

テキストエディタを使った文書編集を例に,記憶装置の役割について見てみましょう.メモ帳を使って文章を編集するとします.

保存前  保存前

このように「文章を書きます。」という文章を入力しました.この段階では,入力された情報(文章)は主記憶装置であるメモリに保存されています.これは,編集中の文章は変更される可能性が高く,情報を高速に読み書きできる必要があるためです.

保存後  保存後

しかし,メモリ上に保存された文章情報はコンピュータの電源が切られると消失してしまいます.そのため,書き終えた文章はファイルに保存します.ファイルに保存するとは,メモリ上に存在している文章情報を二次記憶装置にコピーすることです.これによって,コンピュータの電源が切れても文章が消失してしまうことはありません.

● 練習問題

  1. (二次記憶装置である)ハードディスクと(主記憶装置である)メモリの利点と欠点をそれぞれ1つずつあげてみよう.

主記憶装置の外観

主記憶装置はコンピュータ内部にあり,通常メモリと呼ばれます.メモリは,以下のようなスティック状の形をしています.

メモリ表面写真メモリ裏面写真

メモリ横面写真

二次記憶装置(補助記憶装置)の外観

二次記憶装置には以下のようなものがあります.ハードディスク以外はすべてコンピュータ外部の記憶装置です.

ここでは二次記憶装置の例としてハードディスクを紹介します.ハードディスクはコンピュータ内部にあり,その概観は以下のような四角い箱となっています.

ハードディスク表面写真ハードディスク裏面写真

ハードディスク上部にある銀色の板をはがして,ハードディスクの中身を見てみましょう.

ハードディスク内部写真

中には鏡のような円盤が2枚入っています(写真の例は分解の過程で上側の円盤1枚が割れてしまったものになっています).この円盤に磁気を帯びさせる事で,情報が保存されます.一連の情報は同心円状に配置されたトラック(円周)に記録されています.電源が入っているときにはこの円盤は常に回転しています.

銀色の三角形の形をした突起の先がヘッドと言われる部位で,これが円盤の上を移動することで情報を読み書きするトラックを変えることができます.

記憶装置の容量

主記憶装置も二次記憶装置も一定の容量の情報しか記憶できません.詳現在市販されている主記憶装置(メモリ)では,一本で64メガバイト,128メガバイト,256メガバイト,512メガバイトのいずれかのデータ容量を持つメモリが一般的です.また,二次記憶装置は主記憶装置と比較して記憶容量が格段に大きく,例えばハードディスクは現在では数十ギガバイト(GB)の容量を持ちます.

1GBは10億バイト,80億ビットになります。半角英字1文字を表すための情報量が1バイトなので,10億個の文字が保存できる事になります.
もし,この授業で目標とされているタイピングスピード(毎分120字)で英文字を入力して,1GBのハードディスクをいっぱいにするには,1,000,000,000 / 24 / 60 / 120 = 約5,787日(約16年)かかることになります.

CPU

CPU(Central Processing Unit)は演算機能を持ち,コンピュータの頭脳に相当します.まずはCPUの外観を見てみましょう.

CPU表面写真CPU裏面写真

CPUななめからの写真

CPUは,主記憶装置上のプログラムから一つ一つ命令を読み出して実行する装置です.CPUは,演算ユニット(Arithmetic and Logic Unit)とレジスタという部品から構成されています.レジスタは,CPU内部で情報を保存するユニットです.演算ユニットは,レジスタの情報を使って計算(四則演算や論理演算)を行います.

CPUは基本的に以下の三つの仕事しかしていません.

コンピュータはこれらの単純な動作の積み重ねによって,様々な機能を実現しているのです.

クロック

クロックとは,CPUの各部分の基本動作のタイミングを合わせるために,一定の時間間隔で発生している信号です.CPUが行う様々な処理はクロック信号にタイミングを合わせて行われます.従ってクロック信号が発生する間隔が短ければ短いほど,CPUの動作が速いことになります.クロックが1秒間に何回発生するかを示す数値としてクロック周波数が使われます.一般にその周波数が高ければCPUの動作速度も高いということができます.

例えば端末ウィンドウに皆さんが「a」という文字を入力しそれをコンピュータが表示する時を考えて見ましょう.

CPUが行うこれらの処理はそれぞれ数クロックの時間がかかります.

コンピュータの販売広告などで「1GHzのCPU」と言った文句を聞いた事はないでしょうか?この1ギガヘルツとは,クロック数を示しています.1ギガヘルツの場合,1秒間に1ギガ(1,000,000,000)回ものクロック数の処理を実行する事ができます.この数が増えれば増えるほど,CPUの処理速度が高速であると考える事ができます.1GHzのCPUの場合,先ほどの例で示したような4つの処理は,一つの処理が3クロックずつかかると仮定すると,4 * 3 / 1,000,000,000 = 0.000000012秒で済んでしまうことになります.

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

ここからはソフトウェアについて解説していきます.また,ソフトウェアがこれまで解説してきたハードウェアとどのように関係しているかを見ていくことにしましょう.

プログラム

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

プログラムとデータ

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

プログラムとデータ

コンピュータの特徴

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

コンピュータは入力された情報を加工,処理し,その結果を出力する機械です.同じコンピュータに対して,異なる内容の命令が記述されたソフトウェアを与えて実行させることで,そのコンピュータは様々な仕事をすることが可能です.ハードウェアは記憶や演算などの使用目的ごとに存在しています.これに対して,メールの送受信や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. 主記憶装置であるメモリは,電源が切れると記憶した情報が消えてしまいます.このままでは困るので二次記憶装置にデータを記録する必要があります.編集を加えた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を保存 ----