Maison >Opération et maintenance >exploitation et maintenance Linux >Que signifie le processus sous Linux ?

Que signifie le processus sous Linux ?

青灯夜游
青灯夜游original
2021-11-30 16:19:144665parcourir

Un processus est une instance d'un programme exécuté sous Linux et constitue l'unité de base pour la gestion des transactions ; un processus possède son propre environnement de traitement indépendant et ses propres ressources système. L'état d'un processus change, y compris sa création, sa planification et sa mort.

Que signifie le processus sous Linux ?

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Un processus est une instance d'un programme exécuté sous Linux.

Dans le système Linux, le système d'exploitation effectue les tâches une par une via des processus. Le processus est l'unité de base de la gestion des transactions. Le processus possède son propre environnement de traitement indépendant (par exemple : quelles variables d'environnement sont actuellement nécessaires, où se trouve le répertoire dans lequel le programme est en cours d'exécution, quel utilisateur exécute actuellement le programme, etc.) et des ressources système (telles que : l'occupation du processeur par le processeur). , mémoire, périphériques d'E/S, données, programmes).

Lorsque vous exécutez un programme dans un système Linux, le système crée un environnement spécifique pour le programme. Cet environnement contient tout ce dont le système a besoin pour exécuter le programme.

Chaque fois que vous exécutez une commande sous Linux, elle créera ou démarrera un nouveau processus. Par exemple, lorsque vous essayez d'exécuter la commande "ls -l" pour lister le contenu d'un répertoire, vous démarrez un processus. Si deux fenêtres de terminal sont affichées à l'écran, vous avez peut-être exécuté deux fois le même programme de terminal et il y aura deux processus de terminal.

Chaque fenêtre de terminal peut exécuter un Shell, et chaque Shell en cours d'exécution est un processus. Lorsque vous appelez une commande depuis le Shell, le programme correspondant sera exécuté dans un nouveau processus. Lorsque l'exécution du processus du programme est terminée, le processus du Shell reprendra son exécution.

Le système d'exploitation suit les processus via un code numérique appelé PID ou ID de processus. Chaque processus du système possède un PID unique.

Maintenant, nous utilisons un exemple pour comprendre le processus sous Linux. Nous exécutons la commande suivante sur la ligne de commande du Shell :

$ sleep 10 &
[1] 3324

Comme le programme attendra 10 secondes, nous recherchons rapidement tout processus nommé sleep sur le Shell actuel :

$ ps -ef | grep sleep
mozhiyan  3324  5712  cons1  17:11:46  /usr/bin/sleep

Nous voyons que le processus nommé /usr/bin/sleep est en cours d'exécution sur le système (avec le même PID que nous avons obtenu dans la commande précédente).

Maintenant, nous essayons d'exécuter la commande sleep ci-dessus à partir de 3 fenêtres de terminal différentes en parallèle, le résultat de la commande ci-dessus sera similaire à ce qui suit :

$ ps -ef | grep sleep
mozhiyan  896   5712  cons1  17:16:51  /usr/bin/sleep
mozhiyan  5924  5712  cons1  17:16:52  /usr/bin/sleep
mozhiyan  2424  5712  cons1  17:16:50  /usr/bin/sleep

Nous voyons que chaque instance du programme sleep crée un processus distinct.

Chaque processus Linux a un autre numéro d'identification, qui est l'ID du processus parent (ppid). Chaque processus utilisateur du système a un processus parent.

La commande "ps -f" listera le PID et le PPID du processus. Le résultat de cette commande est similaire au suivant :

$ ps -f
   UID     PID   PPID    TTY       STIME      COMMAND
mozhiyan  4124   228    cons0    21:37:09   /usr/bin/ps
mozhiyan   228   1      cons0    21:32:23   /usr/bin/bash

Les commandes que vous exécutez à l'invite de ligne de commande Shell ont le processus Shell actuel comme processus parent. Par exemple, si vous entrez la commande ls à l'invite de ligne de commande du Shell, le Shell exécutera la commande ls. À ce moment, le noyau Linux copiera la page mémoire du Shell, puis exécutera la commande ls.

Sous Unix, chaque processus est créé à l'aide des méthodes fork et exec. Cependant, cette approche entraîne une perte de ressources système.

Sous Linux, la méthode fork est implémentée à l'aide de pages mémoire de copie sur écriture, elle provoque donc uniquement la perte de temps et de mémoire nécessaire pour copier la table des pages mémoire du processus parent et crée une tâche unique pour le processus enfant. structure.

Le mode copie sur écriture évite de créer des copies de structure inutiles lors de la création d'un nouveau processus. Par exemple, si l'utilisateur exécute la commande ls à l'invite de ligne de commande Shell, le noyau Linux créera un processus enfant Shell, c'est-à-dire que le processus Shell est le processus parent et le processus de commande ls est le processus enfant. Le processus de commande pointera vers ceci. La même page mémoire que le Shell, puis le processus enfant utilise la technologie de copie sur écriture pour exécuter la commande ls.

Statut du processus

Chaque processus Linux a son propre cycle de vie, tel que la création, l'exécution, l'arrêt et le nettoyage. Chaque processus possède également son propre statut, qui indique ce qui se passe actuellement dans le processus. L'état d'un processus change, y compris sa création, sa planification et sa mort.

Le processus peut avoir les états suivants :

  • D (état de veille ininterrompue) - le processus est en veille et ne peut pas être repris jusqu'à ce qu'un événement se produise.

  • R (Running Status) - Le processus est en cours d'exécution.

  • S (état de veille) - le processus n'est pas en cours d'exécution, mais attend un événement ou un signal.

  • T (état d'arrêt) - Le processus est arrêté par un signal, tel que le signal SIGINT ou SIGSTOP.

  • Z (État zombie) - Les processus marqués 21eba13340b1d3a525d7480ca5bbd370 sont des processus zombies et restent car leur processus parent les a détruits de manière appropriée. Si le processus parent se termine, ces processus seront détruits par le processus d'initialisation.

Pour afficher l'état du processus spécifié, vous pouvez utiliser la commande suivante :

ps -C processName -o pid=,cmd,stat

Par exemple :

$ ps -C sleep -o pid=,cmd,stat
      CMD       STAT
9434 sleep 20    S

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn