Mcanismes fondamentaux dun systme dexploitation Processus Techniques dordonnancement







































![La Création d’un pipe int pipe(p) int p[0]; n L'appel système pipe retourne 2 La Création d’un pipe int pipe(p) int p[0]; n L'appel système pipe retourne 2](https://slidetodoc.com/presentation_image_h2/9e1f73d5bc1c474a2bf807d158e3b699/image-40.jpg)
![L’écriture dans un pipe Effectuée par la primitive write(p[1], "ABCD", 4); écriture de 4 L’écriture dans un pipe Effectuée par la primitive write(p[1], "ABCD", 4); écriture de 4](https://slidetodoc.com/presentation_image_h2/9e1f73d5bc1c474a2bf807d158e3b699/image-41.jpg)
![La lecture à partir d’un pipe n Effectuée par la primitive read(p[0], buf, 5); La lecture à partir d’un pipe n Effectuée par la primitive read(p[0], buf, 5);](https://slidetodoc.com/presentation_image_h2/9e1f73d5bc1c474a2bf807d158e3b699/image-42.jpg)



- Slides: 45
Mécanismes fondamentaux d’un système d’exploitation Processus Techniques d’ordonnancement (Rappels) Programmation C sous linux Communication avec les pipes
INTRODUCTION 1. Introduction 2. Les fonctionnalité de base d’un système d’exploitation 2
I. Introduction n Un système informatique moderne consiste à plusieurs composantes : § Un ou plusieurs processus § Mémoire principale § Périphériques : clavier, imprimante, carte réseau … n Très difficile voire impossible à gérer par les utilisateurs. n Les ordinateurs sont équipés d’une couche logicielle, pour l’interfaçage entre les utilisateurs et les ressources. une couche intitulé « Système d’exploitation » 3
I. Introduction Système Utilisateur 1. Utilisation pratique Logiciel Structure matérielle Logiciel 2. Indépendance visà-vis de la structure matérielle Logiciel système ou OS 3. Utilisation éfficace des composants matériels Programmes d’application 4
Les fonctionnalité de base des systèmes d’exploitation n Inter blocages L’interaction entre processus peut conduire a un inter blocage (la communication entre les processus, les sémaphores). n Gestion de la Mémoire La Mémoire centrale contient tous les programmes en cours exécution Gestion de l’espace d’adressage des processus (a chaque processus correspond une plage d’adresses). n Entrées/ Sorties Différents types de periph: claviers, video show, ecran, … Pilotes des Périphériques 5
Les fonctionnalité de base des systèmes d’exploitation n Fichiers Le SE présente les périphériques de stockage de manière abstraite. n Sécurité Protection des fichiers et contre les intrus et les virus. n Shell, Interface graphique C’est une interface entre l’utilisateur et le SE. n Les appels systèmes : L’interface entre le SE et les programmes utilisateurs est définie par un ensemble des appels systèmes. L’appel système est analogue a un appel procédural classique, mais il est effectué mode noyau. 6
Gestion du processus 1. Les processus ( Rappels) 2. Politiques d’ordonnancement classiques ( Rappels) 3. Programmation système C, sous Linux 7
Processus n n n n Modèle de processus Création d’un processus Fin d’un processus Hiérarchie des processus Etats des processus Implémentation des processus Communication entre les processus Processus Zombies 8
Processus Modèle de processus Multiprogrammation de quatre programmes b) 4 processus indépendants c) À chaque instant, un seul processus est actif a) 9
Processus Modèle de processus Mémoire cardinal : n Un espace mémoire associé à chaque processus qui permet : – Pointer sur la dernière instruction exécutés lors du dernier passage dans le CPU. – Enregistrer la valeur des variables
Processus Création d’un processus n Événements causant la création d’un processus: – Initialisation du système – Exécution d’un appel système demandé par un processus – Un usager demande de créer un processus – Initiation d’une tâche sur un système de traitement par lots. La création d’un nouveau processus résulte d’un appel système de création de processus, par un processus existant Sous UNIX: fork Sous WINDOWS: Create. Process 11
Processus Création d’un processus Sous UNIX // Crée une copie exacte du processus appelant pid_t fork(void) // Remplace l’image du processus appelant int execve( const char *fichier, char * const argv [], char * const envp[] ); 12
Processus La fin d’un processus Conditions de fin d’exécution: 1. Arrêt normal (volontaire) 2. Arrêt avec erreur (volontaire) 3. Arrêt avec erreur fatale (involontaire) 4. Tué par un autre processus (involontaire) 13
Processus La Hiérarchie des processus Notion de processus parent et enfants n Les processus parent et enfants continuent de s’exécuter de manière associée n Le processus enfant peut lui-même créer d’autres processus n 14
Processus Les états des processus En cours d’exécution (1) (3) (2) Prêt Bloqué (4) 15
Processus L’implémentation des processus Table de processus contenant une entrée par processus: Gestion du processus Gestion de la mémoire Gestion de fichier Registres Ptr vers segment de texte Répertoire racine Compteur ordinal Ptr vers segment de données Répertoire de travail Etat du processus Ptr vers segment de la pile Descripteur de fichiers Priorité ID user Paramètres d’ordonnancement ID groupe ID du processus Processus parent Groupe du processus Signaux Hre de début du processus Temps de traitement utilisé Temps de traitement du fils Hre de a prochaine alerte 16
Politiques d’ordonnancement classiques Ordonnancement classique de l’UC n Ordonnancement des taches dépendantes n Ordonnancement des systèmes temps réel n 17
Politiques d’ordonnancement classiques Ordonnancement Ordonnanceur (scheduler): partie du SE qui sélectionne les processus. Algo d’ordonnancement (scheduling algorithm) - ~ non-préemptif: sélectionne un processus, puis le laisse s’exécuter jusqu’à ce qu’il se bloque (E/S, wait) ou se termine. - ~ préemptif: sélectionne un processus et le laisse s’exécuter pendant un quantum, préemption par l’interruption horloge Comportement de Processus: - Processus de traitement - Processus d’E/S 18
Politiques d’ordonnancement classiques Rôle de l’ordonnanceur n Optimiser – Taux d’utilisation de l’UC: rapport entre la durée où l’UC est active et la durée totale – Débit: Nbre de programmes users traités en moyenne par unité de temps, – Temps de traitement moyen: moyenne des intervalles de temps séparant la soumission d’une tâche de sa fin d’exécution – Temps de traitement total: d’un ensemble de processus donné – Temps de réponse maximum: durée max séparant la soumission d’une requête par un processus et son 19 accomplissement
Politiques d’ordonnancement classiques Ordonnancement à 3 niveaux Processeur Job entrant File d’attente Ordonnanceur du processeur Or do d’a nna dm nce i ss u r ion Disque Mémoire Principale 20
Exercice - Rappels Processus q Temps d’arrivée Schéma temporel Pa 0 3, 2, 1, 2 Pb 1 1, 2 Pc 2 3, 4 Pd 3 1, 1 Dessinez les diagrammes de Gantt pour chacune des politiques d'ordonnancement suivantes : 1. Premier arrivé premier servi 2. Plus petit temps de séjour 3. Tourniquet, avec quantum = 3 unités 21
Programmation système, sous Linux n n n Introduction Généralités sur le développement sous Linux Outils de développement Exercices: exécution et compilation de programme C sous Linux TP 1: Implémentation des processus et des thread. 22
Programmation système, sous Linux 1. Introduction (1) La programmation système vise le développement de programmes qui font partie du SE ou qui en réalisent les fonctions, n Elle se distingue de la programmation des applications: n – Elle ne s’intéresse pas au traitement des données, mais aux interfaces, aux protocoles et à la gestion des ressources, telles que le temps et l’espace. n Elle inclut, l’accès aux fichiers, la programmation des périphériques (clavier, écran, modems…), la programmation réseau, la gestion de mémoire vive et des processeurs. 23
Programmation système, sous Linux 1. Introduction (2) n La programmation système adopte les langages tels que: – le langage assembleur – Et un langage de bas niveau (ex: langage C), Exemple: n SE de type UNIX (Linux, Free. BSD, Solaris…) – 90 % du code est écrit en C, – 10 % est en assembleur suivant les architectures cibles (x 86, SPARC…). 24
4. Programmation système, sous Linux Architecture de base de Linux 25
Programmation système, sous Linux Modes d’exécution et appels système n Le processeur possède deux modes de fonctionnement. – Mode utilisateur (ou user, ou protégé) : accès au matériel impossible, accès interdit à certaines zones mémoires et certaines instructions. – Mode noyau (ou kernel, ou moniteur, ou privilégié). 26
Programmation système, sous Linux Modes d’exécution et appels système Le noyau fournit des points d’entrée, «appelssystème» , que le programmeur invoque comme des sous-routines offrant des services variés. Exemple : n l’appel système write() permet d’écrire des données dans un fichier. n 27
Programmation système, sous Linux Bibliothèque Glib. C La bibliothèque C regroupe des fonctionnalités complémentaires de celles qui sont assurées par le noyau n Elle encapsule les appels-système dans des routines de plus haut niveau, qui sont donc plus aisément portables d’une machine à l’autre. n À partir de la version 2. 0 du noyau Linux, le projet GNU produit la bibliothèque Glib. C n La Glib. C 2. 3. 2 est la version la plus utilisée n 28
Programmation système, sous Linux c. Bibliothèque Glib. C n Nous utiliserons deux types de fonctions, – les appels- système, implémentés par le noyau et offrant un accès de bas niveau aux fonctionnalités du système, • opération assez coûteuse – les routines de bibliothèques, qui complètent les possibilités du noyau, et l’encadrent pour le rendre plus simple et plus portable. • mécanisme léger, équivalent à l’appel d’une sousroutine du programme 29
Programmation système, sous Linux Outils de développement n n n Le développement en C sous Linux met en œuvre plusieurs types d’utilitaires : Editeur de texte. Compilateur, . Editeur de liens, Débogueur, . Outils de documentation automatique… 30
Programmation système, sous Linux Outils de développement : Éditeurs de texte Emacs Vi Nedit 31
Programmation système, sous Linux Outils de développement : Compilateur, éditeur de liens Le compilateur C utilisé sous Linux est gcc (Gnu Compiler Collection). – On peut également l’invoquer sous le nom cc, ou g++ si on compile du code C++. n On peut lier les fichier objets produit via gcc : – gcc fichier 1. o fichier 2. o –o resultat n La compilation et l’édition de liens peuvent se faire sur une meme commande: – gcc –Wall –pedantic –g fichier 1. c fichier 2. c –o resultat n 32
Programmation système, sous Linux: Exercices 1) Créer un répertoire sous /home, intitulé TP. 2) Créer un fichier C sous le répertoire /home/TP. 3) Accéder le fichier via l’éditeur Emacs, et créer un programme qui permet d’afficher un message. 4) Compiler le programme. Lister les fichier dans TP. Qu’est ce que vous remarquer. 5) Exécuter le programme. 33
Travaux pratiques Série 1: création et Manipulation des processus. 34
Communication entre les processus : les pipes n n n Introduction Les caractéristiques des pipes sous Linux Création Lecture Écriture TP 2: communication entre les processus 35
Introduction - 1 n les pipes est le moyen de communication le plus simple entre les processus du même hiérarchies. n Il s’agit de deux tubes utilisées pour la communication d’une manière unidirectionnelle : 36
Introduction - 2 n Les pipes sont utilisées pour la communication des processus appartenant à la même faille, c’est-à-dire qu’ils ont le même père n Les pipes créés par le processus P 2 ne permettent la communication qu'entre les processus P 2 P 4, P 5 et leurs descendances. Les processus P 1 et P 3 ne peuvent accéder à ces pipes. 37
Caractéristiques d’un pipe - 1 n Les caractéristiques d’un pise se présentent comme suit : q La nature d'un pipe est de type FIFO. Un pipe est unidirectionnel: un processus peut soit lire soit écrire dans un pipe L'information disparaît après lecture et le pipe après le dernier processus La taille du pipe est limitée de 4 k à 20 k dépendant du matériel. Le pipe n'a pas de noms dans l'arborescence de Unix et donc son ouverture ne peut se faire à l'aide de open mais plutôt de pipe q q 38
Caractéristiques d’un pipe - 2 n l’utilisation des pipes nécessite le suivi de trois étapes : q. La création q. L’écriture q. La lecture 39
La Création d’un pipe int pipe(p) int p[0]; n L'appel système pipe retourne 2 descripteurs de fichier, p[0] ouvert pour la lecture et p[1] ouvert pour l'écriture. 40
L’écriture dans un pipe Effectuée par la primitive write(p[1], "ABCD", 4); écriture de 4 caractères dans le pipe. n n Un processus qui tente d'écrire sur un pipe plein reste bloqué (état endormi). n La fermeture est effectuée par le close. 41
La lecture à partir d’un pipe n Effectuée par la primitive read(p[0], buf, 5); lecture de 5 caractères du pipe dans un buffer. 42
Travaux pratiques Série 2: Communication entre les processus 43
Travaux pratiques Série 3: Hiérarchie des processus 44
Travaux pratiques Série 4: Processus Zombies 45