Introduction aux processus systèmes

Documents pareils
Introduction aux Systèmes et aux Réseaux

Programmation système en C/C++

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)

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

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

Cours Programmation Système

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

Cours 6 : Tubes anonymes et nommés

Programmation système

Les processus. Système L3, /39

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

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

Communication Interprocessus

Cours de S.E. les Signaux

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

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

Chapitre 4 : Outils de communication centralisés entre processus

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

gestion des processus La gestion des processus

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

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

Playing with ptrace() for fun and profit

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

Séance n o 5 : Alternatives, gestion des utilisateurs et des processus

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

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

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

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

Informatique III: Programmation en C++

Rapport de fin de stage

Le prototype de la fonction main()

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

Architecture des ordinateurs

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

Introduction à la programmation concurrente

Architecture d un système d exploitation

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours de Systèmes d Exploitation

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

OS Réseaux et Programmation Système - C5

Les arbres binaires de recherche

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Programmation système de commandes en C

Les structures de données. Rajae El Ouazzani

Gestion des processus

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Cloner un disque dur

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

Concept de machine virtuelle

Synchro et Threads Java TM

2011 Hakim Benameurlaine 1

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

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)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Les vulnérabilités du noyau. LECORNET Olivier LEGROS Bruno VIGIER Nicolas Promo 2005

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Corrigés des premiers exercices sur les classes

Ordinateurs, Structure et Applications

Programme Compte bancaire (code)

Un ordonnanceur stupide

Croisière au cœur d un OS Étape 4 : Mise en place de la pagination

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

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Simulation d un système de paiement par carte bancaire

Cours de C. Allocation dynamique. Sébastien Paumier

Programmation défensive

Unix : Programmation Système

Introduction au langage C

Le traitement du temps

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

La Comptabilité UNIX System V Acctcom

Serveur d'archivage 2007 Installation et utilisation de la BD exist

as Architecture des Systèmes d Information

IV- Comment fonctionne un ordinateur?

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

Analyse de sécurité de logiciels système par typage statique

Arguments d un programme

Programmation système I Les entrées/sorties

Introduction à la Programmation Parallèle: MPI

Exercice sur les Dockers

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INFO-F-105 Language de programmation I Séance VI

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

Introduction. Adresses

1 Repérer les paramètres d installation (.exe ou.msi).

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

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

Projet de programmation (IK3) : TP n 1 Correction

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

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

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

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

Derrière toi Une machine virtuelle!

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

La base de données XML exist. A. Belaïd

JAB, une backdoor pour réseau Win32 inconnu

Transcription:

ENS Cachan

Rappels : un processus simple Un processus travaille dans un espace d adressage : segments de texte, de données, et pile. Il agit sur le microprocesseur : change les registres, le compteur ordinal, le mot d état (cf mode utilisateur ou noyau) Réciproquement, par le mot d état, le matériel peut interrompre (dérouter) le programme.

Multiprogrammation Dans les systèmes multitâches, plusieurs processus s exécutent en parallèle : parallélisme simulé par un ordonnanceur processus = unité d exécution vue comme indépendante des autres Concept assez ancient (ATLAS I, 1959), mais récent dans les systèmes d exploitation grand public. Nécessite un vrai travail du système : commutation, mémoire virtuelle, ordonnanceur... A remplacé le traitement par lot (BATCH), cf MS-DOS.

Arborescence de processus Un processus a une identité (pid), cf commandes ps, top. Par ailleurs (en UNIX), un processus se situe dans une généalogie : un processus est créé par son père héritage des attributs du père utile pour définir des groupes fils = fonction (valeur de retour)

Attributs d un processus processus = unité de ressources d exécution Attributs d ordonnancement contexte (registres, mode, PC, etc) état (actif, prêt, bloqué, zombie) paramètres de priorité identité et généalogie (pid, père, groupe...) signaux temps (d exécution, d attente,...) Espace d adressage segments de code, de données, et de pile Attributs de fichiers cwd, descripteurs, id d utilisateur Question A votre avis, quels attributs sont hérités?

Vie et mort d un processus initial ready zombi kernel running user running stopped asleep Des processus bloqués éviter l attente active possibilité de préemption (signaux) Démos tube, CRTL+Z... Questions Où sont les commutations de contexte? A quels évènements correspond chaque flèche? Pourquoi y a-t-il un état zombie?

Gestion de processus depuis le shell Quelques commandes utiles : processus liés au terminal ou au shell : commandes ps, jobs activité : top ordonnancement par le shell : &, bg, fg. préemption : CRTL+Z, kill

Notion de signal Un signal est émis par un processus vers un autre (ou un groupe d autres) processus de même propriétaire (sauf root). Le signal peut être rattrappé par le processus destinataire, ce qui provoque (en général) un déroutement et le lancement d une routine spécifique de traitement. Après le traitement, le processus reprend où il a été interrompu. En UNIX : la commande kill permet d envoyer des signaux.

Les principaux signaux Nom cause standard effet par défaut SIGINT terminaison SIGABRT appel à abort() terminaison SIGFPE erreur de flottant terminaison SIGKILL terminaison (non modifiable) SIGBUS bus error terminaison SIGPIPE écriture sur un tube sans lecteur terminaison SIGALRM fin d un timer terminaison SIGSTOP suspension (non modifiable) SIGCONT reprise SIGCHLD un fils a fini son exécution pas d effet SIGUSR1 aucune terminaison SIGUSR2 aucune terminaison

Délivrance du signal Elle dépend de l état du processus. En général, le signal est délivré au processus lorsqu il devient actif en mode utilisateur, sinon elle est différée. Pour certains appels systèmes bloquants (ex : read), un signal plus prioritaire peut réveiller un processus endormi. Un processus suspendu sera réactivé par SIGKILL, SIGTERM et SIGCONT. Question Que penser du cas d un processus zombie?

Création de processus et recouvrement UNIX distingue la création d un processus (fork) et le recouvrement (exec) Remarques Exemple : la commande launch void launch(char * cmd){ if ((child_pid = fork()) >0 ) { return ; // processus pere} else { execvp(cmd,cmd) ; } } un exec ne crée pas de processus (meme pid). un fork recopie les attributs, en particulier l espace d adressage (les variables ne sont pas aliasées). un fork recopie les descripteurs, mais pointent sur la meme entrée de la table des fichiers ouverts

Commandes wait et waitpid Attendre la fin d un processus fils : waitpid(child_pid,&status) ; /* traitement en fonction de la cause de terminaison * if (WIFEXITED(statut)) { printf("terminaison avec valeur %d\n",wexitstatus(statut) } else if (WIFSIGNALED(statut)) { printf("terminaison par signal %d\n",wtermsig(statut)) ; } else if (WIFSTOPPED(statut)) { printf("suspension par signal %d\n",wstopsig(statut)) ; }

Définition d un handler de signaux exemple : reactivation d un fils struct sigaction action ; pid_t pid_fils ; void hand(int sig){ printf("signal %d recu par %d\n", sig, (int)getpid()) ; /* le processus reactive son fils */ kill(pid_fils, SIGCONT) ; } int main(int argc,char *argv[]) { printf("lancement du processus %d\n", (int)getpid()) ; action.sa_handler = hand ; sigaction(sigchld, &action, NULL) ; démo : chld1.c