5.1 CPUとプロセス

コンピュータが情報を記憶していることは前回まで詳しくやってきました.
しかしコンピュータがする仕事は情報を記憶するだけではありません.今週はコンピュータの構成を通してコンピュータが具体的にどういう場所でどのような働きをしているのかを学びます.

CPU

コンピュータには記憶装置のほかにも様々な装置があります.(→概念編:「コンピュータの構成」)このうち情報を処理する所のことを,中央処理装置 CPU(Central Processing Unit)(→概念編:「中央処理装置」)と言います.CPUは演算機能と制御機能を持ち,メモリに貯えられたプログラムを実行します.

プログラム

プログラム(program)とは,コンピュータに対して,どのような手順で仕事をすべきかを書いたものです. コンピュータが動いているのは,誰かがプログラムを書いたからです.(→概念編:「プログラム」

プログラムはファイルの中に記憶されています.例えば,ls と いうファイルの中には,ファイルの一覧を表示する手順が書かれています.

試しに,ls というプログラムがどこにあるのか探してみましょう.プログラムのファイルがどこにあるのかを知るためには,which コマンドを使います.

% which ls
/usr/ucb/ls

/usr/ucb/ls のファイルの内容を見てみましょう.これは機械に理解できる形式ですが,人間には理解できません.(たまに理解できる人がいて,変人と呼ばれます)

ls コマンドを実行すると,ディスクから /usr/ucb/ls の内容が主記憶に読み込まれ,CPU がそこに書かれた手順を実行します.

プロセス

たくさんあるプログラムの中からCPUが現在実行中のプログラムをプロセス(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)といいます.

プロセスの強制終了

ls コマンドのプロセスは,ファイル名を表示するとすぐに終了します.emacs や netscape は,終了のキーやメニューが用意されています.しかし,時にはプログラムにミスがあって,実行が止まらなくなったり,何をしても反応がなくなったりします.そのような時には,そのプロセスを強制終了させなければなりません.

  • コマンドを起動した端末ウィンドウで C-c を入力します.これでシグナル(signal)というものがプロセスに送られて,通常のプロセスは強制終了します.
  • プロセスによっては C-c でも終了しないものがあります.そのような時は次の kill コマンドを使います.

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

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

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

ここで kill のオプションとしてついている -9 というのは,SIGKILL という種類のシグナルを送ることを指示しています.シグナルには他にもたくさんの種類があり,強制終了以外にもいろいろな用途に使われます.

● 練習問題

  1. xclock & を実行し,ps コマンドの表示を確認しなさい.
  2. kill コマンドで上の xclock を終了させなさい.