[Linux] Befehlszeilenparameter und Prozesspriorität

[Linux] Befehlszeilenparameter und Prozesspriorität

Befehlszeilenparameter

Das Konzept der Befehlszeilenparameter

Befehlszeilenparameter beziehen sich auf Parameter, die beim Ausführen eines Programms in der Befehlszeile eingegeben werden.

Befehlsfunktionsparameter empfangen

Die Hauptfunktion in der C-Sprache verfügt über zwei Parameter zum Empfangen von Befehlszeilenparametern, nämlich argc und argv. Auch wenn die Parameter der Hauptfunktion nicht explizit angegeben werden, fügt der Compiler die Parameter während der Kompilierung automatisch hinzu und empfängt sie, dies ist jedoch nicht der Fall explizit angegeben. Parameter kann nicht verwendet werden:

int main(int argc, char *argv[]);

Wenn Sie das Programm ausführen, müssen Sie Parameter in der Befehlszeile eingeben. Die Parameter sind im Wesentlichen eine Zeichenfolge. Sie werden durch Leerzeichen getrennt, bevor sie an die Hauptfunktion übergeben werden, und dann separat übergeben. Der argc-Parameter zeichnet die Anzahl der übergebenen Parameter auf und der argv-Parameter zeichnet die Adresse jedes Parameters auf:

Bild-20230825134110559

Codeüberprüfung schreiben

Schreiben Sie den folgenden Code, um zu überprüfen, ob die Hauptfunktion Befehlszeilenparameter akzeptiert:

#include <stdio.h>

int main(int argc, char *argv[])
{
    
    
  int i = 0;
  for (i = 0; i < argc; i++)
  {
    
    
      printf("argv[%d]->%s\n", i, argv[i]);
  }
  return 0;
}

Test nach erfolgreicher Kompilierung:

Bild-20230825134818559

Ergänzung: Gerade weil die Hauptfunktion Befehlszeilenparameter empfangen kann, wird die Funktion des Hinzufügens von Optionen bei Verwendung von Linux-Anweisungen realisiert.

Prozesspriorität

Das Konzept der Prozesspriorität

Die Priorität eines Prozesses bezieht sich auf die Reihenfolge, in der CPU-Ressourcen zugewiesen werden. Prozesse mit höherer Priorität haben vorrangige Ausführungsrechte.

Der Grund für die Entstehung der Prozesspriorität: Es gibt viele Systemprozesse, aber nur eine geringe Menge an CPU-Ressourcen oder sogar eine, sodass ein Wettbewerb zwischen den Prozessen besteht. Um Aufgaben effizient zu erledigen und vernünftiger um zugehörige Ressourcen zu konkurrieren, wird Priorität eingeräumt.

PRI und NI

Geben Sie die Parameter ein, um den Systemprozess unter dem Linux-System anzuzeigen ps -l:

Bild-20230825140845597

Unter den vielen Daten sind PRI und NI die beiden prioritätsbezogenen Parameter.

  • PRI: stellt die Priorität dar, mit der dieser Prozess ausgeführt werden kann. Je kleiner der Wert, desto früher wird er ausgeführt.

  • NI: stellt den netten Wert dieses Prozesses dar, der den geänderten Wert der Priorität darstellt, mit der der Prozess ausgeführt werden kann.

PRI = anfänglicher Prioritätswert + netter Wert.

Der Bereich des netten Werts liegt bei [-20,19). Wenn die Priorität eines bestimmten Prozesses zu hoch oder zu niedrig ist, kann dies dazu führen, dass andere Prozesse nicht geplant werden können oder er selbst nicht geplant werden kann, daher hat der nette Wert einen Reichweite.

Verwenden Sie den Befehl top, um den netten Wert zu ändern

Schreiben Sie den folgenden Code, um die nette Wertänderung zu testen:

#include <stdio.h>
#include <unistd.h>

int main()
{
    
    
  while(1)
  {
    
    
    printf(".");
    fflush(stdout);
    sleep(1);
  }
  return 0;
}

Nach erfolgreicher Kompilierung ausführen, zwei zusätzliche Terminals öffnen, topden Befehl in eines und ps -alden Befehl in das andere eingeben:

Bild-20230825143626926

Drücken Sie im oberen Prozess r:

Bild-20230825143651375

Geben Sie im oberen Prozess die Prozess-ID ein, die in „nice“ geändert werden soll:

Bild-20230825143732282

Geben Sie den netten Wert ein, der geändert werden soll:

Bild-20230825143825468

Verwenden Sie ps -alden Befehl, um Folgendes anzuzeigen:

Bild-20230825143853689

Da der Anfangswert 80 und der nette Wert 10 beträgt, beträgt der endgültige PRI 90.

Ich denke du magst

Origin blog.csdn.net/csdn_myhome/article/details/132509755
Empfohlen
Rangfolge