0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロセスについて少し理解ができる実験

Last updated at Posted at 2024-11-19

プロセスとは

プロセスとはプログラムの実行単位を指すらしいです。
でもそう言われても正直なんのこっちゃ?なんですよね…

ということで可能な限り可視化できるように簡単な実験をしてみました。

プロセスの確認方法

Windowsの場合はタスクマネージャを開くことによって、現在どのアプリ・プロセスが動いているのかを確認できるようになっています。
タスクマネージャはCtrl + Shift + Escで開けます。
image.png

現在アプリとして起動しているのはタスクマネージャ、エクスプローラ、Edgeの3つですね。
バックグラウンドプロセスと書いてあるものは名前の通り裏で動いてくれているプロセスです。
ウイルス対策ソフトなんかがわかりやすいですかね。
画面を表示する必要はないけど裏で処理として動いているよ。みたいなやつです。

Excelで実験

正直アプリはなんでもいいのですが、ひとまずExcelファイルを2つ用意しました。

image.png

このファイルを2つとも開いてみましょう。

image.png

Excelファイルが開かれました。
ここでタスクマネージャを確認してみます。

image.png

Excelが増えてますね。
今回は2つのファイルを開いていますが、アプリケーションとしてはMicrosoft Excelという1つの大きなカテゴリで括られています。

ここでブック1とブック2の関係性を見ていきたいので、ブック1で条件付き書式を開いてみます。

image.png

条件付き書式の設定ダイアログはモーダルなので、ダイアログを閉じない限り本体のブック1は操作できません。
この状態でブック2を操作しようとしたらどうなるでしょう?
実は操作できないんです。
(キャプチャじゃ伝えようがないので割愛。よかったらご自身のPCで試してみてください。)

タスクマネージャも見てみましょうか。

image.png

直感的にはブック1の下にダイアログが従属していそうですが、ブック1・ブック2と同じ階層にいますね。
条件付き書式のターゲットは間違いなくブック1なんですけど、モーダルの影響範囲でいうとブック1、ブック2の両方が含まれるみたいです。

では、現状の状態はこのままにして今度はExcelを新しく管理者として実行してみましょうか。
image.png

image.png

新しく管理者権限の新規ブックが立ち上がりました。
ブック1でモーダルダイアログを開いているので新しく起動したファイルも操作できなさそうな気がしますが…

image.png

操作できるんですね。

タスクマネージャを見てみます。

image.png

ブック1・ブック2とは別でExcelのアプリが増えていますね…

更に細かい情報が見たいので詳細タブを見てみましょう。

image.png

プロセスごとに割り振られたID(PID)を確認できるのですが、ここに違う値が設定されているのがわかりますね。

つまり今回の場合、一般ユーザ権限で開いたブック1とブック2は同じプロセスになっており、管理者権限で開いた新しいブックは別のプロセスになっているということです。

image.png

結果を踏まえて

上記からプロセスの位置づけについてなんとなくご理解いただけたのではないかと思います。

もう少しだけ深堀にお付き合いください。

プロセスはOSにより管理されています。なのでプロセスを立ち上げる指令を出すのもOSです。
OSは新規プロセスを起動する際にプロセスが作業を行うためのメモリを確保してあげます。

現実に例えると
 メモリ → 勉強机
 プロセス→ 参考書
といったところでしょうか。

image.png
(3Dモデルの上にイラスト置くと違和感凄い…)

参考書を使って勉強するためには、勉強机に参考書を置けるだけのスペースを確保してあげる必要がありますよね。
その際にどれくらいのスペースを確保する必要があるのかというのは参考書によって異なりますし、勉強机の広さも環境によって異なります。

1つの勉強机に対して同じ参考書を複数開いて置いておくこともできますが、その場合は2冊分のスペース確保が必要になります。
そんなことをしていたらすぐに勉強机がいっぱいになってしまって他の参考書を置くことができなくなってしまうので、用途も同じ参考書に関しては同じところに重ねて置くことでスペースを削減しているわけです。

現実だと同じ参考書を綺麗に重ねてあげればスペースはきれいに1冊分で済むかもしれませんが、プロセスの場合そうはいかないのでOSにお願いをしてちょっと多めにメモリを確保してもらうことで極力メモリ領域を圧迫しないようにしています。

プロセスとは(定義の再確認)

ここで冒頭にてお伝えしたプロセスの定義を再確認しますが、プログラムの実行単位となっていましたよね。
Excelの場合、親玉となるプログラムはProgramFiles内に配置されているEXCEL.EXEです。
image.png

Excelのブックを開くとまずこのEXCEL.EXEが実行されます。
するとOSがEXECL.EXEを動作させるために必要なメモリを確保しに行きます。
image.png

この状態で別ブックを開いてみると操作直後だけ新しいプロセスが立ち上がりますが、既存プロセスと統合できると判断された場合は新規プロセスを開放しています。
image.png
こういった経緯を経てブック1とブック2は同一プロセスとなり、メモリ空間を共有することで冗長なメモリを削減したわけです。
逆に管理者権限の場合に別プロセスなのは、あえてメモリ空間を共有したくないからです。
同じプロセスにすると一般ユーザ権限ではアクセスしちゃいけない資材を触れちゃったりするのがアウトなので、その辺の定義諸々の設定なんかを独立することで排他する目的があるんだと思います。

メモリ空間を共有することによる弊害はそれだけではありません。
プロセスの定義がプログラムの実行単位となっている通り実行プログラム自体も共有している状態ですから、ブックが1つでもフリーズすると同じプロセス内のブックも全てフリーズしますし、エラー落ちしたら全ブックがお亡くなりになるわけです。
別プロセスで起動されているものに関してはこのような場合でも影響を受けないので、状況・用途に応じて適切な管理が求められます。
なのでEdgeなどのブラウザ系はタブごとにプロセスを独立させることで、どれか1つがクラッシュしても他のタブが影響を受けないような作りになっていることが多いです。

まとめ

今回はプロセスについてまとめてみました。
自分はプログラマなのですが、こういった基礎の概念が自分のソースコードにも多大な影響を及ぼすんですよね…
この記事を機に改めて再認識できてよかったと思います。
最後までご覧いただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?