Système d’exploitation : les processus Frédéric Guinand IUT du Havre Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Plan Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Plan 1 Généralités sur les processus 2 Lancer - Activer - Suspendre 3 Quelques commandes Commande ps 4 Enchaînement et E/S des processus Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Programmes et processus programme binaire : objet inerte nécessite un support pour son exécution → processus programme : le code binaire exécutable données : espace d’adressage du processus informations diverses qui définissent le contexte d’exécution du processus : bloc de contrôle du processus Toutes les activités sont exécutées dans le contexte d’un processus Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Ordonnancement système multi-tâches : comment gérer la ressource de calcul ? rôle de l’ordonnanceur. quelle stratégie ? tâches insécables : impossible tâches interruptibles (E/S) temps partagé (time slicing) mais : processus système + processus utilisateur ⇒ importance différente ⇒ priorité Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Processus système propriétaire : superutilisateur (superuser) processus démons : daemons rôle : services généraux pour les utilisateurs et les systèmes distants : 1 2 3 init cron inetd Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties processus système init assure l’existence d’un processus pour chaque terminal de commandes il le fait en invoquant la commande getty processus père de tous les processus shells créés par l’utilisateur Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties processus système cron assure le lancement de commandes à des dates spécifiques service utilisateur : at Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties processus système inetd c’est l’oreille du système écoute les ports d’entrée (/etc/services) correspondance numéro de port ↔ service arrivée d’une requête sur un port → création d’un processus qui exécute le service associé inetd supervise tous les services réseau qui utilisent les protocoles internet Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Quelques exemples de services service ↔ port ftp : 21 (transfert de fichiers) ssh : 22 (shell sécurisé) http : 80 (web) https : 443 (web sécurisé) pop3 : 110 (courriel) imap : 443 (courriel) irc : 194 (discussion) quake : 26000 (jeu en réseau) Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Lancement d’un programme Lors du lancement d’un programme (ligne de commande, clic de souris...) → prise en charge du programme par un processus deux possibilités : prise en charge par un processus existant création d’un nouveau processus Toutes les activités sont exécutées dans le contexte d’un processus Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Prise en charge par un processus existant substitution d’activité pour le processus concerné ⇒ la précédente activité est suspendue ouvrez un terminal de commande puis... lancer la commande xcalc que se passe-t-il dans votre fenêtre ? Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Suspendre une activité suspendez la nouvelle activité : tapez Ctrl-Z dans le terminal que se passe-t-il dans votre fenêtre ? que se passe-t-il dans la fenêtre de xcalc ? Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Réactiver une activité réactivez l’activité de xcalc : tapez fg dans le terminal que se passe-t-il dans votre fenêtre ? que se passe-t-il dans la fenêtre de xcalc ? Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Créer une activité parallèle suspendez de nouveau l’activité de xcalc puis tapez bg dans le terminal que se passe-t-il dans votre fenêtre ? que se passe-t-il dans la fenêtre de xcalc ? ⇒ vous avez créé un nouveau processus qui sert de support d’exécution pour la nouvelle activité afin d’être sûr que les deux processus fonctionnent de manière concurrente, tapez dans la fenêtre du terminal ls -laR / puis effectuez des calculs dans xcalc. le système UNIX est un système multi-tâches il existe une autre manière de le faire, il suffit de lancer la commande suivie du caractère & Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Récupérer la main sur l’activité lancez xcalc & puis tapez fg dans le terminal que se passe-t-il dans votre fenêtre ? que se passe-t-il dans la fenêtre de xcalc ? tapez Ctrl-C dans le terminal Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Cycle de vie d’un processus Actif (Running) En attente (Sleeping) Suspendu ou arrêté (Traced) En sommeil ininterruptible (Dead) Mort et inatteignable (Zombie) Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Commande ps Commande ps liste des processus enregistrés par le système caractéristiques des processus cette commande utilisée sans option et lancée depuis un terminal de commande liste l’ensemble des processus attachés à ce terminal ouvrez deux terminaux et tapez ps dans chacun d’eux Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Commande ps Caractéristiques simples [guinand@taillefer guinand]$ ps PID TTY TIME CMD 6055 pts/11 00 :00 :00 bash 6091 pts/11 00 :00 :00 ps PID : identifiant (un entier) du processus TTY : identifiant du terminal auquel chaque processus est rattaché TIME : durée d’exécution CMD : programme exécuté par le processus Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Commande ps Plus d’infos lancez la commande xcalc & depuis un terminal tapez ps -l dans ce même terminal de nombreuses caractéristiques apparaissent Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Commande ps Plus d’infos F 0 0 0 S S S R UID 500 500 500 PID 6055 6174 6183 PPID 6052 6055 6055 C 0 0 0 PRI 75 76 76 Frédéric Guinand NI 0 0 0 ADDR - SZ 793 996 553 WCHAN wait4 select - TTY pts/11 pts/11 pts/11 Système d’exploitation : les processus TIME 00 :00 :00 00 :00 :00 00 :00 :00 CMD bash xcalc ps Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Commande ps Quel champ pour quelle information ? Quelle information correspond au champ PPID ? Quelle information correspond au champ SZ (size) ? Pour avoir une idée de l’information correspondant au champ S (STAT), lancez deux fois xcalc &, puis tapez fg suivi de Ctrl-Z. Examinez ensuite le champ. completez vos informations à l’aide de la commande man Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Enchaînement On peut exécuter plusieurs processus les uns à la suite des autres, il suffit de les séparer par le symbole ; cd scripts/ ; ls *.sh ; cd .. Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Redirection des sorties Il est possible de rediriger les sorties d’un processus → la sortie standard à destination d’un nouveau fichier en utilisant le symbole > → pour concaténer la sortie standard à un fichier existant : utilisation du symbole >> → la sortie erreur à destination d’un nouveau fichier en utilisant le symbole 2 > → pour concaténer la sortie erreur à un fichier fichier existant : 2 >> Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Exemples ls -laR > /̃tmp/liste-des-fichiers ls -laR toto 2> /̃tmp/liste-erreurs Frédéric Guinand Système d’exploitation : les processus Généralités Lancement - Activation - Suspension Commandes Enchaînement et entrées/sorties Pipe permet de rediriger les sorties d’un processus vers les entrées d’un autre processus : symbole | exemple : ls | grep java Frédéric Guinand Système d’exploitation : les processus