Qu'est-ce qu'un processus: Définitions



Documents pareils
Cours Programmation Système

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Introduction aux Systèmes et aux Réseaux

Cours 6 : Tubes anonymes et nommés

Les processus. Système L3, /39

Système et réseaux (SR1) Gestion des utilisateurs

Chapitre 4 : Outils de communication centralisés entre processus

gestion des processus La gestion des processus

Programmation système en C/C++

Exécutif temps réel Pierre-Yves Duval (cppm)

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

LEs processus coopèrent souvent pour traiter un même problème. Ces

Programmation système

3IS - Système d'exploitation linux - Programmation système

SYSTÈME DE GESTION DE FICHIERS

Gestion des processus

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

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

Les processus légers : threads. Système L3, /31

Architecture d un système d exploitation

Cours de Systèmes d Exploitation

GESTION DES FICHIERS C/UNIX

Cours de Système : Gestion de Fichiers

Programmation système de commandes en C

Le système de gestion des fichiers, les entrées/sorties.

Cours A7 : Temps Réel

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

La Comptabilité UNIX System V Acctcom

Partie 7 : Gestion de la mémoire

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Unix/Linux I. 1 ere année DUT. Université marne la vallée

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P.

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

Chapitre 3 : Système de gestion de fichiers

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

Programmation système I Les entrées/sorties

Le Network File System de Sun (NFS)

1 Mesure de la performance d un système temps réel : la gigue

Architecture des ordinateurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Un ordonnanceur stupide

Introduction à la programmation concurrente

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

Playing with ptrace() for fun and profit

Programmation C. Apprendre à développer des programmes simples dans le langage C

Synchro et Threads Java TM

Concept de machine virtuelle

Systèmes d exploitation Gestion de processus

La mémoire. Un ordinateur. L'octet. Le bit

Systèmes d exploitation

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Formation Technicien Supérieur de Support en Informatique T2SI. Le module LINUX. Session J04 Version 01

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Introduction à la Programmation Parallèle: MPI

TP1 - Prise en main de l environnement Unix.

Temps Réel. Jérôme Pouiller Septembre 2011

Gestion répartie de données - 1

ENSP Strasbourg (Edition ) Les Systèmes Temps Réels - Ch. DOIGNON. Chapitre 3. Mise en œuvre : signaux, gestion du temps et multi-activités

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Communication Interprocessus

Le prototype de la fonction main()

On appelle variable condition une var qui peut être testée et

LA mémoire principale est le lieu où se trouvent les programmes et les

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

Chapitre IX : Virtualisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Licence Sciences et Technologies Examen janvier 2010

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

Cours de S.E. les Signaux

Configuration de WebDev déploiement Version 7

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Support de cours système d exploitation

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Le langage C. Séance n 4

Description de SQL SERVER. historique

UBUNTU Administration d'un système Linux (4ième édition)

Extension d'un outil de trace pour système embarqué temps réel. Encadrants : Laurent Pautet, Jérôme Hugues

Le traitement du temps

Table des matières Hakim Benameurlaine 1

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java


Programmation défensive

Gestion des fichiers. Telecom-ParisTech BCI Informatique

OS Réseaux et Programmation Système - C5

Système de Gestion de Fichiers

Transcription:

Version septembre 2013 N 187 Qu'est-ce qu'un processus: Définitions Instruction = indécomposable et indivisible Processeur =... Processus = suite temporelle d'exécutions d'instructions Processus = exécution d'un programme (instructions + données) Processus = entité dynamique (création --> disparition) Version septembre 2013 N 188 Les processus (système temps partagé) Un processeur Activation: chaque appel système ou interruption Ordonnanceur : un processus un coût Nécessité d avoir des opérations atomique (appels systèmes) 1

Version septembre 2013 N 189 Les processus (système temps partagé) Plusieurs processeurs ( n?) Ordonnanceur : un processus un coût Nécessité d avoir des opérations atomique (appels systèmes) Version septembre 2013 N 190 Notion de processus UNIX (1) Approche intuitive UNIX = système "temps partagé Plusieurs processus en même temps Un seul processus actif Attente des autres (dans/hors mémoire) Contenu d'un processus Code Le nécessaire pour l'exécution Données et la reprise d'exécution Valeur des registres généraux État des fichiers ouverts Répertoire courant... 2

Version septembre 2013 N 191 Notion de processus UNIX (2) Processus (quelques centaines / machine) Associé à un utilisateur Sur une seule machine ou distribué sur le réseau Compétition entre processus Variété de mécanismes de communication / synchron. Ordonnanceur: mode privilégié, dans le noyau Sous-processus (Threads quelques milliers / machine) Partage données, code, M.V. mais pile exécution Même utilisateur, même machine Très peu d infos, peu de compétition, Ordonnanceur: simple, mode utilisateur Version septembre 2013 N 192 Identification d un processus Proc. utilisateur Démons 0 1 2 50 200 pid PID Processus P Table des Processus (TdP) Process Identifier : unique généré init : exécute /etc/rc. (initial.) gère mono ou multi processus privilégié lance processus connexion 0: scheduler, swapper (intégré au noyau) 1: /sbin/init (père de tous les processus) 2: gestionnaire de pagination (intégré au noyau) 3

Version septembre 2013 N 193 Contexte d'un processus: Notion de région (1) Pile Noyau Table Régions rw x rw 4K 10K 20K Zone Utilisateur Fich. ouverts Rép.courant Rép. racine données code pile privée partagée privée Table Régions Version septembre 2013 N 194 Contexte d'un processus: Notion de région (2) Structure Pointeur: o : inode du fichier associé Type: code, pile, données privées, partagées Taille Localisation (mémoire physique) Etat: Fonction (verrouillée, demandée, en chargement, valide) Compteur: nombre de processus qui la référence Opérations Allocation/libération (Dé)Verrouillage Attacher/détacher une région... Exemple: voir appels systèmes exec, sbrk 4

Version septembre 2013 N 195 Contexte d'un processus : Autres éléments (1) Contenu (régions) : Code du programme Données Pile utilisateur du processus Mémoire partagée Quelques éléments : Compteur ordinal: adresse virtuelle Registre i t d'état t processeur Elément de la table des processus Etat + contrôle général du processus Correspondance des adresses virtuelle / physique Version septembre 2013 N 196 Contexte d'un processus : Autres éléments (2) Quelques éléments (suite) Répertoires: es: courant, racine Table des descripteurs Pointeur (table des processus) Identificateurs de l'utilisateur Compteurs de temps Tableau de réaction aux signaux Voir cours gestion des signaux Terminal de connexion éventuel (voir ps) Champs: erreur, valeur de retour appels systèmes Champs limites: taille processus,... Modes de permission (voir umask) Paramètres E/S: volume, adresse,... 5

Version septembre 2013 N 197 Intégration dans le système: Table des processus (1) Pile Noyau Zone Utilisateur Fich. ouverts Rép.courant Rép. racine Processus 2 Processus 1 Processus 1 Données 1 Code 1 Pile 1 Données 2 Table des Processus (TdP) Table des Régions Pages Mémoires Version septembre 2013 N 198 Intégration dans le système: Table des processus (2) Contenu d'un élément Etat d'un processus Localisation de la zone U Mémoire principale/secondaire Identificateurs d'utilisateur Voir gestion des signaux Identificateurs de processus Lien de parenté Evènement ayant provoqué le sommeil (sleep) Paramètres d'ordonnancement Ordre d'exécution Signaux envoyés au processus (non traités) Paramètres de calcul de priorité Temps d'exécution,... 6

Version septembre 2013 N 199 Intégration dans le système: Entrée-sortie Pile Noyau Données Pile Utilisateur Table Régions Zone Utilisateur Fich. ouverts Rép.courant Rép. racine Table des Inodes Table des Fichiers Version septembre 2013 N 201 Etats d'un processus 1 Execution (mode utilisateur) 7 Preempte Retour Appel systeme Preemption ou interruption Interruption est-equivalent 2 Execution (mode noyau) Reordonnancement processus "exit" S'endort 3 Pret a s'executer (en memoire) 9 zombie Reveil 4 Endormi (en memoire) Assez de memoire Transfert Transfert 6 8 Endormi (hors memoire) Creation Reveil Manque de memoire (swapping?) 5 Pret a s'executer (hors memoire) 7

Version septembre 2013 N 202 Changements d'états d'un processus Processus en attente: Etats: endormi-en-mémoire, endormi-transféré Réveil (changement d'état): par interruption Préemption: Mode utilisateur: oui Mode noyau: Oui si se termine Exécution d'une interruption: passage en mode noyau Prêt à s'exécuter en mémoire Ordonnanceur / horloge Gestion des priorités Version septembre 2013 N 203 Ordonnancement des processus: principes de base (1) Politique générale Sélection de l'élu: {préempté, en mémoire, prêt s'exécuter Plus haute priorité ou Max temps (prêt s'exécuter) Changement de processus: dépassement du quantum de temps Re-évaluation de la priorité: mode noyau mode utilisateur mode noyau endormi-en-mémoire réajustement périodique: {prêt s'exécuter Gestion des changements d'états 8

Version septembre 2013 N 204 Ordonnancement des processus: principes de base (2) Calcul de la priorité Calcul du temps utilisé en exécution Recalcul de la priorité: Changement de files de priorité Paramètres: Priorité dynamique : Le moins récemment en exécution Raison de l'attente Priorité statique (nice) En pratique Programme interactif: plus prioritaire U.C. récemment utilisé: moins prioritaire Version septembre 2013 N 205 Utilisateurs et groupes effectifs/réels Le bit SETUID Structure processus: utilisateur effectif/réel l'utilisateur associé au login (réel) avec les droits d'un utilisateur donné (effectif) chmod : chmod u+s fichier (fichier exécutable) exemple: commande passwd idem pour le groupe Utilisation des groupes secondaires groupe primaire/standard vs groupes secondaires newgrp : prend le groupe passé en paramètre Vérification des droits (groupe secondaire?) Fichier /etc/group 9

Version septembre 2013 N 207 Norme POSIX Routine Description pid = fork () Création fils e = waitpid (pid,&etat,opts) Attendre fils e = execve (nom,argv,envp) Remp. image exit (etat) Term. process. e = sigaction (sig,&act,&oact) Spécif. action e = kill (pid, sig) Envoi signal residuel = alarm (seconde) Prog. SIG... pause() Susp. process. Version septembre 2013 N 210 Création d un processus (1) Partage : code mém. read_only Duplication : information données Nouveau pid, nouvelle entrée dans la TdP «héritage» d informations Qui s exécute? Quand? À partir d où? 10

Version septembre 2013 N 211 Création de processus (2) PID: 5300 main() { res=fork() 0 34 jean res: 5309 PID: 5309 main() { res=fork() 0 34 jean res: 0 Version septembre 2013 N 212 Création de processus (3) Appel système fork Deux processus identiques Deux processus indépendants Exécution des processus: voir ordonnanceur Duplication vs partage Informations dupliquées Table des descripteurs Buffers Curseur d'exécution Variables globales... 11

Version septembre 2013 N 213 État des tables après un fork Processus père Processus fils 0 1 2 3 4 5 0 1 2 3 4 5 Position : État : Nombre : Position : État : Nombre : Position : État : Nombre : O_RDONLY 1 2 O_RDWR 12 O_WRONLY 1 2 /etc/bashrc N inode : Nb. copies : Inode Infos /.bashrc N inode : Nb. copies : Inode Infos 1 2 Espace utilisateur Table fichiers Table inodes Version septembre 2013 N 214 fork et les structures internes PROC. PARENT Pile Noyau Données Pile Utilisateur Table Régions Zone Utilisateur Rép.courant Rép. racine Fich. ouverts Table des Inodes Code Partagé Table des Fichiers Données Pile Utilisateur PROC. FILS Table Régions Pile Noyau Zone Utilisateur Fich. ouverts Rép.courant Rép. racine 12

Version septembre 2013 N 215 fork: exemple simple #include <sys/types.h> int main () { int pid;... if ( (pid = fork ()) < 0) erreur; if (pid == 0) /* Traitement fils */ else /* Traitement père */ Version septembre 2013 N 216 fork: 2 ème exemple (1) 13

Version septembre 2013 N 217 fork: 2 ème exemple (2) Version septembre 2013 N 218 fork: 2 ème exemple (exécution) stdout associé : terminal fic. disque Moment de la Moment de la Synchronisation? 14

Version septembre 2013 N 219 Information d un processus (1) Processus P N groupe processus Terminal de Contrôle? RUID EUID SUID PGID TC SI RGID EGID SGID WD HD FCM Répertoire courant Répertoire initial umask N Session ESGID signaux Autre N groupe Version septembre 2013 N 220 Information d un processus (2) Hérité TDF «close-on-exec» espace mémoire Pile exécution Code Données statiques Tas Variables environnement mémoires partagées limites de ressource sauvegarde des registres Non hérité PID PPID temps calcul signaux et alarmes verrous code retour fork Efficacité? vfork (partage) copy on write 15

Version septembre 2013 N 221 Obtenir les Informations du processus PID du processus PID du père Propriétaire du processus Groupe du processus Réel ou effectif Version septembre 2013 N 222 Modifier les Informations du processus User pour R,E,S Group pour R,E,S User:R,E Group:R,E User:E Group:E Rappel: Forte dépendance OS PID et PPID: non modifiable 16

Version septembre 2013 N 223 Terminaison d un processus Normale vs anormale P Ou return implicite? main { main { P Si non ignorée exit(int) abort() exit(3) = _exit(2) + vidage buffer E/S _exit(2) = ferm. desc. fic. + code retour + SIGCHLD P main { SIGABRT signaux SIGKILL abort(3) = ferm. desc. fic. + «dump» Version septembre 2013 N 224 Etat d un processus Table des Processus 0 = vrai : OK >0 = faux = KO Processus p Et la commande ps? 1 2 16 int macro (status) WIFEXITED + WEXITSTATUS WIFSIGNALED + WTERMSIG WIFSTOPPED + WSTOSIG un code de retour (exit) - terminaison normale le numéro du signal - terminaison anormale le numéro du signal - arrêt provisoire (stop) un indicateur si fichier core (dump) Terminaison vs stop Libération ressources ou possib. SIGCONT 17

Version septembre 2013 N 225 Après la mort d un processus? Table des Processus Processus fils Processus père Zombie Descripteur État mémoire ressource Le père est alerté par un signal SIGCHLD L entrée disparait quand le père à récupéré l état (wait) Orphelin: et si le père meurt avant init (éternel) adopte le processus fils init fera le wait Reconnaître un orphelin? Version septembre 2013 N 226 wait: Synchronisation père/fils Pour recevoir l état Quel fils? Processus s'endort Et si déjà un zombie? Mort d'un fils: signal SIGCHILD Réveil du père Lien de parenté: groupe de processus voir signaux Autres: wait, waitpid, wait3, wait4 18

Version septembre 2013 N 227 wait: exemple simple (1) #include <sys/types.h> int main () { int pid, tmp;... if ( (pid = fork ()) < 0) erreur; if (pid == 0) /* Traitement fils */ else { /* Traitement père */ Informations tmp = wait (0) possible Utilisation: synchronisation entre le père et n fils n = 1: tmp = P.I.D. du fils n > 1: tmp = P.I.D. d'un fils Version septembre 2013 N 228 wait: exemple simple (2) #include <signal.h> int main () { int pid, res, etat; if ( (pid = fork()) == 0) {... exit (1) else... res = wait (&etat); Etat du processus 19

Version septembre 2013 N 229 waitpid: Synchronisation père/fils l état < -1:processus de ce groupe = -1 : processus fils = 0 : processus du groupe = > 0 : ce processus rien: blocage normal WNOHANG: pas de blocage WUNTRACED : processus stoppés non interrogés Version septembre 2013 N 230 waitpid: exemple simple #include <signal.h> int main () { int pid, res, etat; if ( (pid = fork()) == 0) {... exit (1) else if (waitpid(pid, &etat, WNOHANG) == -1) printf(«le processus fils n est pas terminé»);... 20

Version septembre 2013 N 231 Wait3/4: Synchronisation père/fils temps mémoire nb swap nb signaux waitpid + ressources utilisées ( voir getrusage(2) ) processus stoppé ou terminé Version septembre 2013 N 232 Evaluer le temps d exécution (1) pulsations d horloge (sysconf) Programme vs Appels syst. time (shell - options) : temps total = temps réel de times temps user = tms_utime + tms_cutime temps system = tms_stime + tms_cstime cumulation 21

Version septembre 2013 N 233 Evaluer le temps d exécution (2) temps total = temps user + temps system + autre temps autre temps = temps E/S + temps pour autres processus Version septembre 2013 N 234 Evaluer le temps d exécution (3) Nb puls. / sec Evaluer un temps de calcul en secondes : temps «réel» et «user» 22

Version septembre 2013 N 235 Exécution d'un nouveau code: PID: 5300 main() { err=execve() 0 Données (Avant) Code (Avant) Pile (Avant) 34 jean err: Table des Régions PID: 5300 main() { 0 Pile (Après) Données (Avant) Code (Avant) Données (Après) Pile (Avant) 34 jean argv: Code (Après) Table des Régions Version septembre 2013 N 236 execve: exécution d un nouveau code L exécutable Arguments effectifs chemin relatif ou absolu chaque argument termine par \0 Dernier élément des tableaux est NULL Rappel: argv[0] = nom point d entrée Variables d environnement envp[i] = nom=valeur\0 23

Version septembre 2013 N 237 Exécution d'un nouveau code (1) Appels systèmes et routines exec un appel système: execve Une famille de routines C execp, execvp, execl, execlp, execle Les structures argv, argc, envp La variable PATH ou chemin absolu/relatif Pi Principales i actions Sauvegarde paramètres de exec Désallocation des régions Chargement éventuel de l'inode et du contenu Allocation des nouvelles régions Version septembre 2013 N 238 Exécution d'un nouveau code (2) Principales actions (suite) Zone utilisateur: Descripteurs non modifiés : 0, 1, 2 Autres descripteurs fermés Effacement de la capture des signaux voir cours sur les signaux Curseur: au départ Chargement exécutable Remplacement par nouveau code + exécution Si FD_CLOEXEC est positionné (fcntl) descripteur fermé 24

Version septembre 2013 N 239 execve et les structures internes PID: 5300 main() { 0 x 34 jean argv: Pile (Ap) Données (Av) Code (Av) Données (Ap) Pile (Av) Code (Ap) Table des Régions Table des Fichiers ouverts Table des Inodes tampon /bin/ls /dev/sda1 : Instant t+1 Version septembre 2013 N 240 exec(ve): exemple simple #include <sys/types.h> int main (int argc, char* argv[], char* envp[]) { int pid, tmp;... argv[0] = ls ; argv[1] = -l ; argv[2] = NULL; execve ("/bin/ls", argv, envp) execlp ( ls, ls, -l, NULL) execl ( /bin/ls, ls, -l, NULL) (char* 0) execle ( /bin/ls, ls, -l, NULL, envp) 25

Version septembre 2013 N 241 exec: exemple simple d'utilisation #include <sys/types.h> int main () { int pid, tmp;... if ( (pid = fork ()) < 0) erreur; if (pid == 0) /* Traitement fils */ execve ("/bin/ls", (/ / argv, envp) else { /* Traitement père */ tmp = wait (0) Modif poss. si S_ISUID / S_ISGID : EUID, EGID SUID, SGID pas RUID, RGID printf( Erreur ); Version septembre 2013 N 242 Fonctionnement du shell Interprétation d'une commande Analyse syntaxique Substitutions Variables d environnement Exécution: et exportation : Création d'un shell fils. commande = modif. possib. commande = modification Processus fils: Redirections et aboutements Application de exec Processus père: Arrière plan vs premier plan Attente d'un signal (wait) 26

Version septembre 2013 N 243 Fonctionnement du shell #include <sys/types.h> int main () { int pid, tmp, status;... if ( (pid = fork ()) < 0) erreur; if (pid == 0) /* Traitement fils */ execve (commande analysée, argv, envp) else { /* Traitement père */ res = wait (&status) /* traitement de status */ Exécution en premier plan Et en arrière plan? WEXITSTATUS(status) code de retour exit() Version septembre 2013 N 244 Ouverture d'une session (attente) ROOT PID = 1 fork INIT fork fork INIT INIT... INIT exec exec exec GETTY GETTY GETTY 27

Version septembre 2013 N 245 Ouverture d'une session (En cours) PID = 1 fork INIT fork fork INIT INIT INIT... exec exec exec GETTY GETTY exec GETTY LOGIN Version septembre 2013 N 246 Ouverture d'une session (Réalisée) PID = 1 fork INIT fork fork INIT INIT... INIT exec exec exec GETTY GETTY exec GETTY LOGIN exec /BIN/KSH /BIN/KSH PPID = 1 PID : login 28

Version septembre 2013 N 247 system: exécution d un sous-shell Ligne de commande Pas supporté par tous les OS [if (system(null)) (NULL)) oui] Bon exercice: fork execve waitpid Version septembre 2013 N 248 Exercice: implémentation de system trop de fork Pas de traitement des signaux 29