Powered by Mathigon

Glossary

Select one of the keywords on the left…

Processus, ordonnanceur & interblocageEtats et commande ps

Reading time: ~10 min

Dans cette partie nous allons approfondir notre connaissance des états d'un processus et analyser le retour de la commande ps lancer dans un shell linux.

Comme nous l'avons vu un processus n'est pas toujours en cours d'exécution et il peut se retrouver dans la file d'exécution des processus. Nous avions donc défini deux états pret(dans la file d'exécution) et elu (en cours d'éxécution).

Regardons maintenant le programme suivant :

n = float(input("Entrer un nombre"))
print(f"Le double du nombre entré est {2*n}")

L'intrepreteur python va lancer un processus pour exécuter ce code. Une fois élu ce programme va donc être exécuter et demande à l'utilisateur de saisir un nombre. Le processus ne peut pas finir de s'exécuter tant que la saisie de l'utilisateur n'est pas terminée. Il passe dans l'état bloqué. Une fois la saisie effectuée, il repasse dans la file d'exécution, c'est à dire il prend l'état prêt.

Les états d'un processus

Les processus ont donc 3 états :

  • prêt : il se situe dans la file d'exécution des processus avec toutes les ressources nécessaires.
  • élu : il est en cours d'exécution
  • bloqué : il attent d'obtenir une ressource (imprimante, accés à un fichier, saisie utilisateur)

La commande ps

Pour connaître plus finement l'état d'un processus nous allons nous attarder sur la commande ps exécuter depuis un shell linux.

La commande ps accepte plusieurs arguments :

  • -e : (every) permet de voir tous les processus
  • -f : (full) permet de voir toutes les informations disponnibles pour les processus concernés par la commande

La commande ps -e -f ou ps -ef permet donc d'avoir toutes les informations pour tous les processus. Comme cela fait beaucoup d'information, on préferera sélectionner les informations qui nous sont utiles. La commande ps le permet grace à l'option -o.

Ainsi la commande que nous utiliserons sera : ps -eo pid,ppid,stat,comm

  • pid : l'identifiant du processus
  • ppid : l'identifiant du processus parent
  • stat : l'état du processus
  • comm : le nom de la commande (processus)

Différents retour de l'option stat

  • D : en sommeil non interruptible (normalement entrées et sorties) ;
  • R : s’exécutant ou pouvant s’exécuter (dans la file d’exécution) ;
  • S : en sommeil interruptible (en attente d’un événement pour finir) ;
  • T : arrêté, par un signal de contrôle des tâches ou parce qu’il a été tracé ;
  • W : pagination (non valable depuis le noyau 2.6.xx) ;
  • X : tué (ne devrait jamais être vu) ;
  • Z : processus zombie (), terminé mais pas détruit par son parent ;
  • < : haute priorité (non poli pour les autres utilisateurs) ;
  • N : basse priorité (poli pour les autres utilisateurs) ;
  • L : avec ses pages verrouillées en mémoire (pour temps réel et entrées et sorties personnalisées) ;
  • s : meneur de session ;
  • l : possède plusieurs processus légers ;
  • + : dans le groupe de processus au premier plan

Archie