• Aucun résultat trouvé

Le système GNU/Linux IUP NTIC /11/05

N/A
N/A
Protected

Academic year: 2022

Partager "Le système GNU/Linux IUP NTIC /11/05"

Copied!
7
0
0

Texte intégral

(1)

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.

(2)

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

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 de mémoire 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 nommés.

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

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 mê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.

(3)

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 système 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èmeUtilisateur

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 Dé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.

(4)

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

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

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é.

(5)

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.

(6)

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

Les processus

Les traitements différés La commande at

La commande at planifie l'exécution d'une commande en différé.

L'accès à cette commande est contrôlé par deux fichiers:

/var/adm/cron/at.allow (AIX) ou /etc/ar.allow (Linux): contient la liste des noms d'utilisateurs autorisés à se servir de la commande. Si ce fichier n''existe pas, seul l'utilisateur root peut l'utiliser.

/var/adm/cron/at.deny (AIX) ou /etc/at.deny (Linux): contient la liste de noms de utilisateurs qui ne sont pas autorisé à se servir de la commande at.

Le format de la date peut être AAMMJJhhmm (AIX) ou hh: mm JJ/MM/AA.

la date du 10 mars 2004 à 22h sous AIX

$ at -t 0403102200

find /tmp -nouser -print 2 > /dev/null ˆD

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

Les processus

Les traitements différés La commande crontab

Planifie les tâches répétitives de l'utilisateur qui la saisie.

Utilisé par le root pour lancer automatiquement:

le nettoyage de fichiers de /tmp toutes la nuits,

la recherche des fichiers ou des répertoire « orphelins » une foi par semaine ou par moi,

le redémarrage du serveur tous les soirs....

Deux fichier de configuration: cron.allow et cron.deny Deux options principales:

-l: Affiche le fichier de planification de l'utilisateur -e: Sous Linux, édite le fichier de planification en mode pleine page.

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 démons

Ce sont des processus particuliers qui sont toujours actifs.

Leur non possède souvent le suffixe « d » (pour daemon).

Le rôle d'un démon est de gérer les services proposés par le serveur, qu'il s'agisse de démons système, comme la planification des tâches (cron), ou réseau, comme telnetd.

L'activation des démons peut se faire:

au démarrage de la machine (fichier /etc/inittab), à la demande.

Lorsque le démons est lancé à la demande il est pris en charge par le « superdémon », inetd.

Les démons sont des processus que l'on peut administrer comme les autres avec la commande kill.

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

Chapitre 5: Noyau Linux et Gestion des Processus

Résumé

Le noyau Linux est:

Multi-utilisateurs et multi-tâches.

Conforme à la norme POSIX et est distribué sous Licence GPL.

Il permet:

Le démarrage du système et la gestion des processus.

La communication inter-processus et l'interaction avec le matériel.

La gestion de plusieurs FS (VFS).

Les processus correspondent aux logiciels actifs.

Chaque processus (avec un numéro unique PID) est autonome, possède un processus père (avec un numéro PPID).

L'activité du serveur est représenté par une hiérarchie de processus pères et de processus fils dont le premier est init.

Les signaux permettent la communication entre processus et sont des événements non prévu dans le traitement normal du logiciel.

Les démons sont des processus actif en permanence et rendent des service intern (planification de tâches) ou externes (services réseaux).

Les démons sont lancés soit au démarrage

(fichiers /etc/inittab, /etc/rc, ...) soit à la demande quand il sont pris en charge par le « superdémon » inetd.

(7)

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

Chapitre 5: Noyau Linux et Gestion des Processus

Questions de révision

1.Quelle est la commande qui permet de connaître la version d'un noyau?

2.Qu'est ce que le PID et le PPID d'un processus ? 3.Quel est le rôle des signaux ?

4.Quel est le nom du signal qui arrête un processus interactif ? 5.Comment faire pour exécuter une commande en arrière-plan ? 6.Quelle est la différence entre la commande ps -f et la commande ps -ef ? 7.Quelle commande permet de tuer un processus particulier, et quelle

commande permet de tuer les processus attachés à un répertoire ? 8.Une valeur positive pour la commande de nice augmente-t-elle

la priorité du processus ?

9.Quelle est la différence entre la commande nohup et at ? 10.Quelle est la commande qui permet de planifier des

traitements différés ? Quel est le nom du démon qui gère le déclenchement de ces traitements ?

11.Comment se nomment les deux fichiers qui donnent accès à la commande at ?

Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05

Chapitre 5: Noyau Linux et Gestion des Processus

Bibliographie et Webographie

UNIX & LINUX, Jean-Michel Léry, Pearson Education.

Références

Documents relatifs

• Round Robin (tourniquet) : lorsqu'une tâche sous ordonnancement « Round Robin » est activée, on lui accorde un délai au bout duquel elle sera préemptée pour laisser passer

Dans la mesure où le code exposé dans le Listing 1 utilise la fonction malloc() pour allouer une mémoire tampon, puis retourne un pointeur vers cette dernière,

 Arborescence de processus avec un rapport père - fils entre processus créateur et processus crée. Processus pid 15 Processus

On va lancer la commande sleep en arrière plan, puis on va la visualiser afin de la repasser en premier plan puis la remettre en arrière plan... Exemple : Ci dessous, on voit

CON 01 GERER LES ACQUISITIONS DE SOLUTIONS CON 02 GERER LE DEVELOPPEMENT DE SOLUTIONS CON 03 GERER LE CATALOGUE DE SERVICES CON 04 GERER LES NIVEAUX DE SERVICE CON 05 GERER

Une fois le serveur en place, il faut créer les bases de données distribuées par le service NIS.. Ces bases étant stockées dans le répertoire /var/yp/ , c'est à partir de

Administration Unix /Linux Créer un serveur Samba de salle de cours page 3/39 LoiselJP ©2010..

● C'est un des rôles du système d'exploitation d'amener en mémoire centrale l'image mé- moire d'un processus avant de l'élire et de lui allouer le processeur. Le système