Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxプロセス優先のNIとPRの違いは何ですか?

Linuxプロセス優先のNIとPRの違いは何ですか?

  

なぜプロセス優先権があるのでしょうか。

マルチタスクオペレーティングシステム
が誕生したので、結局のところ、cpuを処理するプロセスの能力は人為的に制御しなければならない問題です。いくつかのプロセスは比較的重要であり、いくつかのプロセスはそれほど重要ではないからです。プロセス優先順位がどのように機能するかは、本発明以来それほど変わっていないが、それがただ1つのCPU時代であろうとマルチコアCPU時代であろうと、それはプロセスによって占められるCPU時間の長さを制御することによって達成される。

これは、同じスケジューリングサイクル内で、優先順位の高いプロセスほど時間がかかり、優先順位の低いプロセスほど時間がかかることを意味します。

システム内でこれら2つの概念を混同しないでください。nice(NI)とpriority(PR)は密接に関連していますが、現在のLinuxシステムでは、同じ概念ではありません。

このコマンドを見てください。


PRI列とNI列の具体的な意味の違いを本当に理解していますか。

トップコマンドの場合も同様です。


PRとNIの違いはわかりますか。そうでなければ、それではまず最初に、良い値が何かを把握することができます。

NICEの値は何ですか?

NICE値は、Linux /UNIXに精通している人にとっては馴染みのある概念であるはずで、プロセスの「優先順位」の状況を反映する値で、-20から19まで、合計40の範囲です。レベル

値が小さいほど、プロセスの優先順位が高くなり、優先順位が低くなります。

たとえば、NICEコマンドを使用して、bashコマンドのNICE値を実行するように設定できます。
[root @ zorrozou-pc0 zorro]#nice -n 10 bash

このようにして再びbashを開きます。そのnice値は10に設定されています。デフォルトでは、プロセスの優先順位は親プロセスから継承されます。通常、この値は0です。

niceコマンドで現在のシェルのnice値を直接見ることができます。
[root @ zorrozou-pc0 zorro]#nice 10

通常の状況を比較します。
[root] @ zorrozou-pc0 zorro]#exit

現在のnice値10でbashを終了し、通常のbashを開いて、そのNice値を確認します。
[root @ zorrozou-pc0 zorro]#bash < Br> [root @ zorrozou-pc0 zorro]#nice 0

さらに、reniceコマンドを使用して、実行中のプロセスのnice値を調整したり、top、psなどのコマンドを使用してプロセスを表示することもできます。良い値は、私は特定の方法についての詳細は言わないでしょう、あなたは関連するmanページを参照することができます。

誰もが注意を払う必要があるのは、優先順位ではなく、ここではnice値という名前を使用しているということです。

niceの値は優先順位ではありませんが、プロセスの優先順位に影響します。

英語で、私たちがいい人について説明すれば、それは一般的にその人の人気が高いことを意味します。どんな人がいいの?多くの場合、謙虚で丁寧です。

たとえば、素敵な人と一緒に昼食をとる場合は、2つの同一の食事を注文し、食事が終わると、「最初に食べる、最初に食べる」と表示されます。 ! '、これは良い関係です、この人はいいね!しかし、もう一人が遅れると、そのいい人は空腹になります。

これはどういう意味ですか?

ニコールの資源を掌握する能力が高ければ高いほど、より多くの人々を掌握できなくなります。これはniceの値の意味で、niceの値が低いほど、プロセスが少ないほど、CPUをつかむ能力が強くなり、優先度が高くなります(作者の説明はイメージが多すぎる、Xiaobianは手動でしか賞賛できません!) !

O1スケジューリングを使用しているLinuxでは、nice値を設定した後、reniceを使用しない限り、nice値のnice値と基本的に一致するnice値の静的優先度も呼び出します。変更してください。そうでなければ変更されません。

優先順位の値は、カーネルの以前のO1スケジューラで変更されるため、動的優先順位とも呼ばれます。

優先事項とリアルタイムプロセスは何ですか?

psコマンドで表示されるPRIの値、またはtopコマンドで表示されるPRの値である優先順位の値を見てみましょう。

これらの概念を区別するために、次のことを行ってください。

nieの値、つまり静的優先度、すなわちniceおよびreniceコマンドで調整された優先度を表すためにnieの値を使用します。

ユーティリティ優先度の値は、PRIとPRの値、または動的優先度を示します。

また、「優先順位」という単語の概念を優先順位の値の意味として統一しています。

カーネルでは、プロセス優先順位の値は、名前がMAX_PRIOで値が140のマクロによって定義されます。

この値は、さらに2つの追加値で構成されます。1つはnice値の値範囲を表すNICE_WIDTHマクロ、もう1つはリアルタイムプロセスのリアルタイム優先順位範囲を表すMAX_RT_PRIOマクロです。

簡単に言えば、Linuxは実際には0から139までの範囲の140の優先順位範囲を実装しています値が小さいほど、優先順位は高くなります。実際の優先順位の範囲にマップされた-20から19のナイス値は100から139です。

新しく生成されたプロセスのデフォルトの優先順位は次のように定義されています。
#define DEFAULT_PRIO(MAX_RT_PRIO + NICE_WIDTH /2)

実際の対応する値はnice値に対して0です。

通常のプロセスでは、niceおよびreniceコマンドを使用してプロセスの優先順位を調整しても、どのプロセスの優先順位もこの値になります。その値の範囲は100から139の範囲を超えることはありません。プロセスがリアルタイムプロセスでない限り、その優先順位の値は0から99の範囲の1つになります。

現在のLinuxはすでにリアルタイムプロセスをサポートしているオペレーティングシステムであるというメッセージがここにあります。

リアルタイムオペレーティングシステムとは何ですか?

このことの意味やその産業分野での応用については詳しく説明しませんので、興味があればウィキペディアのリアルタイムオペレーティングシステムを参照してください。

一言で言えば、リアルタイムオペレーティングシステムは、関連するリアルタイムプロセスが長い遅延なしに短時間で応答し、最小限の割り込みレイテンシとプロセス切り替えレイテンシを必要とすることを保証する必要があります。

このような要求に対しては、O1かCFSかにかかわらず、一般的なプロセススケジューリングアルゴリズムを満たすことができないため、カーネルは設計時に100の優先順位をリアルタイムプロセスにマッピングします。通常のプロセスの優先順位(ナイス値)よりも高くなるように、そしてリアルタイムプロセスのスケジューリングアルゴリズムが異なるために、彼らはスケジューリングオーバーヘッドを減らすためにより簡単なスケジューリングアルゴリズムを使用します。

一般に、Linuxシステムで実行されているプロセスは2つのカテゴリに分けられます。

  • リアルタイムプロセス
  • 非リアルタイムプロセス

    主な違いは優先順位による違いです。

    0から99までの範囲内のすべての優先順位の値はリアルタイムプロセスです。したがって、この優先順位の範囲はリアルタイムプロセスの優先順位とも呼ばれ、非リアルタイムプロセスは100から139の範囲です。

    chrtコマンドをシステムで使用して、プロセスのリアルタイム優先順位ステータスを表示および設定できます。最初にchrtコマンドの使い方を見てみましょう。


    表示されている「ポリシーオプション」セクションに最初に注意を払うと、システムはさまざまなプロセスに対して5つのスケジューリング戦略を提供することがわかります。

    ただし、ここでは5つのスケジューリング戦略がそれぞれ2つのプロセスに使用されているとは述べていませんリアルタイムプロセスに使用できるスケジューリング戦略は、SCHED_FIFO、SCHED_RR、および非リアルタイムプロセスです。 SCHED_OTHER、SCHED_OTHER、SCHED_IDLE。

    システムの全体的な優先順位は、次のとおりです。

  • 実行する必要があるリアルタイムプロセスがシステム内にある場合は、リアルタイムプロセスが最初に実行されます。
  • リアルタイムプロセスが終了または積極的に終了するまで非リアルタイムプロセスは、CPUが稼働しているときに実行されるようにスケジュールされています。

    リアルタイムプロセスでは、1から99までの優先順位を指定できますリアルタイムで実行されるプログラムを実行する方法は、次のとおりです。
    [root @ zorrozou-pc0 zorro]#chrt 10 Bash
    [root @ zorrozou-pc0 zorro]#chrt -p $$
    pid 14840の現在のスケジューリング方針:SCHED_RR
    pid 14840の現在のスケジューリング優先順位:10zh-CN"],null,[1],zh-TW"]]]

  • Copyright © Windowsの知識 All Rights Reserved