Linuxシステムにおけるプロセス管理の詳細な説明

Linuxシステムにおけるプロセス管理の詳細な説明

1. プロセスとスレッドの概念

出典: Baidu 百科事典:

プロセスとは、コンピュータ内のプログラムが特定のデータ セットに対して行う操作です。システム内のリソース割り当てとスケジュールの基本単位であり、オペレーティング システム構造の基礎となります。 現代のスレッド指向のコンピュータ アーキテクチャでは、プロセスはスレッドのコンテナーです。プログラムは、命令、データ、およびそれらの構成形式の記述であり、プロセスはプログラムの実体です。これは、特定のデータ セットに対するコンピューターのプログラムの操作です。システムのリソース割り当てとスケジュールの基本単位であり、オペレーティング システム構造の基礎です。プログラムは、命令、データ、およびそれらの構成形式の記述であり、プロセスはプログラムの実体です。

スレッドは、オペレーティング システムが操作をスケジュールできる最小単位です。これはプロセス内に含まれており、プロセスの実際の操作単位です。スレッドとは、プロセス内の単一の連続した制御フローを指します。プロセス内で複数のスレッドを同時に実行することができ、各スレッドは異なるタスクを並行して実行します。

2. プロセス管理とは何ですか?

プロセスとは正確には何でしょうか?

プロセスとは、実行中のプログラムまたはコマンドです。各プロセスは実行中のエンティティであり、独自のアドレス空間を持ち、特定のシステム リソースを占有します。

ではプログラムとは何でしょうか?
プログラムとは、特定の目標を達成したり、特定の問題を解決したりするために、人間がコンピューター言語を使用して記述したコードの集合です。

別の言い方をしましょう:

プログラムとは、特定の機能を実現できる、人間がコンピューター言語で記述した実行可能コードの集合です。プロセスとは現在実行中のプログラムです。プログラムが実行されると、実行者の権限と属性、およびプログラム コードがメモリにロードされます。オペレーティング システムはプロセスに ID 番号を割り当てます。これを PID (プロセス ID) と呼びます。

3. プロセス管理の役割

サーバーの健全性状態を判断する: 運用保守エンジニアの主な仕事は、サーバーの安全で安定した動作を確保することです。理想的な状況は、サーバー上で問題が発生した場合、サーバーがクラッシュしたりサービスが停止したりする前に、人間の介入によって問題を解決できることです。プロセス管理の主なタスクは、サーバーが現在正常に動作しているかどうか、および人間の介入が必要かどうかを判断することです。サーバーの CPU 使用率とメモリ使用量が高すぎる場合、問題を解決するには人による介入が必要になります。

システム内のすべてのプロセスを表示する: システム内で実行中のすべてのプロセスを表示する必要があります。これらのプロセスを通じて、システム内でどのサービスが実行されているか、また不正なサービスが実行されているかどうかを確認できます。

プロセスの強制終了: これは、プロセス管理で最も一般的に使用されない方法です。サービスを停止する必要がある場合は、コマンドを適切にシャットダウンして停止します (たとえば、 apacheサービスは、 service httpd stopでシャットダウンできます)。プロセスを終了する正しい方法が失敗した場合にのみ、 killコマンドを使用してプロセスを終了させることを検討します (あなたはキラーではないので、kill を使用してすべてのプロセスを終了しないでください。そうしないと、サーバーが簡単にクラッシュします)

4. Linuxプロセスのさまざまな状態

D : 復帰できないスリープ状態。通常はI/O状況で使用されます。

R : プロセスは実行中です。

S : プロセスはスリープ モードにあり、起動できます。

T : 停止状態。バックグラウンドで一時停止されているか、プロセスがデバッグ状態にある可能性があります。

W : メモリ相互作用状態 (2.6 カーネル以降では無効)。

X : デッドプロセス(表示されないはずです)。

Z : ゾンビプロセス。プロセスは終了しましたが、その一部はまだメモリ内に残っています。

< : 優先度が高い (次のステータスは BSD 形式で表示されます)。

N : 優先度が低い。

L : メモリにロックされました。

s : サブプロセスを含めます。

l : マルチスレッド(小文字の L)。

+ : バックグラウンドで。

5. プロセスとスレッドの関係

(1)スレッドとプロセスの関係

たとえば、コンピューターは同時に 200 個のプロセスを実行しています。

スレッドとプロセスの概念: 各プロセスには少なくとも 1 つのスレッドが含まれており、これらのスレッドはプロセスのリソース空間を共有しています。スレッドが変更されると、CPU 実行プロセスのみが変更され、プロセスが所有するリソースは変更されません。同様に、プログラムには少なくとも 1 つのプロセスが含まれます。プロセス内で操作を実行するための最小単位であり、プロセッサ スケジューリングを実行するための基本単位でもあります。各プロセスには、独自のアドレス空間と、メモリ、I/O、CPU などのリソースがあります。同じプロセス内のスレッドは、プロセスのアドレス空間を共有します。では、他のプロセスのアドレス空間を使用できるのでしょうか。もちろん、これは許可されていません。プロセスは独立しているため、プロセスがクラッシュしても、保護モードの他のプロセスには影響しません。システムにおけるリソース割り当ての基本単位、操作スケジュールの基本単位、同時実行の単位。

同じプロセス内の 2 つのスケジューリングを比較すると、スレッドの切り替えによってプロセスの切り替えは発生しません。
あるプロセスのスレッドが別のスレッドのプロセスに切り替わると、プロセス切り替えが発生します。同時実行プロセスは同時に実行でき、プロセス内のスレッドも同時に実行できます。所有されているリソース 一般的に、スレッドは独自のリソースを所有しませんが、独自のプロセス内のリソースにアクセスできます。たとえば、プロセスによって開かれたファイルは、プロセス内の他のスレッドによって共有される可能性があります。

(2)まとめ

簡単にまとめてみましょう:

プロセス: システムで実行されているアプリケーションを指します。プログラムが実行されると、プロセスになります。プロセスは、リソース割り当ての最小単位です。スレッド: システムによってプロセッサ時間リソースを割り当てるための基本単位、またはプロセス内で独立して実行される単位実行フロー。スレッドは、プログラム実行の最小単位です。

Linux システムにおけるプロセス管理の詳細な説明に関するこの記事はこれで終わりです。Linux プロセス管理に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御
  • Linuxの運用と保守の基本プロセス管理と環境構成分析
  • Linux プロセス管理ツール スーパーバイザーのインストールと設定のチュートリアル

<<:  単一選択折りたたみメニュー機能を実現するCSS

>>:  実務経験7年のフロントエンドスーパーバイザーによる経験共有

推薦する

Ubuntu 16.04 に nvidia ドライバー + CUDA + cuDNN をインストールする詳細なチュートリアル

準備1. GPUがCUDAをサポートしているかどうかを確認するlspci | grep -i nvi...

Windows での Tomcat サーバーのインストールに関するチュートリアル

1 ダウンロードして準備するまず、公式ウェブサイトからTomcatをダウンロードする必要があります。...

ハッシュテーブルのJavaScript実装の詳細な説明

目次1. ハッシュテーブルの原理2. ハッシュテーブルの概念3. ハッシュ競合問題1. チェーンアド...

MySQL 5.6 のインストール手順(画像とテキスト付き)

MySQL はオープンソースの小規模リレーショナル データベース管理システムです。現在、MySQL...

Mysql を 5.7 にアップグレードした後のグループ クエリの問題を解決する

問題を見つける最近MySQLをMySQL 5.7にアップグレードした後、次のようなクエリでグループ化...

iostat を使用して Linux ハードディスクの IO パフォーマンスを表示する方法

TOP 観察: IO 待機に占められる CPU 時間の割合。30% を超えると、IO の負荷が高くな...

Dockerをクリーンアンインストールする方法の詳細な説明

まず、サーバー環境情報: アンインストールの理由:しばらくするとホストマシンのディスクが100%にな...

Docker デプロイメント Springboot プロジェクト例の分析

この記事は主に、docker デプロイメント springboot プロジェクトのサンプル分析を紹介...

JavaScript を学ぶときに知っておくべき 3 つのヒント

目次1. 魔法の拡張演算子1. 配列をコピーする2. 配列を結合する3. オブジェクトを展開する2....

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...

Vueフロントエンドの効率的な開発のためのレンダリング手順をリストします

v-for ディレクティブリストといえば、ループについても触れなければなりません。v-for 命令は...

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...

Ubuntu 14 に Nginx-RTMP ストリーミング サーバーをインストールするチュートリアル

1. RTMP RTMP ストリーミング プロトコルは、Adobe が開発したリアルタイムのオーディ...

Vue2とVue3の兄弟コンポーネント通信バスの違いと使い方

目次vue2.x vue3.x tiny-emitterプラグインの使用Mittプラグインの使用vu...