Systme dexploitation et programmation systme Cours EISTI 20082009

  • Slides: 27
Download presentation
Système d'exploitation et programmation système Cours EISTI 2008/2009 Département informatique

Système d'exploitation et programmation système Cours EISTI 2008/2009 Département informatique

LINUX Linux et Système de fichiers n Processus et multiprocessing n Communication entre processus

LINUX Linux et Système de fichiers n Processus et multiprocessing n Communication entre processus n – Tubes de communication • Anonyme • Nommé – Signaux – IPCs System V • Files de messages • Mémoire partagée • Sémaphore n Multithreading

Le système de fichiers n Sous UNIX : tout est fichier. n L'arborescence est

Le système de fichiers n Sous UNIX : tout est fichier. n L'arborescence est unique (montage) n Chaque "fichier" est référencé par un i-nœud (index node) dans une table ou sont stockés tous ses attributs (type, propriétaire, droits. . . ). n La racine ( / ) possède l'i-nœud 2. n Types : c (caractère), b (bloc) , - (fichier régulier), d (répertoire i. e. directory)…

Informations remarquables d'un i-nœud n n n n n Identification du disque logique Numéro

Informations remarquables d'un i-nœud n n n n n Identification du disque logique Numéro de nœud Droits Nombre de liens physiques Groupe Propriétaire Taille Date du dernier accès Date de dernière modification du fichier Date de dernière modification du nœud

Droits sur les fichiers n UNIX distingue les droits pour le propriétaire (user u)

Droits sur les fichiers n UNIX distingue les droits pour le propriétaire (user u) le groupe (g) et les autres (o others). n Les droits sont lecture (r), écriture (w) et exécution (x). n Le set-uid et set-gid permettent de modifier les droits lors de l'exécution.

Processus

Processus

Processus n Un programme produit par compilation et édition de lien est un objet

Processus n Un programme produit par compilation et édition de lien est un objet inerte correspondant au contenu d’un fichier sur disque de nom par défaut a. out n Un processus est un objet dynamique correspondant à l’exécution des instruction d’un programme n Le processus est l’entité d’exécution dans le système linux n Dans le système linux, il existe deux types de processus : – Processus système • swapper • crons • getty – Processus utilisateur qui correspondant à l’éxécution : • d’une commande • d’une application

Arborescence des processus dans linux Processus init swaper cron Processus système ………. exec getty

Arborescence des processus dans linux Processus init swaper cron Processus système ………. exec getty login shell emacs netscape ……. shell Processus utilisateur la commande shell : pstree : affiche l’arborescence des processus ps [option] : (Processus Status) donne la liste des processus actifs selon certains critères

Processus n Lors de l’initialisation du système linux, un premier processus, nommé init est

Processus n Lors de l’initialisation du système linux, un premier processus, nommé init est créé avec un PID = 1 n Chaque processus est identifié par un numéro unique (PID) n La commande ps donne la liste des procesus n La création d’un processus se fait par duplication n Un processus peut demander au système sa duplication en utilisant la primitive fork() n On appelle le processus créateur le processus père. Le processus créé est appelé processus fils n Le système crée une copie exacte du processus original avec un PID différent n Le numéro du processus père est noté PPID n Le processus fils peut executer un nouveau code à l’aide des primitives EXEC

Execution d’une commande par un shell n Le shell se duplique (fork); on donc

Execution d’une commande par un shell n Le shell se duplique (fork); on donc 2 processus shell identiques n Le père se met en attente de la fin du fils (wait) n Le shell fils remplace son exécutable par selui de la commande compress n La commande compress s’exécute et compacte le fichier toto ; lorsqu’elle termine, le processus fils disparait n Le père est alors réactivé, et affiche le prompt suivant Processus en cours d’exécution fork() Processus père wait() synchronisation Processus fils exit()

Exécution d’une commande par un shell Lecture de la commande suivante (par défaut, sur

Exécution d’une commande par un shell Lecture de la commande suivante (par défaut, sur clavier) Analyse de la syntaxe Ecrire un message sur la console erreu r commande interne de l’interpréteur Exécuter la routine correspondant à la commande interne fork Attendre la fin du fils Création d’un processus fils EXEC Signaler la fin du processus

Espace d’adressage d’un processus n Tout processus linux a un espace d’adressage constitué de

Espace d’adressage d’un processus n Tout processus linux a un espace d’adressage constitué de 3 segments : Code Données Pile d’exécution n § Le code correspond aux instructions, en langage d’assemblage, du programme à exécuter. § La zone de données contient les variables globales ou statiques du programme ainsi que les allocations dynamiques de mémoire. § Enfin, les appels de fonctions, avec leurs paramètres et leurs variables locales, viennent s’empiler sur la pile. Contexte d’un processus – Le contenu de son espace d’adressage – Le contenu des registres matériels – Le compteur ordinal – Les variables – Les structure de données du noyaux qui ont un rapport avec le processus

Vie d'un processus n Appel système fork par le père. Le processus père continue

Vie d'un processus n Appel système fork par le père. Le processus père continue son exécution en arrière plan. – Appel système exec par le processus fils. – Déroulement du programme. – Fin du programme, envoi du code retour. n Récupération du processus fils à l'état zombie par le processus père. n Si le processus père à fini son exécution avant le processus fils, le processus fils à l’état zombi est "rattaché" au processus originel. Son PPID est alors le PID de init. n Tous processus linux qui se termine possede une valeur retour appelé code de retour (exit status) à laquelle le père peut accéder

Processus n Un processus n’a qu’un seul père, mais peut lancer plusieurs processus fils

Processus n Un processus n’a qu’un seul père, mais peut lancer plusieurs processus fils n On a donc une arborescence de processus n L'ensemble des processus sont stockés dans une table accessible par le pseudo-système /proc. n Le rôle d’un système d’exploitation est de permettre à tous les processus d’avancer. n Le module du noyau appelé ordonnanceur (scheduler) est chargé d’allouer le(s) processeur(s)aux différents processus selon une certaine stratégie

Etats des processus n Le processus peut être dans un certain nombre d’états connus

Etats des processus n Le processus peut être dans un certain nombre d’états connus : c’est un automate. n L'ordonnanceur gère l'allocation du temps CPU aux processus. nouveau terminé ordonnancement admission sortie 3 Processus possède toutes les ressources Sauf l’UC Prêt (éligible) Fin d’E/S normale ou faute d’E/S En cours Processus possède 2 d'exécution (elu) toutes les ressources interruption 1 4 Bloqué Attente d’un événement extérieur appel système bloquant (E/S)

Caractéristiques d'un processus n PID n PPID (PID du père) n Etat (O/S/R/Z/T) n

Caractéristiques d'un processus n PID n PPID (PID du père) n Etat (O/S/R/Z/T) n n n le masque de création de fichier(umask) n la taille maximale des fichiers que ce processus peut créer, appelée ulimit n Priorité Un état des registres n Zone de code executable Répertoire courant et Var. Env n Pile d'exécution Zone de données manipulées n Un propriétaire (UID) et son groupe (GID) n Repertoire courant n Un terminal d’attachement n Table descripteurs n Le temps UC consommé (fichiers ouverts) n

Caractéristiques d'un processus n Tout processus possède à sa création 3 descripteurs de fichiers:

Caractéristiques d'un processus n Tout processus possède à sa création 3 descripteurs de fichiers: – 0 : stdin (entrée standard) – 1 : stdout (sortie standard) – 2 : stderr (sortie erreur) Flux en sortie entrée standard stdin 0 1 2 Sortie standard stdout Sortie d’erreur standard stderr n Par défaut ces trois descripteurs sont reliés au terminal correspondant à la session

Redirection n Redirection de l’entrée standard - commande < nom_de_fichier n Redirection de la

Redirection n Redirection de l’entrée standard - commande < nom_de_fichier n Redirection de la sortie standard - commande > nom_de_fichier - commande >> nom_de_fichier (redirection sans écrasement) n Redirection de la sortie en erreur standard - commande 2> nom_de_fichier (en Bourne Shell) - commande >& nom_de_fichier (en c-shell)

Les tables du système • Un descripteur est alloué par Linux lors de l'ouverture

Les tables du système • Un descripteur est alloué par Linux lors de l'ouverture d'un fichier et est désalloué à sa fermeture • Un processus qui agit sur un fichier doit fournir ce descripteur à chaque opération de lecture-écriture. • File system conserve sur le disque une table descripteurs de fichiers (Ces descripteurs appelés i-nœuds) • Le descripteur de chaque processus (structure task_struct) pointera sur une table des fichiers ouverts par ce processus tables descripteurs PID 1 table des fichiers ouverts 2 1 2 table des i-nœuds en mémoire 2 2 PID 2 1 1 2 PID 3 Propre à chaque processus 0 ensemble de caches systèmes pour les entrées/sorties en mode bloc

Communication inter processus Les signaux

Communication inter processus Les signaux

Définition n Un signal est une information atomique envoyée à un processus ou à

Définition n Un signal est une information atomique envoyée à un processus ou à un groupe de processus par le système d’exploitation ou par un autre processus n Lorsqu’un processus reçoit un signal, le systeme d’exploitation l’informe: “Tu as reçu un signal” sans plus n Un signal ne transporte aucune autre information utile n Le processus pourra alors mettre en oeuvre une réponse décidée et pré-définie à l'avance (handler)

Définition (suite I) n Les signaux sont un mécanisme asynchrone de communication interprocessus n

Définition (suite I) n Les signaux sont un mécanisme asynchrone de communication interprocessus n Il est assimilable à une sonnerie indiquant des évenements différents pouvant donner lieu à une réaction n Chaque signal correspond à un événement spécifique Rappel : – Intruption matérielle (IRQ) traitement synchrone (modalité) – Intéruption logicielle traitement asynchrone

Définition (suite II) Ce mécanisme est implanté par un moniteur, qui scrute en permanence

Définition (suite II) Ce mécanisme est implanté par un moniteur, qui scrute en permanence l'occurrence des signaux. C'est par ce mécanisme que le système communique avec les processus utilisateurs : n provenance interne en cas d'erreur du processus – violation mémoire – erreur d'E/S – segmentation fault (core dumped) n à la demande de l'utilisateur lui-même via le clavier. . . , n lorsque vous tapez la commande kill, n ou encore pour la déconnection de la ligne/terminal provenance externe)

La commande shell kill Pour envoyer un signal à un processus, on utilise la

La commande shell kill Pour envoyer un signal à un processus, on utilise la commande appelée kill. Celle-ci prend en option le numéro du signal à envoyer et en argument le numéro du (ou des) processus destinataire(s). n Exemple 1 : $> kill 36 : par défaut le signal 15 (SIGTERM) est envoyé au processus de pid 36. n Exemple 2 : $> kill 0 : Envoie le signal 15 à tous les processus fils, petits-fils. . . tous ceux lancés depuis ce terminal. n Exemple 3 : $> kill -9 36 : Envoie le signal de numéro 9 (SIGKILL) au processus de pid 36. n Exemple 4 : $> kill -s SIGKILL 36 : Envoie le signal SIGKILL au processus de pid 36

Quelques signaux En fait il existe 64 signaux différents numérotés à partir de 1,

Quelques signaux En fait il existe 64 signaux différents numérotés à partir de 1, dont plus de la moitié pour le temps-réel. Ces signaux portent également des noms « normalisés » n On les trouve : – dans "/usr/include/signal. h" ou – en tapant la commande shell : $ kill -l n SIGHUP (1) il est envoyé lorsque la connexion physique de la ligne est interrompue ou en cas de terminaison du processus leader de la session ( « CTRL D » interruption clavier) ; n SIGINT (2) frappe du caractère intr ( « CTRL C » interruption clavier) sur le clavier du terminal de contrôle ; n SIGQUIT (3) frappe du caractère quit ( « CTRL » interruption clavier avec sauvegarde de l'image mémoire dans le fichier de nom core) sur le clavier du terminal de contrôle ;

Quelques signaux (suite I) n SIGKILL (9) signal de terminaison (non déroutable). n SIGILL

Quelques signaux (suite I) n SIGKILL (9) signal de terminaison (non déroutable). n SIGILL (4) Instruction illégale. n SIGFPE (8) Erreur arithmétique. n SIGUSR 1 (10) Signal 1 défini par l'utilisateur. n SIGSEGV (11) Adressage mémoire invalide. n SIGUSR 2 (12) Signal 2 défini par l'utilisateur. n SIGPIPE (13) Écriture sur un tube sans lecteur. n SIGALRM (14) Permet de gérer un timer(Alarme) n SIGTERM (15) signal de terminaison, il est envoyé à tous les processus actifs par le programme shutdown, qui permet d'arrêter proprement un système UNIX. Terminaison normale. d'état de l'un des ses fils

FIN

FIN