Priorité concept-processus de processus Linux, variables d'environnement

1. Priorité des processus Linux

1.1 Trois questions consécutives sur la priorité du processus?

<1> Quelle est la priorité du processus? (Autorisation Priorité VS)

Tout d'abord, nous comprenons deux concepts, qu'est-ce que la priorité et qu'est-ce que l'autorité?

Dans la vraie vie, la priorité se réfère à l'ordre de certaines «choses» utilisées , mais la permission est, cela signifie que nous ne pouvons pas utiliser une sorte de «choses»

Par exemple, pour la cafétéria de l'école, quiconque arrive tôt peut servir les repas en premier. Dans certaines écoles, les enseignants peuvent donner la priorité aux repas sans faire la queue, de sorte que les enseignants ont la priorité d'utiliser la cafétéria, et même certaines écoles ont des professeurs et du personnel. Restaurant , ce restaurant permet uniquement aux professeurs et au personnel de manger et non aux étudiants, de sorte que les enseignants ont l'autorité sur la salle à manger des professeurs et du personnel, les étudiants n'ont pas cette autorité.

Pour le système d'exploitation, la priorité de processus fait référence à l'ordre d'allocation des ressources du processeur et les autorisations sont généralement incorporées dans des opérations telles que l'ouverture, la création et la suppression d'un fichier, ou l'appel d'une certaine fonction système, ressource, etc.

<2> Pourquoi y a-t-il une priorité?

Si le système n'a qu'un seul processeur et qu'un seul processus est en cours d'exécution, il n'y a pas besoin de priorité et le processus monopolise les ressources. Mais pour les ordinateurs modernes, ils sont multitâches et multi-processus, ce qui reflète grandement la valeur de la priorité, et les processus doivent être gérés.

  • Les processus hautement prioritaires ont des droits d'exécution prioritaires. La configuration de la priorité des processus est très utile pour Linux dans un environnement multitâche et peut améliorer les performances du système.
  • Les processus peuvent également être exécutés sur une CPU désignée. De cette manière, organiser des processus sans importance sur une certaine CPU peut considérablement améliorer les performances globales du système.

<3> Comment utiliser la priorité?

La priorité du processus détermine quel processus préfère utiliser une certaine ressource (telle que la CPU, les E / S périphériques, etc.).

1.2 Afficher et modifier la priorité des processus Linux

<1> Afficher le processus système

Dans le système Linux, nous utilisons des ps -lcommandes pour afficher les informations de processus système, les informations sont les suivantes:
Insérez la description de l'image ici

<2> La différence et la connexion entre PRI et NI

PRI est également relativement facile à comprendre, c'est-à-dire la priorité du processus, ou en termes simples, l'ordre dans lequel le programme est exécuté par la CPU.Plus la valeur est petite , plus la priorité du processus est élevée .

NI représente la valeur de correction de la priorité à laquelle le processus peut être exécuté . La plage de valeurs de nice va de -20 à 19 , avec un total de 40 niveaux.
Plus la valeur PRI est petite, plus elle sera exécutée rapidement. Après avoir ajouté la valeur nice, le PRI deviendra: PRI (nouveau) = PRI (ancien) + nice PRI (nouveau) = PRI (ancien) + niceP R I ( n e w )=P R I ( o l d )+Lorsque n i c e
est une valeur négative, alors le programme aura une valeur de priorité plus petite, c'est-à-dire que sa priorité deviendra plus élevée, plus il sera exécuté rapidement.

Différence :

  • Il convient de souligner que la belle valeur du processus n'est pas la priorité du processus, ce n'est pas un concept, mais la belle valeur du processus affectera le changement de priorité du processus.
  • On comprend que la valeur agréable correspond aux données de correction de la priorité du processus

<3> Commande pour modifier la priorité d'un processus

Insérez la description de l'image ici
Insérez la description de l'image ici

Deux, variables d'environnement

2.1 Concepts de base

  • Les variables d'environnement font généralement référence à certains paramètres utilisés dans le système d'exploitation pour spécifier l'environnement d'exploitation du système d'exploitation

Par exemple, lorsque nous écrivons du code C / C ++, nous ne savons jamais où se trouvent nos bibliothèques dynamiques et statiques liées lorsque nous lions, mais nous pouvons toujours créer des liens et générer des programmes exécutables car il existe des variables d'environnement associées pour aider à la compilation. Finder pour trouver .

  • Les variables d'environnement ont généralement des objectifs spéciaux et ont généralement des caractéristiques globales dans le système.

2.2 Affichage et organisation des variables d'environnement

<1> Variables d'environnement communes

  • CHEMIN : Spécifiez le chemin de recherche de la commande
  • HOME : spécifiez le répertoire de travail personnel de l'utilisateur (c'est-à-dire le répertoire par défaut lorsque l'utilisateur se connecte au système Linux)
  • SHELL : Le Shell actuel, sa valeur est généralement / bin / bash.

<2> Afficher la méthode de la variable d'environnement

Format: echo $NAMENAME est le nom de votre variable d'environnement
Insérez la description de l'image ici

<3> test PATH

Supposons que nous ayons le programme suivant

#include<iostream>
using namespace std;

int main()
{
    
    
  cout<<"hello world"<<endl;
  return 0;
}

Après avoir compilé et exécuté le programme, nous trouverons les problèmes suivants:
Insérez la description de l'image ici
Comment pouvons-nous faire exécuter le programme 02-PathTest? À ce stade, la variable d'environnement PATH joue un rôle important, car la variable d'environnement PATH fournit le chemin de recherche de diverses commandes, il suffit d'ajouter notre propre chemin de programme à la variable d'environnement PATH.

export PATH=$PATH:程序路径

Insérez la description de l'image ici
Nous pouvons également copier le programme dans le pool de commandes LINUX
Insérez la description de l'image ici

<4> Commandes liées aux variables d'environnement

  1. echo: affiche la valeur d'une variable d'environnement
  2. export: définir une nouvelle variable d'environnement
  3. env: affiche toutes les variables d'environnement
  4. unset: effacer les variables d'environnement
  5. set: affiche les variables shell et les variables d'environnement définies localement

2.3 L'organisation des variables d'environnement

Chaque programme recevra une table d'environnement. La table d'environnement est un tableau de pointeurs de caractères . Chaque pointeur pointe vers une chaîne d'environnement se terminant par «\ 0».
Insérez la description de l'image ici

<1> Obtenir les variables d'environnement via le code

Avant d'utiliser cette méthode, comprenons d'abord les trois paramètres de la fonction main en c / c ++

  • int argc stocke le nombre de paramètres de ligne de commande
  • char * argv [] est un tableau de pointeurs de chaîne, chaque élément est un pointeur de caractère, pointant vers une chaîne, c'est -à-dire chaque paramètre de la ligne de commande .
  • char * env [] est également un tableau de pointeurs vers des chaînes. Chaque élément de ce tableau est un pointeur de caractère vers une variable d'environnement .
#include<iostream>
using namespace std;

int main(int argc, char* argv[], char* env[])
{
    
    
  int i = 0;
  for(;i<argc;++i)
  {
    
    
    cout<<"argv["<<i<<"]:"<<argv[i]<<endl;
  }
  
  cout<<"---------------------------------"<<endl;

  for(i =0;env[i];++i)
  {
    
    
    cout<<"env["<<i<<"]:"<<env[i]<<endl;
  }
  return 0;
}

Résultat
Insérez la description de l'image ici
Obtention des variables d'environnement en appelant les fonctions de bibliothèque fournies par le système

#include<stdlib.h>
#include<iostream>
using namespace std;

int main(int argc, char* argv[], char* env[])
{
    
    
  cout<< getenv("PWD") <<endl;
  return 0;
}

Insérez la description de l'image ici

<2> Les variables d'environnement ont généralement des attributs globaux

Exécutez le code suivant, vous constaterez que le système n'imprimera pas la variable MYENV

#include<stdlib.h>
#include<iostream>
using namespace std;

int main(int argc, char* argv[], char* env[])
{
    
    
  cout<< getenv("MYENV") <<endl;
  return 0;
}

Ensuite, nous définissons la variable d'environnement, puis nous l'exécutons. L'
Insérez la description de l'image ici
opération ci-dessus montre que les variables d'environnement sont généralement globales et peuvent être héritées par les processus enfants.

Je suppose que tu aimes

Origine blog.csdn.net/qq_40076022/article/details/114522018
conseillé
Classement