Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Le système GNU/Linux
IUP NTIC2-1013 - 17/11/05
Capocchi Laurent
Doctorant en Informatique
capocchi@univ-corse.fr
http://spe.univ-corse.fr/capocchiweb
Chapitre 5
Noyau Linux
et Gestion des Processus
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Objectifs
Comprendre les notions de noyau Linux et des modules.
Comprendre la notion de processus et de signaux.
Apprendre à gérer le multitâche.
Éléments techniques abordés
Les commandes
ps, kill, nice, renice, fuser, nohup
fg, bg, jobs
Les fichiers
/etc/cron.allow, /etc/cron.deny
/var/adm/cron/cron.allow, /var/dm/cron/cron.deny
Les répertoires
/var/spool/at, /var/spool/cron
/var/spool/cron/atjobs, /var/spool/cron/crontabs
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Sommaire
Le noyau Linux
Principe.
Fonctionnement du noyau.
Utilisation des modules.
Les processus
Principe.
La hiérarchie des processus.
La communication interprocessus: les signaux.
Gestion des processus interactifs, avant et arrière plan.
Gestion des processus.
Les traitements différés.
Les démons.
Questions de révision
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Principe
Le noyau est la couche de base d'un système d'exploitation et il gère:
la mémoire,
l'accès aux périphériques (disque dur, carte son, carte réseau, etc...),
la circulation des données sur le bus,
les droits d'accès,
les multiples processus qui correspondent aux multiples tâches que
l'ordinateur doit exécuter en même temps, etc...
Le noyau ne gère pas:
le mail,
l'affichage des pages Web,
le traitement du texte.
Le noyau a l'originalité d'être multi-utilisateurs et multi-tâches et de
fonctionner sur de nombreuses plates-formes (Intel, Apple, etc...).
Il est conforme à la norme POSIX et est distribué sous Licence GPL.
Il appartient au monde du libre lui garantit une correction
rapide des erreurs qui pourraient être découvertes.
La commande permettant de connaître la version d'un noyau
est uname -a.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Principe
Le noyau Linux permet le contrôle à bas niveau du matériel ainsi que cinq
fonctions essentielles:
Le démarrage du système;
la gestion des processus: le noyau permet le contrôle de tous les
processus du système et s'assure que chacun d'entre eux dispose d'une
partie raisonnable demoire et de cycles processeurs;
la communication inter-processus (IPC, Inter Process Communication):
le noyau contrôle la communication entre les processus en utilisant un
système de mémoire partagée, de tubes (pipes) et de tubes noms.
Toute cette gestion est conforme au standard POSIX.
l'interaction avec le matériel: le noyau fournit aux processus un accès
aux périphériques matériels. Il dispose d'instructions générales pour des
périphériques standards (disque dur par exemple) et permet également
l'utilisation de pilotes spécifiques.
le système de fichiers virtuel (VFS, Virtual FileSystem):
Linux dispose d'une interface spéciale du noyau appelée VFS
qui lui permet de supporter plusieurs systèmes de fichiers.
Cette interface permet de traiter les systèmes de fichiers
de manière unifiée, et apparaît donc comme un pilote de
périphérique, mais pour les systèmes de fichiers.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Principe
Une distribution Linux est un ensemble cohérent de plusieurs choses:
un noyau Linux,
des programmes, en majorité libres (un navigateur Web, un lecteur de
Mail, un serveur FTP, etc...),
une méthode pour installer et désinstaller facilement ces programmes,
un programme d'installation du système d'exploitation.
Abus de langage en désignant par le terme Linux qui est en fait une
distribution Linux.
La plupart des distributions sont gratuites, car constituées exclusivement de
logiciels libres ou de programmes propriétaires gratuits.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Fonctionnement
Le noyau Linux est dit monolithique et uniforme.
Un noyau monolithique fonctionne comme un seul grand noyau et non
pas à l'aide de composants distincts.
Un noyau est uniforme quand chaque fonction est exécutée de la me
manière à chaque fois qu'elle est lancée.
Le noyau est cependant très modulaire et conserve toutes ses fonctions
dans la même adresse mémoire, les fonctions communiquant alors grâce à
cette adresse.
Pour garantir la stabilité du système, il place chacun des pilotes chargés
dans une "bulle" virtuelle de sorte que les erreurs ne puissent pas se
propager.
Toutes les fonctions du noyau sont localisées dans des éléments
de code modulaires qui peuvent être soit intégrés au noyau
compilé, soit compilés séparément en tant que modules.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Utilisation des modules
Qu'est-ce qu'un module ?
Techniquement, les modules sont des morceaux de noyau qui peuvent être
insérés ou enlevés sans redémarrer l'ordinateur.
En pratique, un module est un pilote d'un périphérique ou d'une
fonctionnalité.
La commande permettant de lister l'ensemble des modules chargés est lsmod.
Les commandes permettant de charger er de décharger les modules sont
repsectivement rmmod (modprobe -r) et insmod (modprobe -i).
le fichier /etc/modules permet de spécifier quels modules doivent
être chargés au démarrage.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Principe
un processus (ou tâche) est un logiciel autonome en cours d'exécution.
Le sysme UNIX identifie chaque processus grâce à un numéraux unique,
son PID (Process IDentification).
Chaque processus possède un propriétaire référencé par un UID.
Chaque processus à un processus père référencé par un numéro PPID
(Parent Process Identification).
L'ensemble des processus forment une hiérarchie de processus pères et
de processus fils.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
La hiérarchie des processus
init
syslog nfsd inetd
popper telnetd telnetd imapd
bash ksh
1
2501 2910 1352
14214
21238 22107 10323
92123 92504
Système
Utilisateur
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
La communication interprocessus: les signaux
La communication entre les processus passe par des signaux qu'ils
s'échangent.
Un signal permet de contrôler le déroulement d'un processus.
On fait correspondre un numéro à chaque signal.
Un signal peut avoir un numéro différent selon le système
d'exploitation (SIGTSTP porte le numéro 20 sous Linux et le numéro
18 sous AIX).
La commande trap permet d'activer ou de désactiver le programme
associé au signal.
Nom du signal Numéro Interprétation
SIGHUP 1 connexion du terminal
SIGINT 2 Interruption depuis le clavier (CTRL+C)
SIGKILL 9 Signal « KILL »
SIGBUS 10,7 Erreur de bus
SIGSYS 12 Appel système avec mauvais arguments
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
La communication interprocessus: les signaux
$ trap '' 2
associe la commande « vide » au signal SIGINT (2), de
qui inhibe la combinaison de touches CTRL+C.
Certains signaux comme SIGKILL ne peuvent pas être
inhibés, ce qui assure que l'on pourra toujours tuer
un processus.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion des processus interactifs, avant et arrière-plan
Le fonctionnement normal du shell oblige l'utilisateur à attendre que
le processus lancé en avant-plan soit terminer pour pouvoir en
exécuter un autre au niveau d'une fenêtre de terminal.
Le lancement de la tâche en arrière-plan permet de ne pas bloquer
la ligne de commande.
Le nombre de processus en arrière-plan n'est pas limité alors qu'il
ne peut y avoir qu'un seul processus en avant-plan.
Le lancement d'une ligne de commandes en arrière plan utilise le
signe & à la fin de la ligne.
La commande fg (pour foreground) permet de faire passer une
tâche s'exécutant en arrière plan vers le l'avant.
La commande bg permet l'opération inverse.
Pour faire passer en arrière plan une tâche lancée
en avant-plan, il faut tout d'abord la suspendre sans
l'arrêter, avec la combinaison CTRL+Z (signal SIGTSTP)
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion des processus interactifs, avant et arrière-plan
exemple: recherche de tous les fichiers et répertoires orphelins.
$ find / -nouser -print > /tmp/liste.nouser
ˆZ
[1]+ Stopped find / -nosuer -print > /tmp/liste.nouser
$ bg
[1]+ find / -nosuer -print > /tmp/liste.nouser &
jobs
[1]+ Running find / -nosuer -print > /tmp/liste.nouser
&
fg
find / -nosuer -print > /tmp/liste.nouser
ˆC
$
Les commandes fg et bg peuvent être saisies avec,
en argument, le numéro du processus à gérer.
$ fg %2
si le numéro 2 correspond à la numérotation fourni par jobs.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion des processus
Les commandes
ps Affiche les informations sur les processus.
kill Envoie un signal à un ou plusieurs processus.
fuser Gère les processus attaché à un répertoire.
nice et renice Ces deux commandes changent les priorités.
nohup Lance un processus qui ne sera pas « tué » à la
déconnexion.
crontab Définit la liste des tâches différées à exécuter
régulièrement.
at Permet d'exécuter une commande en différée.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Affichage des processus: la commande ps
$ ps
PID TTY TIME CMD
8465 pts/1 00:00:00 bash
8512 pts/1 00:00:00 ps
PID: numéro du processus
TTY: numéro de ligne de communication associé au processus
TIME: temps d'exécution du processus
CMD: commande associée au processus
Les options de la commande ps permettent d'afficher:
-l: les informations complètes (UID, PPID....)
-a: les processus des autres utilisateurs
-e: la liste de tous les processus, sauf ceux du noyau
-u: les informations de l'utilisateur spécifié.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Envoi de signaux: la commande kill
Ce signal tue les processus.
$ kill -option -num_signal pid1 pid2 ....
Si aucun numéro de signal n'est précisé, c'est SIGTERM (15) qui
est envoyé.
Les PID des processus sont obtenues avec la commande ps.
kill -l équivaut à trap -l
$ kill -kill 0 tue tous les processus de la session actuelle et
déconnecte l'utilisateur qui la saisie.
$ kill -kill 1 tue tous les processus appartenant à
l'utilisateur qui saisit cette commande.
$ jobs
[1]- stopped sleep 5
[2]+stopped sleep 10
$ kill %2
[2]+ Terminated sleep 10
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Gestion des processus attachés aux répertoires: la commande fuser
Par défaut, cette commande affiche les numéros de processus
(PID) qui utilisent les fichiers ou les systèmes de fichiers indiqué
en argument.
Les options sont très différentes selon les systèmes UNIX.
Un suffixe apparaît à la suite du numéro du processus indiquant le
type d'accès du processus:
c Accès au répertoire courant
e Accès à un programme en cours d'exécution
r Accès au répertoire racine
m ou s Accès à un fichier en mémoire ou à une bilbio. partagée.
La commande fuser avec l'option -k arrête tous les processus:
# fuser -k /home/durant
/home/durant: 343420023c 11212230c 23232323c
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Gestion des priorités: les commandes nice et renice:
La commande nice lance l'exécution d'une commande avec une
priorité plus faible ou plus forte.
Plus la valeur passé en argument est élevée, plus le processus
sera moins prioritaire.
Chaque utilisateur peut diminuer la priorité de ces processus mais
seul root peut l'augmenter.
$ nice -incrément commande
commande est la ligne de commande à exécuter
incrément est l'ajustement de la priorité (défaut 10).
La commande ps -l permet de faire apparaître la valeur
de priorité dans une colonne notée NI.
La commande renice change la valeur de priorité d'un
processus actif.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Les traitements différés
La commande nohup
Lorsqu'un processus s'exécute, la déconnexion de la session lui
envoie un signal SIGHUP qui l'arrête.
Le commande nohup exécute la ligne de commandes passées en
argument et inhibe le signal SIGHUP.
Si l'exécution affiche des informations à l'écran, celles-ci sont
sauvegardées dans le fichier nohup.out.
$ nohup find / -print 2 > /dev/null &
[1] 234
$ ps -f | grep find
martin 234 .... pts/1 find / -print
$exit
connexion closed by foreign host
Après déconnexion l'utilisateur martin se connecte
à nouveau. Le processus lancé avec nohup est toujours
actif, il n'est rattaché à aucun terminal (colonne TTY ?),
et le processus père et init.
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !