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年のフロントエンドスーパーバイザーによる経験共有

推薦する

HTML マルチメディア アプリケーション: Web ページにフラッシュ アニメーションと音楽を挿入する

1. HTML_falshアニメーションでのマルチメディアの応用(WebページへのFlashアニメー...

Javascript Bootstrapのグリッドシステム、ナビゲーションバー、カルーセルの詳細な説明

目次ブートストラップと関連コンテンツの紹介グリッドシステムネストされた列列オフセット列の並べ替えナビ...

JavaScript関数の詳細な説明これを指す問題

目次1.関数内のこの方向1. 通常の機能2. コンストラクター3. オブジェクトメソッド4. イベン...

HTML で入力プロンプトのテキスト スタイルを変更するためのサンプル コード

多くのウェブサイトでは、入力ボックスにヒントテキストが表示されています。入力ボックスにヒントテキスト...

Vueはドラッグアンドドロップまたはクリックで写真をアップロードする機能を実装しています

この記事では、ドラッグアンドドロップやクリックによる画像のアップロードを実現するためのVueの具体的...

nginx を使用してブルーグリーン デプロイメントをシミュレートする方法

この記事では、ブルーグリーン デプロイメントと、nginx を使用してブルーグリーン デプロイメント...

MySQLのインストールと設定に関する詳細なチュートリアル

目次インストール不要のMySQLバージョン1. インストール パッケージをダウンロードします。 2....

MySQL 最適化 query_cache_limit パラメータの説明

クエリキャッシュ制限query_cache_limit は、単一のクエリで使用できるバッファ サイズ...

Vue+Springbootでインターフェースシグネチャを実装するためのサンプルコード

1. 実装のアイデアインターフェース署名の目的は、リクエストパラメータが改ざんされていないか、リクエ...

Vue で配列パラメータを渡すための get / delete メソッド

フロントエンドとバックエンドがやり取りする場合、get または delete を介してバックエンドに...

Web デザインの経験: 独善的な Web デザイナー

1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 1)

中国の習慣では、旧暦の1月15日より前に新年を祝います。ここで、庭にいる友人たちに新年の幸せを祈りた...

ドロップダウンメニューを実現するためのHTML+CSS

1. ドロップダウンリストの例コードは次のとおりです。 <!doctypehtml> ...

Angularコンポーネントの仲介モードの詳細な説明

目次1. 仲介業者モデル2. 例1. 見積コンポーネントに購入ボタンを追加する2. 親コンポーネント...

MySQLマスタースレーブデータベース構築方法の詳細な説明

この記事では、MySQL マスター/スレーブ データベースの構築方法について説明します。ご参考までに...