プログラムの実行単位:プロセス
ITを学びたい
先生、「プロセス」ってなんですか?プログラムのことですか?
IT専門家
いい質問だね。プログラムは、いわば料理のレシピのようなものだよ。プロセスは、そのレシピに基づいて実際に料理を作っている状態のことだ。パソコンの中で、プログラムを実行している状態をプロセスと呼ぶんだ。
ITを学びたい
つまり、プログラムが動いている状態ということですね。でも、タスクとは違うんですか?
IT専門家
厳密には違うんだけど、どちらもプログラムが実行されている状態を表す言葉として、ほぼ同じ意味で使われることが多いね。特にパソコンを使う上では、あまり区別せずに使っても問題ないよ。ただ、プロセスは細かい作業単位であるスレッドが集まったものだ、ということを覚えておくと良いよ。
processとは。
コンピューターの中でプログラムが動く時のことについて説明します。プログラムが動き始めると、コンピューターの管理者である基本ソフト(OS)は、そのプログラムにそれぞれ作業場である記憶領域を割り当てます。この作業場ごとで動くプログラムの単位を「プロセス」と言います。さらに、それぞれのプロセスはもっと細かい作業単位である「スレッド」に分割されて、コンピューターの頭脳である中央処理装置(CPU)によって順番に処理されます。ただし、作業、プロセス、スレッドをまとめて「タスク」と呼ぶこともよくあります。また、使う人から見ると、プログラムを動かす一つ一つの作業は「ジョブ」と呼ばれます。
はじめに
計算機を動かすには、手順書が必要です。この手順書は、計算機に特定の仕事をさせるための指図の集まりです。しかし、手順書は、そのままでは計算機で実行できません。手順書を実行するためには、計算機上で適切に管理される必要があります。その管理の単位となるのが「過程」です。
過程は、手順書の実行単位であり、計算機の資源を適切に利用するために重要な役割を担っています。計算機の資源とは、計算機の部品である演算装置や記憶装置、そしてそれらをつなぐ経路といった、計算機が仕事をするために必要なものすべてを指します。これらの資源は限られていますから、複数の仕事を同時に行うには、資源をうまく分け与える必要があります。過程は、この資源分配の単位となるわけです。
一つの手順書から複数の過程が作られることもあります。例えば、表計算の手順書を使って、複数の表を同時に編集したいとします。この場合、表ごとに一つの過程が作られ、それぞれの過程が資源を割り当てられて、同時に作業が進められます。また、同じ手順書を複数の人が同時に使う場合も、利用者ごとに異なる過程が作られます。
過程は、計算機内部で様々な情報を持ちながら管理されています。これには、手順書がどこにあるかという情報や、現在どの指図を実行しているかといった情報が含まれます。さらに、計算機が過程に割り当てた資源の情報も記録されています。これらの情報は、計算機が複数の仕事を効率よく、かつ安全に処理するために不可欠です。
このように、過程は、手順書を実行するための環境を提供し、計算機の資源を適切に管理することで、私たちが複数の仕事を同時に行うことを可能にしています。この記事では、過程のより詳しい仕組みや役割について、さらに詳しく説明していきます。
プロセスの定義
計算機で何か作業をする際、色々な手順を踏みます。例えば文章を作る、絵を描く、表計算をするなどです。これらの作業をするための指示書に相当するのが「プログラム」です。このプログラムは、計算機の中に保存されています。しかし、保存されているだけでは何も起きません。プログラムが実際に動き出すには、「プロセス」というものが必要です。
プロセスとは、計算機上で実際に作業を行っているプログラムの実体と考えることができます。料理のレシピに例えると、レシピ自体が「プログラム」で、実際にキッチンで料理を作っている状態が「プロセス」です。レシピは本棚にしまわれていても何も起きませんが、誰かがレシピに基づいて料理を始めると、材料が使われ、調理器具が熱せられ、美味しい料理が完成します。これと同じように、プログラムは計算機の中に保存されているだけでは何も動作しませんが、人がプログラムを起動すると、プロセスが作られ、作業が開始されます。
プロセスを作る役割を担っているのは、計算機の「基本ソフト」です。基本ソフトは、計算機全体の動作を管理する重要な役割を果たしています。基本ソフトは、起動されたプログラムごとに必要な計算資源を割り当てます。計算資源には、計算を行う場所である「主記憶」や、計算の順番を制御する「中央処理装置」の時間などが含まれます。
基本ソフトは、複数のプロセスに計算資源を適切に分配することで、複数のプログラムを同時に実行できるよう調整します。例えば、文章を作成しながら音楽を聴いたり、絵を描きながら表計算をすることが可能です。これは、基本ソフトが複数のプロセスを管理し、それぞれのプロセスに必要な資源を割り当てているからです。
各プロセスには、独立した作業場所が与えられます。この作業場所には、プログラムを実行するために必要な色々なものが保管されます。例えば、計算の途中で使う数値や文字列を保存する場所、作業に使う書類の在り処を示すものなどです。これらの資源は、他のプロセスの作業場所とは区別され、独立して管理されます。これにより、それぞれのプログラムは互いに干渉することなく、自分の作業に集中できます。
プロセスとメモリー
計算機上で作業を実行する単位をプロセスと言います。このプロセスは、演算装置によって指示された通りに作業を進めるために、情報を一時的に保管しておく場所が必要です。この場所がメモリーと呼ばれる記憶装置です。
演算装置は、それぞれのプロセスに専用のメモリー領域を割り当てます。この領域は、ちょうど作業机のようなもので、それぞれのプロセスは自分の机の上にある情報だけを利用できます。他のプロセスの机の上にある情報には触れることができません。
この仕組みにより、複数のプロセスが同時に実行されても、互いに邪魔することなく、作業を進めることができます。例えば、文章作成ソフトと表計算ソフトを同時に開いていても、それぞれが独立して動作し、問題なく使えるのは、この仕組のおかげです。
もし、それぞれのプロセスが他のプロセスのメモリー領域にアクセスできてしまうと、どうなるでしょうか。例えば、文章作成ソフトが表計算ソフトのデータに勝手に書き込んでしまったら、データが壊れてしまうかもしれません。また、表計算ソフトが文章作成ソフトの動作を邪魔して、文章作成ソフトが急に終了してしまうかもしれません。
このような問題を防ぐために、演算装置はメモリー保護機能という安全装置を備えています。この機能により、各プロセスは自分のメモリー領域だけを利用することが保証され、他のプロセスの領域にアクセスすることはできません。これによって、システム全体の安定性が保たれ、私たちは安心して複数の作業を同時に行うことができるのです。
メモリー領域は、プログラムの命令や必要なデータなどを格納するために使われます。各プロセスは、必要な時にメモリー領域から情報を読み込み、処理を行い、結果を再びメモリー領域に書き込みます。この一連の動作を繰り返すことで、プロセスは作業を進めていきます。まるで、作業机の上で資料を読み、計算を行い、結果をメモに書き留めるようなものです。
プロセスとスレッド
計算機で作業を実行するための手順を記したものをプログラムと言いますが、このプログラムを実行するためには、計算機上でプログラムを動かすための場所と資源が必要です。このプログラムの実行に必要な資源と、実行されている状態全体をまとめてプロセスと呼びます。プロセスは、計算機の記憶領域、ファイル、ネットワーク接続といった様々な資源を利用して動作します。
一つのプログラムが一つのプロセスとして実行される場合もありますが、一つのプロセスの中に、複数の小さな実行単位を作ることができる場合もあります。この小さな実行単位をスレッドと呼びます。スレッドは、プロセスの一部として存在し、親となるプロセスの資源を共有しながら動作します。一つのプロセスの中に複数のスレッドがある場合、これらのスレッドは同時に動作しているように見えることがあります。
これを、織物の製造に例えて考えてみましょう。プロセスは織物を作るための作業場全体だとします。作業場には、糸、織機、作業員といった様々な資源があります。スレッドは、この作業場の中で、特定の模様を織る作業だと考えることができます。複数の作業員がそれぞれ別の模様を同時に織ることで、作業全体を早く終わらせることができます。これが、複数のスレッドが一つのプロセスの中で同時に動作している状態です。
例として、よく使う閲覧ソフトを考えてみましょう。閲覧ソフトで複数の画面を開いている時、それぞれの画面は別々のスレッドとして処理されます。一つの画面で動画を見ていても、別の画面で文字を読むことができます。これは、それぞれの画面が別々のスレッドとして動作し、お互いに干渉することなく処理されているからです。このようにスレッドを利用することで、一つのプログラムの中で複数の作業を同時に行うことができ、作業全体の効率を上げることができます。
用語 | 説明 | 織物製造の例え | 閲覧ソフトの例え |
---|---|---|---|
プログラム | 計算機で作業を実行するための手順 | 織物の設計図 | 閲覧ソフトの設計図 |
プロセス | プログラムの実行に必要な資源と、実行されている状態全体。 | 織物を作るための作業場全体(糸、織機、作業員など) | 閲覧ソフトが実行されている状態全体 |
スレッド | プロセスの一部として存在する小さな実行単位。親となるプロセスの資源を共有しながら動作する。 | 作業場の中で、特定の模様を織る作業 | 開いているそれぞれの画面 |
同時動作 | 複数のスレッドが同時に動作しているように見える状態。 | 複数の作業員がそれぞれ別の模様を同時に織る | 一つの画面で動画を見ていても、別の画面で文字を読むことができる。 |
プロセスの管理
計算機を動かすための基本的な部品である演算処理装置や記憶装置といった資源は、様々なプログラムによって共有されています。これらのプログラムは、計算機の頭脳である演算処理装置によって次々と実行されますが、同時に実行されるプログラムが増えると、資源の奪い合いが発生し、計算機全体の動作が遅くなる可能性があります。このような問題を防ぐため、計算機には動作の指揮役である基本処理手順担当者がいます。
基本処理手順担当者は、実行中のプログラムそれぞれを「手順」と呼び、手順の生成から実行、停止まで、手順に関する全ての作業を管理します。手順とは、プログラムが実行されている状態のことを指します。基本処理手順担当者は、どの手順に演算処理装置を使う時間を割り当てるか、どの手順に記憶装置の領域を割り当てるかなどを決定します。これは、計算機全体をスムーズに動かすための重要な役割です。
基本処理手順担当者は、様々な手順を効率よく管理するために、多くの手順を少しずつ順番に実行する「時分割方式」や、手順の重要度に応じて演算処理装置の使用時間を割り当てる「優先順位方式」といった方法を用います。例えば、動画を再生する手順や重要な計算をする手順には、より多くの演算処理装置の使用時間が与えられます。また、記憶装置の使用状況に応じて手順の実行を一時停止することもあります。このように、基本処理手順担当者は、限られた資源を適切に配分することで、計算機全体の安定した動作を維持しています。
基本処理手順担当者は、手順の状態を常に監視し、手順が終了したら記憶装置から削除するなど、手順の管理を一貫して行います。 これにより、計算機は多くのプログラムを同時に実行しながらも、安定して動作することができるのです。
役割 | 機能 | 手法 | 目的 |
---|---|---|---|
基本処理手順担当者 (OS) | 手順(実行中プログラム)の生成・実行・停止を管理 資源(演算装置、記憶装置)の割り当て |
時分割方式 優先順位方式 手順の一時停止 |
計算機全体の円滑な動作 資源の効率的な利用 安定した動作の維持 |
関連用語との違い
「手順」とは、計算機の中で実行される作業の流れのことで、よく似た言葉に「仕事」、「業務」、「作業」などがあります。これらの言葉との違いを正しく理解することが大切です。
まず、「作業」とは、計算機の基本的な操作の単位です。計算機は「作業」を一つずつ順番にこなしながら、様々な処理を進めていきます。「手順」と「作業」は似ていますが、「作業」は計算機内部の細かい動作の一つ一つを指すのに対し、「手順」は全体的な流れを指します。たとえば、料理でいえば、「野菜を切る」、「肉を炒める」といった一つ一つの動作が「作業」にあたり、「レシピ」全体が「手順」に相当します。
次に、「業務」とは、利用者から見たプログラムの実行単位です。利用者は、計算機にさせたいことを「業務」として指示します。一つの「業務」の中には、複数の「手順」が含まれることもあります。たとえば、インターネットで買い物をするとき、「商品を選ぶ」、「カートに入れる」、「支払いをする」といった一連の「手順」が一つの「業務」となります。
最後に、「仕事」とは、「業務」とほぼ同じ意味で使われることがありますが、利用者側の視点がより強い言葉です。利用者は、「仕事」を計算機に依頼し、計算機はその「仕事」を複数の「手順」に分けて実行します。たとえば、文書作成ソフトで文章を書くとき、利用者にとっての「仕事」は「文章を書く」ことですが、計算機内部では「文字を入力する」、「保存する」、「印刷する」といった複数の「手順」が実行されます。
このように、「手順」、「作業」、「業務」、「仕事」といった言葉は、それぞれ少しずつ異なる意味を持っています。「手順」とは、計算機が資源を管理する視点から定義された言葉であり、計算機の仕組みを理解する上で非常に重要です。「手順」を正しく理解することで、計算機がどのように動作しているのかを深く理解することができます。
用語 | 意味 | 視点 | 例 |
---|---|---|---|
作業 | 計算機の基本的な操作の単位 | 計算機内部 | 野菜を切る、肉を炒める |
手順 | 作業の流れ全体、計算機内での実行作業の流れ | 計算機資源管理 | レシピ |
業務 | 利用者から見たプログラムの実行単位 | 利用者 | 商品を選ぶ、カートに入れる、支払いをする |
仕事 | 利用者側の視点が強い、利用者から計算機への依頼内容 | 利用者 | 文章を書く |