Interface C/Unix : Gestion des processus. Université de Valenciennes(ISTV) H.Bourzoufi

Documents pareils
Cours Programmation Système

Programmation système en C/C++

Introduction aux Systèmes et aux Réseaux

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

Les processus. Système L3, /39

Programmation système

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)

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

Architecture d un système d exploitation

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

Cours 6 : Tubes anonymes et nommés

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

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

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

Communication Interprocessus

Le prototype de la fonction main()

Introduction au langage C

Chapitre 4 : Outils de communication centralisés entre processus

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

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

Cours de Systèmes d Exploitation

Programmation système de commandes en C

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

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

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

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)

Le traitement du temps

Gestion des processus

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Arguments d un programme

OS Réseaux et Programmation Système - C5

Unix : Programmation Système

Simulation d un système de paiement par carte bancaire

Cours de S.E. les Signaux

Programmation système I Les entrées/sorties

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Java Licence Professionnelle CISII,

Le langage C. Séance n 4

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

CA 3000 CA 3000 PROGRAMMATION PAR MINITEL

Conventions d écriture et outils de mise au point

Algorithmique et Programmation, IMA

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Rappels Entrées -Sorties

INFO-F-404 : Techniques avancées de systèmes d exploitation

as Architecture des Systèmes d Information

COMPARAISONDESLANGAGESC, C++, JAVA ET

Compression de Données - Algorithme de Huffman Document de Conception

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Programmation impérative

Un ordonnanceur stupide

Lier Erlang avec d autres langages de programmation

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Les structures. Chapitre 3

Introduction à la Programmation Parallèle: MPI

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

Package Java.util Classe générique

Programmation Classique en langage C

Synchro et Threads Java TM

Principes des langages de programmation INF 321. Eric Goubault

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation Réseau SSH et TLS (aka SSL)

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Programme Compte bancaire (code)

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

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

INF 321 : mémento de la syntaxe de Java

Cours d initiation à la programmation en C++ Johann Cuenin

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

PROGRAMMATION PAR OBJETS

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

ACTIVITÉ DE PROGRAMMATION

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Gestion de la mémoire

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1

Les structures de données. Rajae El Ouazzani

Architecture des ordinateurs

Les chaînes de caractères

I. Introduction aux fonctions : les fonctions standards

Systèmes d exploitation Gestion de processus

Une introduction à Java

Chap III : Les tableaux

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours 14 Les fichiers

Exercice sur les Dockers

Derrière toi Une machine virtuelle!

TD3: tableaux avancées, première classe et chaînes

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

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

Qualité du logiciel: Méthodes de test

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Transcription:

Interface C/Unix : Gestion des processus Université de Valenciennes(ISTV) - 1 - H.Bourzoufi

Gestion des processus Un processus est un programme en cours d'exécution + son contexte d'exécution Caractéristiques des processus Unix : Espace d'adressage privé Fonctionne ment en mode utilisateur ou en mode noyau Le mécanisme de création des processus est le fork : Un processus nouvellement crée est une copie exacte du processus qui l'a créé Organisation arborescente des processus Un processus est identifié par un numéro pid Un processus interagit avec l'extérieur à l'aide des E/S standards Un processus peut communiquer avec un ou plusieurs processus à l'aide de tubes de communication Un processus peut émettre ou recevoir des signaux Université de Valenciennes(ISTV) - 2 - H.Bourzoufi

Primitives de Gestion des processus Identification des processus int pid = getpid() int ppid = getppid() Ces deux primitives fournissent respectivement les numéros du processus appelant et celui du processus Père Identification de proprietaires int pid = getuid() int ppid = getgid() Fournissent resp le numéro du propriétaire, et celui du groupe. Mise en sommeil d un processus int sleep(int n) Suspend l'exécution du processus appelant pour une durée de n secondes Terminaison d un processus Un processus se termine lorsqu il n a plus d instructions ou lorsqu il exécute la fonction : void exit(int statut) Elimination d un processus L élimination, d un processus terminé, de la table ne peut se faire que par son père, grâce à la fonction : int wait(int * code_de_sortie) Université de Valenciennes(ISTV) - 3 - H.Bourzoufi

Primitives de Gestion des processus Création d'un processus int fork() - Cette primitive crée un nouveau processus (appelé fils) qui est une copie exacte du processus appelant (processus père) - La différence est faite par la valeur de retour de fork(), qui est égale à zéro chez le processus fils, et elle est égale au pid du processus fils chez le processus père - la primitive renvoie -1 en cas d'erreur Le processus fils hérite du processus père : - la priorité - la valeur du masque - le propriétaire - les descripteurs des fichiers ouverts - le pointeur de fichier (offset) pour chaque fichier ouvert - Le comportement vis à vis des signaux Université de Valenciennes(ISTV) - 4 - H.Bourzoufi

Exemples Exemple 1 #include<stdio.h> main() {int n; if ((n=fork())<0) {perror("fork");exit(); if (n) printf(" %d : Je suis le processus père \n",getpid()); else printf(" %d : Je suis le processus fils de %d \n", getpid(),getppid()); Exemple 2 #include<stdio.h> main() { int a,b,n; a=2;b=3; if ((n=fork())<0) {perror("fork");exit(); if (n) a= a+b; else b=a*b; printf("%d %d\n",a,b); Université de Valenciennes(ISTV) - 5 - H.Bourzoufi

Primitives de Gestion des processus (suite) Primitives EXEC (de recouvrement) : Permettent le lancement par le processus appelant d un nouveau programme. int execl(char *ref, char *arg0, char *arg1,,char *argn, 0) Elle lance l'exécution du programme arg0 se trouvant dans le fichier ref avec les arguments arg1 argn - Primitive execv Cette primitive est similaire à execl mais les arguments du programme sont fournis passés dans un tableau Int execv(char *ref,char *argv[]) - Primitives execlp et execvp Ces foncions ont le même effet que execl et execv, mais la recherche de programme se fait dans la liste des exécutables donnée par la variable Shell PATH Exemple d un mini-shell main() (int argc, char *argv[]) { if (fork()) wait(); else {execvp(argv[1], &argv[1]); perror("execvp"); Université de Valenciennes(ISTV) - 6 - H.Bourzoufi

La gestion des signaux Généralités - les signaux sont des interruptions logicielles - Par défaut, le processus qui reçoit un signal se termine - Les signaux sont envoyés par le noyau pour indiquer l'arrivée d'un événement : Ex : signalisation des erreurs : - violation mémoire - erreur dans une E/S - Les signaux peuvent être envoyés par les processus Õ Communication inter-processus Identification des signaux - Chaque signal est identifié par un numéro - Le fichier include <signal.h> - la commande kill -l donne la liste de tous les signaux - Exemples : SIGINT 2 signal d interruption(^c) SIGKILL 9 destruction d un processus SIGSEGV 11* émis en cas de violation mémoire SIGUSR1 30 SIGUSR2 31 Comportement d un proessus vis à vis des signaux - comportement par défaut: terminaison - capturer certains signaux - ignorer certains signaux Université de Valenciennes(ISTV) - 7 - H.Bourzoufi

Primitives de gestion des signaux Emission d un signal int kill(int pid, int sigint) - Cette primtive permet à un processus d envoyer un signal à un autre processus. pid est le n du processus visé, sigint est le n du signal employé. - la valeur de retour est négative en cas d'erreur - Si sigint=0 alors aucun signal n'est émis Õ permet de savoir si le n pid correspond à un processus Capturation d un signal Un processus peut modifier son comportement aux signaux reçus par l appel de la fonction : void (*signal(int sigint, void (* fonction)(int))) sigint est le n du signal fonction est la fonction qui sera exécutée à l'arrivée du signal signit Masquage des signaux signal (sigint, SIG_IGN) permet au processus appelant d'ignorer sigint signal (sigint, SIG_IGN) le processus rétablira son comportement par défaut lors de l arrivée de l interruption (la terminaison) Université de Valenciennes(ISTV) - 8 - H.Bourzoufi

Exemples Exemple 1 (Ignorance des interruptions clavier) #include<stdio.h> #include<signal.h> void hand() { printf("envoyer le signal SIGKILL pour me tuer\n"); main() { signal(sigint,hand); signal(sigquit,hand); for(;;); Exemple 2 (horloge) #include<stdio.h> #include<signal.h> int hh,mn,sc; void tick(i) int i; { sc++; if (sc == 60) {sc=0; mn++; if (mn ==60) {mn=0; hh++; if (hh == 24) hh=0;;alarm(1); printf("%d:%d:%d\n",hh,mn,sc); Université de Valenciennes(ISTV) - 9 - H.Bourzoufi

main() { signal(sigalrm,tick); alarm(1); for(;;); Les signaux : aspect système Õ Quand un signal est envoyé, il devient pendant. Il n'est pas délivré instantanément. Õ Au bout d'un certain temps(par exemple, quand l'ordonnanceur donne la main à un processu), le système délivre tous les signaux pendants pour ce processus Õ Dans l'espace noyau, il y a un vecteur de bits associé à chaque processus. Chaque bit correspond à un signal. Si le bit est à 1, le signal correspondant est pendant. Õ Ce mode de fonctionnement a deux conséquences très importantes : Õ Il est impossible de prévoir le délai entre l'envoi d'un signal et l'exécution de son handler Õ Si deux signaux identiques sont envoyés au même processus à un court intervalle Université de Valenciennes(ISTV) - 10 - H.Bourzoufi

de temps, un seul signal est délivré au processus Université de Valenciennes(ISTV) - 11 - H.Bourzoufi