Dockerの勉強を進めるにあたって、Docker Engineの仕組みを理解するには、プロセスの概念を理解する必要がありましたので、プロセスの詳細について調べてみました。
コンテナは、コンテナの作成、起動、削除を管理するDocker Daemonと同じく、ホストOS上でプロセスとしての存在になります。ホストOS上のプロセスということで、他のホストOS上で単独実行アプリケーションと同様に、CPU、メモリ、ネットワークなどのリソースをホストOS経由でアクセスできますし、また、プロセスが終了すると、メモリに保持されているコンテナ上の操作データも一緒に消えるが当然なことがよく理解できました。
■プロセスとは
プロセスとは、HDDなどに格納されているバイナリーコードをOSのスケジューラーにより、メモリにロードされ、CPUを実行可能な状態となる、OS上でのCPUなどのリソース実行管理単位のこと。
■プロセスとスレッドの違いについて
1プログラム⇒1プロセス
1プロセスに複数のスレッドを動かすことが出来る(シングルスレッドとマルチスレッドがある)
スレッドがプロセス内の命令を実行する
1スレッドが1CPUコア使用する
1CPUに複数のCPUコアを含むことが出来る。
メモリー空間はプロセス単位で割り当てられる
スレッドが属するプロセスのメモリ空間を共有する
■シングルプロセスとマルチプロセスの違い
シングルプロセス:
スレッド①:料理開始⇒ご飯を炊く⇒カレーを煮込む⇒お皿に盛る⇒料理終了
マルチプロセス:
スレッド①:料理開始⇒プロセス②を起動⇒ご飯を炊く⇒プロセス②完了を待つ⇒料理終了
スレッド②:カレーを炊く