III. Gestion des processus
Les priorités des processus créent un phénomène appelé "ordonnancement " lié à la gestion de la mémoire.
Le temps de processeur total disponible est divisé en petites plages : le quantum. Un processus ne peut rester dans le processeur que le temps d'un quantum.
a. Les informations liées aux processus
PID :nombre identifiant un processus. Utilisé pour l'administration du processus par le noyau.
lors de la commande fork il y a attribution d'un PID
lors de la commande exec on garde le même PID.
PPID :identité du processus père (créateur).
UID, EUID, SUID : identifiant(s) du (des) propriétaire(s).
UID :UID réel (UID du créateur c'est à dire du processus père).
EUID :UID effectif.
SUID :UID sauvegarde.
GID, EGID, SGID : identifiant(s) du groupe.
GID :GID réel (GID du créateur c'est à dire du processus père).
EGID :GID effectif.
SGID :GID sauvegarde.
tty : terminal d'attachement.
pri :priorité
s :état du processus (endormi, en attente, en exécution, etc.)
stime :date de lancement du processus
time :temps écoulé d'utilisation d'unité centrale
size :taille de la mémoire allouée.
UID, EUID, SUID sont hérités du père au moment du fork (UID=EUID=SUID). Au cours d'un exec, si le fichier est en Set UID, l'EUID du processus devient celui du fichier.
Exemple à propos de EUID et de EGID :
Soit un utilisateur (UID=501 et GID=100) qui lance la commande passwd (commande qui permet de changer le mot de passe). Cette information étant stockée dans le fichier /etc/passwd, l'utilisateur lambda ne peut donc pas la modifier. En théorie du moins.
En pratique, il se voit affecté temporairement (par le biais de Set UID et de Set GID) des valeurs 0 en EUID (valeur correspondant au root) et 2 en EGID. Il peut donc changer son mot de passe.
Autre exemple :
/usr/bin/ps Set UID=1
gauss% ps UID=root
UID
EUID
SUID
Avant l'exec
linf13
linf13
linf13
Après l'exec
linf13
root
root
Deux cas où les UID, EUID, SUID peuvent changer :
appel système.
pendant l'exec.
Commande pour lister les processus : ps.
ps : affichage de quelques processus.
ps -e : affichage de tous les processus.
ps -f et ps -l : affichage d'informations, assez complete.
ps -u user: affichage des processus de user (EUID).
ps -U user: affichage des processus de user (UID).
b. Commandes liées aux processus
Zone u
Texte
Données
Tas
…
Pile
= Informations sur le processus
= Instructions
fork :
allocation d'une entrée dans la table de processus.
duplication de la zone u.
portage du code et des données.
copy on write (lorsqu'une modification intervient, il y a copie du processus).
exec :
on libère tout sauf l'entrée dans la table des processus et la zone u.
allocation des zones texte, données, pile et tas pour le programme chargé.
exit :
on libère tout sauf l'entrée dans la table des processus (processus en état zombie).
exit (n) retourne un code de sortie (n) qui pourra être récupéré par le père.
wait :
attente de terminaison du fils, s'il n'est pas encore terminé.
récupération des informations sur la terminaison du fils (code de sortie).
disparition définitive du fils.
c. Table de descripteurs (de fichiers)
Fichiers ouverts :
Remarque :
Deux processus peuvent partager le même pointeur de fichier.