• Aucun résultat trouvé

Introduction aux systèmes d’exploitation

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction aux systèmes d’exploitation"

Copied!
132
0
0

Texte intégral

(1)

INTRODUCTION AUX SYSTÈMES

D’EXPLOITATION

Diomède Nzisabira

(2)

Avant-propos

L’Université virtuelle africaine (UVA) est fière de participer à l’accès croissant à l’éducation dans les pays africains grâce à la production de matériaux d’apprentissage de qualité. Nous sommes également fiers de contribuer à la connaissance globale car nos ressources éducatives ouvertes sont principalement accessibles depuis le continent africain.

Ce module a été développé dans le cadre d’un programme de diplôme et d’études en

informatique appliquée, en collaboration avec 18 institutions partenaires africaines de 16 pays.

Au total, 156 modules ont été développés ou traduits pour assurer la disponibilité en anglais, en français et en portugais. Ces modules ont également été mis à disposition en tant que ressources éducatives ouvertes (OER) sur oer.avu.org.

Au nom de l’Université virtuelle africaine et de notre patron, nos institutions partenaires, la Banque africaine de développement, je vous invite à utiliser ce module dans votre institution, pour votre propre éducation, à le partager aussi largement que possible et à participer

activement à l’AVU Communautés de pratique de votre intérêt. Nous nous sommes engagés à être en première ligne de développement et de partage de ressources éducatives ouvertes.

L’université virtuelle africaine (UVA) est une organisation intergouvernementale panafricain créée par une charte qui a pour mandat d’augmenter considérablement l’accès à une éducation et à une formation supérieures de qualité grâce à l’utilisation innovante des technologies de communication d’information. Une charte établissant l’UVA en tant

qu’organisation intergouvernementale a été signée à ce jour par dix-neuf (19) gouvernements africains - Kenya, Sénégal, Mauritanie, Mali, Côte d’Ivoire, Tanzanie, Mozambique, République démocratique du Congo, Bénin, Ghana, République de Guinée, Burkina Faso, Niger, Soudan du Sud, Soudan, Gambie, Guinée-Bissau, Éthiopie et Cap-Vert.

Les institutions suivantes ont participé au Programme des sciences informatiques appliquées:

(1) Université d’Abomey Calavi au Bénin; (2) Université de Ougagadougou au Burkina Faso;

(3) Université Lumière de Bujumbura au Burundi; (4) Université de Douala au Cameroun; (5) Université de Nouakchott en Mauritanie; (6) Université Gaston Berger au Sénégal; (7) Université des Sciences, Techniques et Technologies de Bamako au Mali (8) Institut de gestion et

d’administration publique du Ghana; (9) Université Kwame Nkrumah de Science et Technologie au Ghana; (10) L’Université Kenyatta au Kenya; (11) Egerton University au Kenya; (12) Université d’Addis-Abeba en Ethiopie (13) Université du Rwanda; (14) Université de Dar es-Salaam en Tanzanie; (15) Université Abdou Moumouni de Niamey au Niger; (16) Université Cheikh Anta

Diop au Sénégal; (17) Université Pedagógica au Mozambique; Et (18) L’Université de Gambie en Gambie.

Bakary Diallo Le Recteur

Université virtuelle africaine

(3)

Auteur

Diomede Nzisabira

Pair Réviseur

Sagbo Romaric

UVA – Coordination Académique

Dr. Marilena Cabral

Coordinateur global Sciences Informatiques Apliquées

Prof Tim Mwololo Waema

Coordinateur du module

Victor Odumuyiwa

Concepteurs pédagogiques

Elizabeth Mbasu Benta Ochola Diana Tuel

Equipe Média

Sidney McGregor Michal Abigael Koyier

Barry Savala Mercy Tabi Ojwang

Edwin Kiprono Josiah Mutsogu

Kelvin Muriithi Kefa Murimi

Victor Oluoch Otieno Gerisson Mulongo

(4)

Droits d’auteur

Ce document est publié dans les conditions de la Creative Commons Http://fr.wikipedia.org/wiki/Creative_Commons

Attribution http://creativecommons.org/licenses/by/2.5/

Le gabarit est copyright African Virtual University sous licence Creative Commons Attribution- ShareAlike 4.0 International License. CC-BY, SA

Supporté par

Projet Multinational II de l’UVA financé par la Banque africaine de développement.

(5)

Avant-propos 2

Crédits de production 3

Droits d’auteur 4

Supporté par 4

Aperçu sur du cours 10

Bienvenu dans le module d’introduction au système d’exploitation 10

Prérequis 10

Matériels 10

Objectifs du module 10

Unités 11

Unité 1: Principes des SE 11

Unité 2: Gestion des processus 11

Unité 3: Gestion de la mémoire 11

Unité 4 : Gestion des périphériques et systèmes de fichiers 11

Unité 5: La Sécurité et la protection 11

Unité 6: Thèmes spéciaux 11

Calendrier 11

Évaluation 12

Ressources documentaires 13

Les ressources documentaires à consulter sont: 13

Unité 0 13

Unité 1 13

Unité 2 13

Unité 3 13

Unité 4 13

Unité 5 14

Unité 6 14

(6)

Unité 0. Aperçu sur les systèmes d’exploitation 15

Qu’est-ce qu’un système informatique? 15

Introduction 15

Objectif de l’unité 15

Mots-clés 16

Activité 1 structure d’un système informatique 16

Introduction 16 1 Structure d’un ordinateur 16

2 Unité centrale de traitement 17

Résumé de l’unité 18

3 Mémoire centrale : 18

4 Les périphériques 18

Ressources documentaires 19

Évaluation de l’unité 19

Unité 1. Principes des Systèmes d’Exploitation 20

Quels sont les objectifs d’un système d’exploitation? 20

Introduction 20

Objectifs 20

Mots-clés 20

Activité1 SE comme gestionnaire de ressources 21

Introduction 21 Évaluation de l’unité 21

Activité 2 Evolution des SE 22

Introduction 22 Activité 3 Structure d’un SE 23

Introduction 23 Évaluation 23

Évaluation 25

Résumé de l’unité 25

Lectures et autres ressources 26

(7)

Introduction 27

Objectifs 27

Mots-clés 28

Activité 1 Processus et threads 28

Introduction 28 Processus et Programme 29

Évaluation de l’unité 38

Activité 2 Communication interprocessus 38

Introduction 38 Évaluation de l’activité : 42

Activité 2 3: Ordonnancement de processus 43

Introduction 43 Évaluation de l’activité : 49

Activité 2 4 : Interblocages 52

Introduction 52 Évaluation de l’activité : 60

Résumé de l’unité 61

Évaluation de l’activité : 61

Lectures et autres ressources 62

Unité 3. Gestion de la mémoire 63

Comment se fait la gestion de la mémoire par le SE? 63

Introduction 63

Objectifs 63

Mots-clés 63

Activité 1 Mémoire sans va-et-vient 64

Introduction 64 Évaluation de l’activité : 68

Activité 3 2 : Le va-et-vient 68

(8)

Introduction 68

Évaluation de l’activité : 72

Activité 3 La mémoire virtuelle 72

Introduction 72 Évaluation de l’unité : 79

Résumé de l’unité 80

Évaluation de l’unité d’apprentissage 80

Lectures et autres ressources 82

Unité 4. Gestion des périphérique et système de fichiers 83

Introduction 83

Objectifs 83

Mots-clés 84

Activité 1 Gestion des périphériques 84

Introduction 84 Activité 2. Le Système de fichiers 89

Introduction 89 Évaluation de l’activité 89

Évaluation de l’activité 94

Activité 3.Organisation de l’espace des ressources et des fichiers 94

Introduction 94 Évaluation de l’activité 102

Lectures et autres ressources 103

Résumé de l’unité 103

Évaluation de l’unité d’apprentissage 103

Unité 5. Sécurité et protection 104

Introduction 104

Objectifs 104

Mots-clés 104

Activité 1 Aperçu général sur la sécurité 105

Introduction 105

(9)

Évaluation de l’unité: 106

Activité 3 Les mécanismes de protection 108

Introduction 108 Évaluation de l’activité 108

Évaluation de l’activité 109

Lectures et autres ressources 110

Résumé de l’unité 110

Évaluation de l’unité 110

Unité 6. Thèmes spéciaux 111

Activité 1. Configuration et maintenance des SE 111

Introduction 111 Évaluation de l’activité 118

Activité 6 2 : Système temps réel 118

Introduction 118 Évaluation de l’unité 120

Activité 3 Virtualisation 120

Introduction 120 Évaluation de l’activité 129

Résumé de l’unité 129

Évaluation de l’unité 130

Lectures et autres ressources 130

(10)

Aperçu sur du cours

Bienvenu dans le module d’introduction au système d’exploitation

Un système d’exploitation (SE) est le centre névralgique de toute activité de traitement d’information sur un ordinateur. Un système d’exploitation est un programme qui fait fonctionner les autres programmes ainsi que la partie matérielle de l’ordinateur. Il agit comme un intermédiaire entre l’utilisateur, les logiciels d’application et la partie matérielle de la machine. Ce cours introduit les principes fondamentaux des systèmes d’exploitation, de sa structure et de son fonctionnement. Il traite l’ensemble des techniques matérielles et logicielles utilisées pour construire un SE et permet également d’acquérir des connaissances en rapport avec l’installation et la maintenance des SE.

Prérequis

Pour mieux aborder ce cours, il est préférable que l’apprenant ait des connaissances en architecture des ordinateurs, en structure de données.

Matériels

Le matériel nécessaire pour accomplir ce cours est:

• Un ordinateur ;

• Des SE (Windows et Linux) ;

• Une connexion Internet ;

• Un navigateur.

Objectifs du module

A la fin de ce module, l’apprenant devra être capable de:

• Définir un Système d’Exploitation;

• Expliquer la structure de base et le fonctionnement des systèmes d’exploitation;

• Fixer les problèmes en rapport avec la gestion des processus, la synchronisation, et proposer des solutions appropriées;

• Expliquer les bases de la gestion de la mémoire, l’utilisation de la mémoire virtuelle, et la structure des fichiers systèmes;

• Décrire les menaces et les mécanismes de protection des systèmes d’exploitation;

• Virtualiser les Système d’Exploitations et les applications.

(11)

Unités

Unité 1: Principes des SE

Cette unité passe en revue les principes fondamentaux des SE. Elle présente le SE comme une machine virtuelle évolutive et comme un gestionnaire d’événements et des tâches.

Unité 2: Gestion des processus

Cette unité expose les notions de processus, types de processus, des états d’un processus, de la gestion des threads, de l’ordonnancement, de la Communication interprocessus.

Unité 3: Gestion de la mémoire

Cette unité présente les différents types de mémoire ainsi que les mécanismes de leur gestion.

Unité 4 : Gestion des périphériques et systèmes de fichiers

Cette unité porte sur la notion de périphériques et de système de fichiers. Elle présente la structure des fichiers, les types de fichiers, les différents accès aux fichiers, l’implantation d’un système de fichiers ainsi que leur gestion.

Unité 5: La Sécurité et la protection

Cette unité traite la notion de sécurité et protection. Elle présente les menaces pour la sécurité, les problèmes de sécurité et la manière d’y faire face.

Unité 6: Thèmes spéciaux

Cette unité concerne les préalables lors de l’installation des SE (Windows et Linux), l’introduction aux systèmes embarqués et temps réel ainsi que la notion de virtualisation.

Calendrier

Unité Activités Période

Principes des Systèmes d’Exploitation

Activité 1:SE comme gestionnaire de ressources Activité 2:SE comme machine virtuelle

Activité 3: SE comme logiciel évolutif

1H

Gestion de processus

Activité 2.1 : Processus et threads

Activité 2.2 : Communication interprocessus Activité 2.3 : Ordonnancement de processus Activité 2.4 : Interblocages

6H 6H 6H 6H

(12)

Gestion de la mémoire

Activité 3.1 : Mémoire sans va-et-vient Activité 3.2 : Le va-et-vient

Activité 3.3 : La mémoire virtuelle

5H 5H 6H Gestion et

périphérique et système de fichiers

Activité 4.1 : Gestion des périphériques Activité 4.2 : Le Système de fichiers

Activité 4.3 : Organisation de l’espace des ressources et des fichiers

3H 3H 3H

Sécurité et protection

Activité 5.1 : Les bases de sécurité Activité 5.2 : Les attaques du système Activité 5.3 : Les mécanismes de protection

3H 3H 4H Thèmes

spéciaux

Activité 6.1 : Configuration et maintenance des SE Activité 6.2 : Les systèmes embarqués

Activité 6.3 : Les systèmes temps réels Activité 6.4 : La virtualisation

5H 5H 5H 5H

Évaluation

1 Evaluation

continue pondération (%)

1.1 Test I 10

1.2 Test II 15

1.3 Travail à domicile

10

1.4 Projet 25

2 Examen final 40

Total 100

(13)

Ressources documentaires

Les ressources documentaires à consulter sont:

Unité 0

https://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/

http://dept-info.labri.fr/ENSEIGNEMENT/archi/cours/archi.pdf

Unité 1

https://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/

http://dept-info.labri.fr/ENSEIGNEMENT/archi/cours/archi.pdf

http://www-int.impmc.upmc.fr/impmc/Enseignement/ye/informatique/systemes/chap1/13.html Andrew Tanenbaum, Systèmes d’exploitation 2ème édition, chapitre 1

Unité 2

Dijkstra, E.W., 1965. Solution of a Problem in Concurrent Programming Control.

Habermann, A.N. Prevention of System Deadlocks. CACM, Vol. 12, No. 7, July 1969, pp.

373-385.

Andrew Tanenbaum, Systèmes d’exploitation (2ème édition) page 169-195 http://www.groupes.polymtl.ca/inf3600/TransparentsAut2006/Ch1INF3600.pdf

Unité 3

Dijkstra, E.W., 1965. Solution of a Problem in Concurrent Programming Control.

Habermann, A.N. Prevention of System Deadlocks. CACM, Vol. 12, No. 7, July 1969, pp.

373-385.

Andrew Tanenbaum, Systèmes d’exploitation (2ème édition) page 201-278

Unité 4

Andrew Tanenbaum, Systèmes d’exploitation, 2eme édition, chapitre 6

(14)

Unité 5

https://www.google.com/search?q=Alexandre+viardin&ie=utf-8&oe=utf-8 ftp://ftp.pgpi.org/pub/pgp/6.5/docs/french/IntroToCrypto.pdf

Andew Tanenbaum, Systèmes d’exploitation 2ème édition, chapitre 9 https://www.irit.fr/~Zoubir.Mammeri/Cours/M1ASTRE/Chapitre1.pdf http://lanteri.isabelle.perso.sfr.fr/files/noyau1.pdf

Unité 6

http://sist.sysu.edu.cn/~isscwli/OSRef/Abraham%20Silberschatz-Operating%20System%20 Concepts%20%289th,2012.12%29.pdf

https://www.irit.fr/~Zoubir.Mammeri/Cours/M1ASTRE/Chapitre1.pdf http://lanteri.isabelle.perso.sfr.fr/files/noyau1.pdf

http://perso-etis.ensea.fr/miramond/Enseignement/M1/IE/Cours/CoursAndry_TR.pdf

(15)

Unité 0. Aperçu sur les systèmes d’exploitation

Qu’est-ce qu’un système informatique?

Introduction

Un système est un ensemble d’éléments interagissant entre eux selon certains principes ou règles. Un système est déterminé par :

• la nature de ses éléments constitutifs ;

• es interactions entre ces derniers ;

• sa frontière, c’est-à-dire le critère d’appartenance au système (déterminant si une entité appartient au système ou fait au contraire partie de son environnement) ;

• ses interactions avec son environnement.

Avec cette définition générique on peut alors se demander ce que c’est un système

informatique. Et qu’est-ce qu’un système informatique possède de spécifique par rapport aux autres systèmes ?

Objectif de l’unité

A la fin de cette unité d’apprentissage, les apprenants devront être à mesure de :

• définir un système informatique ;

• identifier les composants d’un système informatique ;

• définir un système d’exploitation.

(16)

Mots-clés

Ordinateur: Un ordinateur est une machine électronique qui fonctionne par la lecture séquentielle d’un ensemble d’instructions, organisées en programmes, qui lui font exécuter des opérations logiques et arithmétiques sur des chiffres binaire.

Informatique : L’informatique est le domaine d’activité scientifique, technique et industriel concernant le traitement automatique de l’information via l’exécution de programmes par ordinateur.

Système d’exploitation : Un logiciel système qui fait fonctionner les autres programmes (application)

Système Informatique : Un ensemble d’équipements destiné au traitement (enregistrement, modification, suppression, restitution) automatique de l’information.

Activité 1. structure d’un système informatique

Introduction

Un système informatique peut être défini comme un ensemble de moyens matériels et logiciels nécessaire pour satisfaire les besoins en traitement, conservation et restitution des données des utilisateurs. Un ordinateur est une machine électronique ayant des composants matériels et logiciels.

1 Structure d’un ordinateur

La structure de base d’un ordinateur comprend les éléments fondamentaux suivants :

• Une unité centrale de traitement (unité centrale).

• Une unité de mémoire, appelée mémoire centrale.

• Des unités de stockage.

• Des unités d’entrée/sortie.

• Un système de bus permettant de véhiculer l’information entre l’unité centrale et les autres unités.

(17)

Figure 1: Architecture d’un système informatique

Les différents constituants de l’ordinateur sont composés de circuits électroniques ou d’éléments magnétiques. Ils fonctionnent donc avec des impulsions électriques ou font intervenir un champ magnétique, et donnent lieu à deux états (ouvert ou fermé) ou bien (nord ou sud).

L’information élémentaire est le ‘Bit’ un bit ne peut prendre que deux valeurs notées : 0 et 1.

2 Unité centrale de traitement

L’unité centrale de traitement ou CPU (Central Processing Unit) est le centre de calcul et de contrôle d’un ordinateur, elle constitue le « cerveau » de l’ordinateur.

L’unité centrale qui réalise toutes les opérations demandées, elle est matérialisée

physiquement par un circuit électronique appelé « microprocesseur ». Un microprocesseur est caractérisé par :

• Sa marque (Intel ou cyrix).

• Sa fréquence d’horloge : le nombre d’opération que le microprocesseur peut effectuer en seconde (la fréquence atteint actuellement quelques Gigahertz).

1 KHz = 210 Hz 1 MHz = 220 Hz 1 GHz = 230 Hz

(18)

L’unité centrale comporte les éléments suivants :

• Unité arithmétique et logique : L’UAL est l’organe qui permet d’effectuer des opérations arithmétiques (addition, soustraction, multiplication, division), des opérations logiques (par exemple des comparaisons).

• Unité de commande : L’unité de commande gère le déroulement des instructions.

Elle décode et exécute les instructions demandées.

3 Mémoire centrale :

La mémoire centrale est un organe de l’ordinateur permettant d’enregistrer, de stocker et de restituer les informations. La mémoire centrale se présente sous la forme de petites barrettes que l’on peut enficher dans des supports, appelés Slots. La mémoire centrale d’un ordinateur est séparée en deux sections : la mémoire vive (mémoire volatile destinée à être lue et écrite) et la mémoire morte (mémoire non volatile destinée à être lue).

4 Les périphériques

Les périphériques sont les organes de l’ordinateur qui permettent de communiquer avec l’unité centrale et de stocker les informations d’une façon permanente. On en distingue trois catégories à savoir : les périphériques d’entrée, les périphériques de sortie et les périphériques d’entrée-sortie.

Résumé de l’unité

Un système d’exploitation est un logiciel fondamental pour la machine. C’est lui qui fait fonctionner les éléments matériels et logiciels de l’ordinateur. Le système d’exploitation fournit des services aux utilisateurs et aux programmes en cours d’exécution sur un système informatique. Un système d’exploitation est conçu avec des compromis sur les performances, la sécurité, la compatibilité et la maintenabilité.

(19)

Évaluation de l’unité

Cette évaluation est composée par une série de question de simple compréhension

Question1 :

Qu’est-ce qu’un ordinateur ? Question 2 :

Quels sont les principaux composants d’un ordinateur ? Question 3 :

Qu’est-ce qu’un périphérique ? Donnez les trois grandes catégories de périphériques

Question 4 :

Qu’est-ce qu’un système informatique ? Question 5 :

A quoi sert un système d’exploitation Système de notation :

• Pour toute réponse incorrecte (0 points)

• Pour une réponse incomplète (0,5 points)

• Pour toute réponse correcte (1 point) Rappel

Un ordinateur est composé essentiellement de deux grandes parties à savoir la partie matérielle et la partie logiciel.

Le système d’exploitation offre les services aux utilisateurs et aux autres composants du système informatique.

Ressources documentaires

https://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/

http://dept-info.labri.fr/ENSEIGNEMENT/archi/cours/archi.pdf

(20)

Unité 1. Principes des Systèmes d’Exploitation

Quels sont les objectifs d’un système d’exploitation?

Introduction

Les fondements d’un SE peuvent être vus sous deux grands axes: niveau utilisateur et niveau système. De plus, de par sa nature logiciel et ses fonctionnalités, le système d’exploitation est appelé à évoluer avec le temps en fonction de l’évolution du matériel et des besoins des utilisateurs.

Ainsi, trois principaux vues caractérisent les SE:

1. point de vue gestionnaire de ressources;

2. point de vue machine virtuelles;

3. logiciel évolutif.

Objectifs

A la fin de cette unité d’apprentissage, l’apprenant devra être à mesure de:

• décrire les principes et les objectifs des SE;

• décrire les différentes vues des SE;

• identifier les éléments pouvant faire évoluer les SE.

Mots-clés

Machine virtuelle: C’est une machine, un système installé sur un autre système donnant l’impression d’une machine réel

Système évolutif: Système/Logiciel capable d’évoluer

Ressources: Ce terme est utilisé pour désigner n’importe quel composant (matériel et logiciel) de la machine interne à la machine ou connecté à

celle-ci.

(21)

Activité1. SE comme gestionnaire de ressources

Introduction

Le SE étant la partie qui fait fonctionner les composant d’un ordinateur, nous allons dans cette activité focaliser notre attention sur ce logiciel system. Qu’est-ce qu’un SE ?

Définition

Le système d’exploitation peut être défini comme programme système qui commande l’exécution de programmes d’application. Il est responsable pour le chargement et l’exécution de programmes d’application. Il doit veiller à la disponibilité des configurations matérielles et logicielles requises avant d’exécuter le programme d’application

Rôle d’un SE

Dans un système informatique, le SE est le programme qui agit comme intermédiaire entre l’utilisateur est la partie matérielle. Un système informatique possède un ensemble de ressources pour la circulation, le traitement et le stockage de données.

Ainsi, du point de vue machine, un SE peut être considéré comme gestionnaire de ressources.

Un ensemble de demande d’accès aux ressources, pouvant même générés des conflits sont gérés par le SE. C’est lui qui décide qui accède à telle ressource, pour telle durée en garantissant un fonctionnement efficace du système. Le SE contrôle également les dispositifs d’E/S et les logiciels d’application afin de garantir un bon fonctionnement du système.

Conclusion

Un SE est un logiciel indispensable pour le fonctionnement de l’ordinateur. Il joue le rôle d’intermédiaire entre la partie matérielle et les utilisateurs.

Évaluation de l’unité

Question 1 :

Distinguer les logiciels d’application des logiciels d’exploitation.

Question 2 :

Qu’est-ce qui garantit la bonne utilisation des ressources sur un ordinateur ? Question 3 :

Existe-t-il un logiciel d’application indispensable au fonctionnement de l’ordinateur ? Justifier votre réponse.

Rappel :

Un SE peut être défini comme logiciel système qui commande l’exécution de programmes d’application. Il contrôle les ressources et dispositif d’entrée-sortie afin de garantir le bon fonctionnement de tout le système.

(22)

Activité 2. Evolution des SE

Introduction

Les ordinateurs ont évolué dans le temps. Cette évolution a été largement influencée par l’évolution des SE. Mais quelles sont les évolutions qu’a connues le système d’exploitation ? Cette question sera répondue dans cette activité.

Evolution

Étudier l’évolution des systèmes d’exploitation est utilisé pour comprendre les exigences clés d’un système d’exploitation. De plus, elle aide à comprendre la signification des principales caractéristiques des systèmes d’exploitation modernes.

Les systèmes d’exploitation et l’architecture de l’ordinateur sont historiquement liés. La combinaison de l’architecture de l’ordinateur avec un système d’exploitation est connue sous le nom de plate-forme informatique. Ces changements architecturaux affectent la structure et la performance des systèmes d’exploitation.

Les premiers ordinateurs ne possédaient pas vraiment de système d’exploitation. Le moniteur était chargé avec l’unique programme à exécuter qui se greffait sur ce système rudimentaire tout comme une fonction ou un sous-programme se greffe aujourd’hui sur le programme principal. Les entrées-sorties étaient rudimentaires, réduites à un ruban perforé, les programmes écrits en langage machine, c’est à dire directement codés en suite de chiffres, exécutés pas à pas et modifiés directement en mémoire au moyen d’un jeu de clés !

Vers 1950 est apparu le moniteur d’enchaînement. Il permettait l’exécution d’une série de travaux en séquence, c’est à dire l’un après l’autre. C’est l’ancêtre du traitement par lot. Il possédait déjà des fonctions de protection: maximum de temps par travail, supervision des périphériques, protection de la zone mémoire utilisée, gestion et abandon des travaux erronés.

Ces avancées étaient fondamentales car elles introduisaient un environnement autour du programme à exécuter.

L’informatique moderne naît dans les années 1960. On peut résumer rapidement ses avancées autour de l’invention des notions suivantes :

• Apparition des processeurs d’entrées-sorties

• Multiprogrammation, c’est à dire possibilité d’exécuter plusieurs programmes simultanément.

• Compilateurs

• Temps partagé

• Mémoire paginée virtuelle. Elle permet de faire fonctionner un ensemble de programmes dont la taille est supérieure à celle de la mémoire physique.

• Les communications

(23)

Les éléments ci-dessus sont en grande partie tirés de :

http://www-int.impmc.upmc.fr/impmc/Enseignement/ye/informatique/systemes/chap1/13.html Pour d’autres détails reportez-vous à la référence ci-dessous :

Andew Tanenbaum, Systèmes d’exploitation 2ème édition, pages 8-34 Conclusion

L’évolution des systèmes d’exploitation au cours des dernières décennies le SE ont connu plusieurs étapes de leurs évolution. Des machines sans SE on est arrivé actuellement aux ordinateurs avec les systèmes distribués.

Évaluation

Question 1 :

Donner les grandes étapes de l’évolution des SE. Expliquer brièvement les caractéristiques de chaque étape.

Question 2 :

Comment l’évolution des SE a-t-elle influencé celle des ordinateurs ? Rappels :

Les SE d’exploitation ont passé par de grandes étapes. Des machines sans systèmes d’exploitation aux systèmes distribués ces évolutions vont de paires avec celles des ordinateurs.

Activité 3. Structure d’un SE

Introduction

Dans cette activité nous allons détailler la structure interne d’un système d’exploitation.

Plusieurs approches d’implémentation des SE existe, nous allons donner un aperçu sur quelques-uns. Il s’agit notamment des systèmes monolithiques, des systèmes en couche, des machines virtuelles, des exonoyaux et des systèmes client-serveur.Pour des détails sur cette activité reportez-vous sur la documentation suivante :Andew Tanenbaum, Systèmes d’exploitation 2ème édition, pages 59-66

Système monolithique

Le SE est une structure hiérarchique écrit comme un ensemble de procédures dont chacune peut appeler n’importe quelle autre en cas de besoin. La structure de base suggérée par cette organisation est la suivante :

• un programme principal qui invoque la procédure de service ;

• un ensemble de procédures de services qui gèrent les appels système ;

• un ensemble de procédures utilitaires auxiliaires des procédures.

(24)

Les systèmes en couche

L’organisation d’un système en une série de couches est une généralisation de la structure précédente. Le système était composé par une série de couches hiérarchiques.

• La couche 0 fournissait le service de multiprogrammation CPU.

• La couche 1 était en charge de la gestion de la mémoire et des tampons

• La couche 2 se chargeait de la communication interprocessus et console

• La couche 3 était en charge des entrées sorties

• La couche 4 contenait les programmes utilisateurs

• La couche 5 était le processus opérateur.

Machines virtuelles

La plus part du temps, les utilisateurs des ordinateurs sont assis devant leur PC (unité centrale + les différents périphériques).Cependant, dans d’autres cas, les utilisateurs sont en face d’un

terminal connecté à un mainframe ou ordinateur connecté à d’autres ordinateurs en réseau.

Dans le premier cas, le système est conçu de telle sorte qu’un seul utilisateur monopolise toutes les ressources. Ainsi l’objectif de tels systèmes est l’efficacité dans l’accomplissement des tâches soumises par l’utilisateur. Ces systèmes sont donc conçus de telle sorte qu’elles soient faciles à utiliser avec pour seule considération les performances du système, sans se soucier de l’utilisation des ressources.Dans le second cas (utilisation d’un terminal), la même ressource peut être demandée par plusieurs utilisateurs chacun assis devant son propre terminal.

Dans de tels cas, la conception de ces SE met un accès particulier sur l’accès aux ressources. Ils doivent garantir la disponibilité de ressources et un partage équitable entre les requérants.

En dernier lieu, on distingue de systèmes où l’utilisateur possède des ressources dédiées (utilisation d’un ordinateur personnel) mais comportant des ressources partagées (serveur de fichiers, serveur d’impression, etc.).

Dans ce cas, la conception de tels SE doit chercher un compromis entre la gestion des ressources et l’utilisation individuelle de la machine.

L’ensemble de ces situations et différentes exigences des utilisateurs, nous montre qu’un SE est un système conçu de telle sorte qu’il garantit une facilité d’utilisation, une disponibilité et un partage des ressources dans un environnement où les utilisateurs ont besoins et exigences différents.

Les exonoyaux

C’est un système qui donne à chaque utilisateur un clone de l’ordinateur réel mais seulement pourvu d’un sous ensemble de ses ressources. L’exonoyau est la couche la plus basse ayant pour rôle d’allouer des ressources pour les machines virtuelles et de vérifier les tentatives d’accès à ces dernières.

(25)

Le modèle client-serveur

C’est la tendance actuelle des SE. Elle consiste à implémenter la plus grande partie du SE sous forme de processus utilisateur. La demande d’un service passe par l’envoie du service demandeur (le client) d’une requête au service pourvoyeur (serveur) qui rend le service et renvoie le résultat.

Conclusion

Les différents modèles des SE reposent sur une architecture bien définie. La première approche était la structure monolithique. Cette approche a été améliorée passant de la structure en couche, a été considérablement améliorée pour arriver maintenant à la structure actuelle qui est le système client-serveur.

Évaluation

Types de questions : simple question de compréhension

Question 1 : Indiquer les différents modèles des structures interne des SE Question 2 : Pourquoi la structure monolithique était une sorte de gâchis ? Question 3 : Quelles sont les spécificités du modèle client-serveur ?

Rappel :

La structure interne des SE repose sur une architecture bien précise. Il existe plusieurs architectures permettant de distinguer les principaux systèmes suivants : systèmes monolithiques, des systèmes en couche, des machines virtuelles, des exonoyaux et des systèmes client-serveur. Chaque architecture possède des spécificités particulières qui la distinguent des autres.

Résumé de l’unité

Les principes et objectifs des SE permet de considérer un SE sous trois angles:

1. une machine virtuelle:

• intermédiaire entre l’utilisateur et la partie matérielle (agit comme machine virtuelle);

• cache à l’utilisateur les complexités matérielles;

• fournit à l’utilisateur une interface conviviale.

2. Un gestionnaire des ressources

• Assure une gestion des ressources en garantissant leur disponibilité et leur partage;

• Améliore l’utilisation des ressources.

(26)

3. Logiciel évolutif

Evolue pour s’adapter aux changements:

• nouveaux matériels.

• besoin de nouveaux services;

• correction des erreurs latentes.

Évaluation de l’unité d’apprentissage

Donner les réponses aux questions suivantes:

1. Comment se présente la structure interne de l’ordinateur ?

2. Comment le modèle client-serveur peut être utilisé sur un seul ordinateur ? 3. Donner les avantages du SE comme machine virtuelle.

4. Quels sont les objectifs d’un SE ? Comment percevez-vous le SE comme gestionnaire de ressource ?

Système de notation :

L’évaluation de cette unité compte pour 20% répartie comme suit :

• L’évaluation des activités d’apprentissage : 10%

• L’évaluation des unités : 10%

Rétroaction

Critères d’évaluation

• Questions/Evaluation non répondues ou mal répondues : Echec

• Questions/Evaluation répondues partiellement ou réponse partiellement correcte : Moitié de point pour la question/évaluation correspondante

• Toutes les évaluations sont faites avec des réponses correctes : Totalité des points

Lectures et autres ressources

https://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/

http://dept-info.labri.fr/ENSEIGNEMENT/archi/cours/archi.pdf

http://www-int.impmc.upmc.fr/impmc/Enseignement/ye/informatique/systemes/chap1/13.html Andew Tanenbaum, Systèmes d’exploitation 2ème édition, chapitre 1

(27)

Unité 2. Gestion de processus

Introduction

La conception d’un système d’exploitation est intimement liée à la notion de processus. Un processus représente une abstraction d’un programme en cours d’exécution. L’exécution d’un processus suppose l’utilisation de ressources machines. Ces dernières étant limitées, l’intention d’y accéder à plusieurs crée la concurrence. Au cours de cette unité, nous allons présenter:

• la notion de processus;

• les états d’un processus;

• la gestion des threads;

• les communications inter-processus ; ainsi que

• l’interblocage (deadlock).

Objectifs

A la fin de ce chapitre, l’apprenant devra être à mesure de:

• Définir un processus et les threads;

• Décrire les différents états des processus;

• Différencier les processus et les threads;

• Démontrer une bonne connaissance de la gestion des processus et des threads;

• Démontrer une bonne connaissance des interblocages.

(28)

Mots-clés

Processus : Un processus est un programme en cours d’exécution auquel est associé un environnement processeur (Compteur Ordinal, Registre d’Etat, RSP , registres généraux) et un environnement mémoire appelés contexte du processus

Ressource : Une désigne toute entité dont a besoin un processus pour s’exécuter

Multiprogrammation : En Système d’Exploitation (SE), la multiprogrammation est la capacité d’un système d’exécuter à la suite plusieurs activités sans l’intervention de l’utilisateur. C’est une des premières capacités fournies par les SE dès la fin des années 1950.

Thread : Les threads sont des entités planifiées pour leur exécution par le processeur. Les threads autorisent les exécutions multiples dans le même environnement de processus avec une marge d’indépendance les uns par rapport aux autres.

Programme : C’est une suite ordonnée d’instructions élémentaires en vue d’accomplir une tâche donnée.

Concurrence : Les faits que deux ou plusieurs processus concourent à l’accès à une même ressource.

Ordonnancement : L’Ordonnancement est le fait d’agencer les processus par ordre de priorité.

Interblocage : C’est un état qui se produit lorsque deux processus concurrentes s’attendent mutuellement (l’un détenant la ressource que l’autre a besoin).

Activité 1. Processus et threads

Introduction

Tous les ordinateurs modernes sont capables de faire plusieurs tâches simultanément (exécuter un programme utilisateur par exemple et afficher du texte ainsi qu’effectuer des lectures sur disque, etc.). Dans un système multiprogrammé, le processeur bascule entre programme pour les servir en raison de petit laps de temps (au tour des dizaines ou centaines de millisecondes) ce qui fait que le processeur puisse intervenir pour plusieurs programmes à raison d’une seconde simulant ainsi le parallélisme. Pour le vrai parallélisme on a des systèmes multiprocesseurs se partageant la même mémoire physique. Le modèle conceptuel des processus séquentiels permettant de gérer le parallélisme ainsi que certaines de ses conséquences seront abordés dans cette activité.

(29)

Processus et Programme

Par définition, un processus est une abstraction d’un programme en cours d’exécution. Le processus est représenté dans le système par un PCB (Process Control Block), possède un état, peut communiquer des informations avec d’autres processus et peut concourir avec d’autres processus pour l’obtention d’une ressources.

Conceptuellement, un processus modélise l’exécution d’un programme sur un processeur virtuel disposant:

• d’un compteur ordinal;

• d’un jeu de registre;

• de mémoire;

• etc.

Le processeur physique commute entre les processus sous la direction d’un ordonnanceur.

Figure 2: Commutation entre processus

Dans le cas de systèmes à temps partagé, tous les processus progressent dans le temps, mais un seul s’exécute à la fois.Lorsque le processeur passe d’un processus à un autre la vitesse de traitement de processus n’est pas uniforme, ni même reproductible si le même processus s’exécutait une autre fois.Mais Quelle est la différence entre un processus et un programme?

L’analogie ci-dessus peut aider à mieux les différencier. Prenons un informaticien en train de confectionner un gâteau d’anniversaire de sa petite amie. Il dispose de:

• une cuisine équipée;

• la recette du gâteau;

• tous les ingrédients nécessaires: farine, œufs, etc.

Dans cette métaphore, la recette représente le programme, (algorithme exprimé dans la notation appropriée), l’informaticien représente le processeur (l’unité centrale) et les ingrédients sont des données d’entrée.Le processus est l’activité qui consiste à confectionner le gâteau: lecture de la recette, mélange des ingrédients, cuisson.

(30)

Soupons que notre informaticien se mette à hurler car piqué d’une guêpe.Son cerveau enregistre le point où il s’est arrêté dans la préparation du gâteau (l’état dans lequel le processus en cours est enregistré). Il commence à suivre les instructions de premiers secours. De ce fait, le processeur bascule du processus (confection gâteau) vers un autre processus de priorité supérieure (administrer antidote). Chaque processus découle d’un programme différent (recette et brochure sur les premiers soins). Une fois le problème de piqure résolu, l’informaticien retourne au point où il avait laissé la préparation du gâteau.

En résumé un processus est une activité. Il inclut un programme, une entrée, une sortie et un état.Un processeur peut être partagé par plusieurs processus à l’aide d’un algorithme d’ordonnancement intervenant pour déterminer à quel moment arrêter de travailler sur un processus pour en servir un autre.

Les SE ont besoin de savoir que tous les processus nécessaires existent bel et bien. Le SE doit permettre l’exécution concurrentielle de processus, et a besoin d’une méthode pour créer, et arrêter les processus au cours de leur activité.

Il existe essentiellement quatre événements provoquant la création d’un processus:

Initialisation du système

Lors de l’amorçage du SE, plusieurs processus sont créés. Certains sont des processus de premiers plans (processus qui interagissent avec l’utilisateur et accomplissent des tâches pour eux), d’autres sont des processus d’arrière-plan, non associés à une utilisation particulière de l’ordinateur. Ex: les processus d’arrière-plan conçu pour accepter les courriers électroniques entrant, ceux conçus pour accepter les requêtes entrantes de pages web hébergées sur l’ordinateur; etc.

Exécution d’un appel système de création de processus par un processus en cours d’exécution

Un processus en exécution peut émettre des appels systèmes pour créer un ou plusieurs nouveaux processus. Cela est particulièrement utile lorsque la tâche à accomplir peut être divisée en plusieurs processus qui interagissent entre eux tout en étant indépendants.

Requête utilisateur sollicitant la création d’un nouveau processus

Un nouveau processus peut également être créé à la demande d’un utilisateur. Cela passe par la saisie d’une commande ou dans le mode graphique le clic sur une icône. Ces deux cas de figures lancent un nouveau processus qui exécute le programme concerné.

initiation d’un travail en traitement par lots

Ce cas de figure concerne les gros mainframes. Les utilisateurs peuvent soumettre des tâches de traitement par lots au système. Lorsque le SE constate qu’il dispose des ressources nécessaires à l’exécution d’un job supplémentaire, il crée un nouveau processus et exécute le job suivant de la file d’attente.

(31)

Une fois qu’un processus a été créé, il commence à s’exécuter quelle que soit sa tâche et il finira à s’arrêter pour diverses raisons:

• Arrêt normal (fin de la tâche qui leur incombait);

• Arrêt pour erreur (demande d’exécution d’un programme qui n’existe pas);

• Arrêt pour erreur fatale (bogue du programme);

• Le processus est arrêté par un autre processus.

Types de processus

Les processus interactifs

Les processus interactifs sont démarrés par l’utilisateur connecté au système. Ils sont initialisés et contrôlés via une session terminale. Ces processus peuvent s’exécuter en avant plan du terminal qui a lancé le programme. Dans ce cas aucune autre application ne peut être lancée aussi longtemps que le processus est en train de s’exécuter en avant plan.

Lorsque ces processus s’exécutent en arrière-plan, de nouvelles commandes peuvent être acceptées par le terminal pendant l’exécution du programme. Lors de l’exécution des programmes en arrière-plan, le système n’interdit pas l’utilisateur à faire autre chose sur le terminal utilisé pour lancer le programme. Le job control du noyau du SE offre une gestion aisée de plusieurs processus. Ce mécanisme fait passer les processus de l’avant plan à l’arrière- plan. En utilisant ce système, des programmes peuvent également être lancés immédiatement en arrière-plan.

Les processus automatiques

Les processus automatiques ou processus par lot sont des processus non connectés au

terminal. Ce sont plutôt de tâches mises dans une file d’attente pour être exécutées. Cette file d’attente est gérée selon le mode du premier entré- premier sorti (First in, First out : FIFO). De telles tâches sont exécutées selon les critères suivants:

• A une certaine période (date et heure): exécutée selon la commande at;

• Au moment où le système est suffisamment moins occupé pour accepter d’autres travaux (jobs): exécutées en utilisant la commande par lot (batch command).

Par défaut les tâches sont mises dans une file dans laquelle elles vont attendre l’exécution jusqu’au moment où le système de chargement est en-dessous de 0.8.

Dans les environnements plus larges, le traitement par lots peut être privilégié lorsque de grandes quantités de données doivent être traitées ou lorsque des tâches gourmandes en ressources sont en attente alors que le système est suffisamment chargé. Le traitement par lots est aussi utilisé dans l’optimisation des performances du système.

(32)

Les daemons

Les daemons sont des processus serveurs exécutés continuellement. La plus part de temps, ils sont initialisés au démarrage du système et attendent en arrière-plan jusqu’à ce qu’une demande de leur service soit faite. Un exemple est le daemon, xinetd, démarré dans presque toutes les procédures de démarrage. Après le démarrage du système, ce daemon réseau attend qu’un programme client, le client ftp par exemple, ait besoin de se connecter.

Les états d’un processus

Rappelons qu’un processus est une instance d’un programme en exécution mais pointant le fait qu’un programme n’est pas à lui-même un processus, c’est une entité passive. Un processus est une entité active (dynamique) dont on peut étudier l’état au cours du temps. Un processus peut-être dans trois états différents : élu, prêt, bloqué.

• Un processus est dit élu s’il est en cours d’exécution sur le processeur. Dans le cas d’une machine multiprocesseurs plusieurs processus peuvent être élus en même temps. Notons cependant que le nombre de processus élu doit être égal au nombre de processeurs. Lorsque le quantum de temps attribué au processus élu est épuisé, l’ordonnanceur est appelé de façon asynchrone par interruption et élit un autre processus parmi les processus prêt. Le processus qui était en cours d’exécution passe de l’état élu à l’état prêt.

• Un processus est dit prêt s’il est suspendu en faveur d’un autre. Pour un processus prêt, il ne lui manque que la source processeur pour s’exécuter.

• Lorsqu’un processus en exécution attend un événement externe (décompte d’horloge, attente des données, etc.), il s’en dort et passe dans l’état bloqué.

L’ordonnanceur appelé de façon explicite par ledit processus, élit un autre processus parmi les processus prêt. Lorsque l’événement externe attendu se produit le système d’exploitation se charge de son traitement, puisque le processus se trouve dans un état bloqué. Pour ce faire, le SE interrompt

temporairement le processus en exécution pour traiter les données reçues et faire passer le processus bloqué à l’état prêt.

Le schéma ci-dessous matérialise les différentes transitions.

Figure 3: Les états d’un processus

(33)

Gestion des threads

Dans les SE traditionnels, chaque processus possède un espace d’adressage et un thread de contrôle unique. Il arrive cependant qu’il soit souhaitable de disposer de plusieurs threads de contrôle dans le même espace d’adressage, ceux-ci s’exécutant quasiment parallèle comme s’il s’agissait de processus distincts. Cet état de fait sera abordé dans cette partie.

Le modèle de thread

Rappelons que le modèle de processus est fondé sur deux concepts: le regroupement de ressources et l’exécution. Il est parfois nécessaire de les séparer et c’est là qu’intervient les threads.

Un processus est un espace d’adressage contenant un programme et des données mais aussi d’autres ressources (fichiers ouverts, les processus enfants, les alertes en attente, les handlers de signal, les informations de décompte, etc.). En rassemblant ces ressources sous forme de processus, on facilite leur gestion.

Sous un autre angle, les processus peuvent être vus en considérant leur thread d’exécution (chemin d’exécution) que l’on se contente d’appeler thread.

Le thread inclut:

• un compteur ordinal qui effectue le suivi des instructions à exécuter;

• des registres qui détiennent ses variables de travail en cours; et

• une pile qui contient l’historique de l’exécution.

Bien qu’un thread s’exécute dans un processus, ce sont deux concepts distincts qui peuvent être traités séparément. Les processus servent à regrouper les ressources et les threads sont les entités planifiées pour leur exécution par le processeur.

Les threads autorisent les exécutions multiples dans le même environnement de processus avec une marge d’indépendance les uns par rapport aux autres. Cela est comparable au fait que plusieurs processus s’exécutent en parallèle sur un ordinateur.

Dans le premier cas, les threads partagent un espace d’adressage, les fichiers ouverts et les autres ressources.

Dans le second cas, les processus partagent la même mémoire physique, les disques, les imprimantes et les autres ressources.

Etant donné que les threads ont certaines propriétés des processus, on les qualifie de processus léger. Le terme multithreading est également employé pour désigner la situation dans laquelle plusieurs threads sont présents dans un processus.

(34)

Figure 4: Processus avec un espace d’adressage et un thread de contrôle unique Comme le montre la figure ci-dessus il s’agit de trois processus traditionnels, chacun

possédant son propre espace d’adressage et un thread de contrôle unique.Ci-dessous, nous présentons un cas de figure où on a un processus unique avec trois threads de contrôle.

Figure 5: Exemple d’un multithreading

Bien que dans les deux cas on est en présence de trois threads, les deux situations sont différentes. Dans le premier cas, chaque thread fonctionne dans un espace d’adressage différent, tandis que dans le second cas les trois threads se partagent le même espace d’adressage (multithreading).Dans ce dernier cas, le processeur bascule rapidement entre les threads donnant une illusion d’une exécution en parallèle de threads chacun sur son propre processus. Etant donné que ces threads partage le même espace d’adressage, ils partagent également les mêmes variables globales (en lecture/écriture) et aucune protection n’existe entre les threads d’un même processus. Les threads exploitent également le même jeu de fichiers ouverts, de processus enfant; d’alertes et de signaux, etc.

Généralement, chaque thread appelle des procédures différentes et donc un historique d’exécution différent. C’est pour cela que chaque thread a besoin de sa propre pile. Celle-ci contient un frame pour chaque procédure invoquée mais qui n’a encore rien retourné. Chaque frame contient, les variables locales de la procédure et l’adresse de retour à employer une fois l’appel de procédure exécuté. Le schéma ci-dessous présente un processus ayant trois threads.

(35)

Figure 6: Exemple d’un multithreading avec pile de thread L’utilisation de thread

Dans de nombreuses applications plusieurs activités ont lieu simultanément. En décomposant une application en plusieurs threads séquentiels, qui vont s’exécuter presque en parallèle, le modèle de programmation devient plus simple (processus).

Avec les threads, un élément nouveau apparaît: “la capacité pour les entités parallèles à partager un espace d’adressage et toutes ses données”.

De plus, étant donné qu’aucune ressource n’est associée aux threads, ils deviennent plus faciles à créer et à détruire que les processus. Les threads peuvent également améliorer le fonctionnement d’une application.

Notons enfin que les threads sont utiles sur les systèmes multiprocesseurs, sur lesquels un véritable parallélisme est possible.

L’implémentation de threads dans l’espace utilisateur

L’implémentation de threads dans l’espace utilisateur consiste à placer le paquetage de threads dans l’espace utilisateur. Cela reste transparent au noyau qui les prend en charge comme des processus ordinaires monothreads. Cela est pratique pour les SE ne supportant pas les threads.

Lorsque les threads sont gérés dans l’espace utilisateur, chaque processus a besoin de sa propre table de threads privé pour le suivi des threads du processus. Les propriétés des threads concernés par cette table sont: le compteur ordinal, le pointeur de pile, les registres, l’état, etc. La table des threads est gérée par le système d’exécution (run time system).

Lorsqu’un thread passe à l’un des états prêt ou bloqué, les informations nécessaires à son redémarrage sont stockées dans la table de threads de la même manière que le noyau stocke les informations relatives aux processus dans la table des processus.

(36)

Lorsqu’un thread accompli une action susceptible de le bloquer localement, par exemple il attend qu’un autre thread de son processus termine une tâche quelconque, il invoque une procédure du système d’exécution. C’est cette dernière qui détermine si le thread doit être placé en état bloqué. Dans ce cas, elle stocke les registres du thread dans la table des threads, sonde la table à la recherche d’un thread prêt à s’exécuter et recharge le registre machine avec les valeurs enregistrée du nouveau thread. Dès que le pointeur de la pile et le compteur ordinal ont basculés, le nouveau thread recommence à s’exécuter automatiquement. Si la machine possède une instruction pour stocker tous les registres et une autre pour les charger, le basculement complet du thread peut s’accomplir en quelques instructions seulement. Ce type de basculement est plus rapide que la rétention dans le noyau.

L’ordonnancement des threads est plus rapide par rapport à l’ordonnancement des processus :

• Utilisation des procédures locales;

• pas de nécessité d’interruption;

• pas de changement de contexte;

• pas de nécessité de vider la cache mémoire; etc.

L’implémentation de threads dans le noyau

Dans ce mode, le noyau a connaissance des threads et en assure la gestion. Ainsi, il n’est pas nécessaire de disposer d’un système d’exécution pour chaque thread comme précédemment.

En outre, il n’y a pas de table de thread dans chaque processus. Cette table se retrouve dans le noyau et est chargé du suivi de tous les threads du système. Un thread qui veut créer un nouveau thread ou détruire un thread existant effectue un appel noyau qui prend en charge la création ou la destruction en actualisant la table des threads du noyau. Cette table dispose pour chaque thread de registre, de l’état et d’autres informations. Notons que ces informations sont les mêmes que pour les threads utilisateurs la seule différence est qu’ils sont localisés dans le noyau.A côté de cela, le noyau maintien également une table des processus traditions pour assurer leur suivi.

Lorsqu’un thread se bloque, le noyau peut exécuter un autre prêt du même processus ou d’un autre processus. Avec les threads utilisateurs, le système d’exécution continue d’exécuter des threads de son propre processus jusqu’à ce que le noyau cesse de lui allouer du temps processeur ou qu’il n’y ait plus de thread prêt. La création et la destruction des threads étant lourd, certains systèmes recyclent leurs threads. Lorsqu’un thread est détruit, il est marqué comme étant non exécutables mais ses structures de données noyaux n’en sont pas autrement affectées. Lorsqu’un nouveau thread doit être crée, un ancien thread est réactivé, ce qui réduit la surcharge. Le recyclage des threads est également envisageable pour les threads utilisateurs.

Si un thread d’un processus donné provoque un défaut de page, le noyau peut aisément déterminer si le processus possède d’autres threads exécutables. Si tel est le cas, il peur en exécuter un en attendant la récupération sur le disque de la page sollicitée. Le principal inconvénient des threads noyaux est qu’un appel système est une démarche lourde. Ainsi, si les opérations sur les threads (création, arrêt; etc.) sont nombreuses, la surcharge sera importante.

(37)

Les implémentations hybrides

Plusieurs méthodes ont été testées pour tenter de combiner les avantages des threads utilisateurs et noyau. L’une d’elle consiste à employer les threads noyaux puis à multiplexer les threads utilisateurs sur un ou plusieurs threads noyaux.

Dans cette conception, le noyau ne connait que les threads noyaux et l’ordonnance. Certains de ces threads peuvent disposer de threads utilisateurs multiplexés. Ceux-ci sont créés, détruit et ordonnancés exactement comme les threads utilisateurs d’un processus qui s’exécute sur un système d’exploitation dépourvu de fonctionnalités multithreading. Dans ce modèle, chaque thread noyau possède un jeu donné de thread utilisateurs qu’il utilise tour à tour.

Une autre approche nommée activation de l’ordonnancement poursuit les objectifs qui consistent à imiter la fonctionnalité des threads noyaux mais avec les performances supérieures et la grande souplesse qu’offre les paquetages mis en œuvres dans l’espace utilisateur.

Lorsqu’on emploi les activations de l’ordonnanceur, le noyau assigne un certain nombre de processeurs virtuel à chaque processus et laisse le système d’exécution (espace utilisateur) allouer des threads aux processeurs. Ce mécanisme peut également être exploité sur un multi processeur dans lequel les processeurs virtuels peuvent être de véritables CPU. Le nombre de processeurs virtuels alloués à un processus est initialement de 1 mais le processus peut en solliciter d’autres. Notons qu’il peut également retourner les processeurs dont il n’a plus besoin. Le noyau peut également récupérer des processeurs virtuels déjà alloué afin de les assigner à d’autres processus prioritaires.

Conclusion

Pour pallier les effets d’interruption, les systèmes d’exploitation offrent un modèle conceptuel de processus séquentiels s’exécutant en parallèle. Les peuvent être créés et arrêter

dynamiquement. Chaque processus possède son propre espace d’adressage. Dans certaines applications, il est intéressant de disposer de plusieurs threads de contrôle au sein d’un même processus. Les threads d’un processus sont ordonnancés indépendamment les uns des autres et chacun possède sa propre pile mais partagent tous un espace d’adressage commun.

Cette activité d’apprentissage a montré de long en large, les processus et les threads ainsi que les différentes implémentations des threads.

(38)

Évaluation de l’unité

1. Quelle est la différence entre un processus et un programme ? 2. Quels sont les états possibles pour un processus ?

3. A la figure 2, trois états de processus apparaissent. En théorie avec trois états on pourrait avoir six transitions (deux en sortie de chaque état). Cependant on ne voit que quatre transitions commentez cet état de fait.

4. Supposons que vous devriez concevoir une architecture informatique avancée qui effectuerait la commutation entre processus au niveau matériel au lieu d’employer les interruptions. De quelle information le processeur aurait-il besoin. Décrire comment cela pourrait fonctionner.

5. Lorsqu’une interruption ou un appel système transfère le contrôle au système d’exploitation, on utilise généralement une zone de pile du noyau distincte de la pile du processus interrompu. Expliquer pourquoi.

Rappel :

Les ordinateurs modernes sont conçus pour exécuter un à plusieurs programmes utilisateurs. Pour ce faire, le processeur bascule entre programme pour les servir en raison de petit laps de temps (au tour des dizaines ou centaines de millisecondes) ce qui fait que le processeur simule le parallélisme. Pour qu’il y ait un vrai parallélisme il faut des systèmes multiprocesseurs se partageant la même mémoire physique. Toutes ces différentes notions sont essentiellement basées sur le modèle de processus.

Activité 2. Communication interprocessus

Introduction

Il arrive que les processus aient besoin de communiquer entre eux par exemple dans pipeline du shell, lorsque la sortie d’un processus doit être passée à un autre processus, etc. Il est donc préférable que cette communication se fasse de manière structurée. Au cours de cette activité nous allons aborder quelques-uns des problèmes liés à la communication interprocessus.

Les notions de base de communication interprocessus

Les processus d’un système ne s’exécutent pas tous de manière isolée. Certains se trouvent en compétition pour une ressource donnée, d’autres ont besoin de coopérer et nécessitent par conséquent des moyens de communication et de synchronisation. Ainsi, les principaux problèmes liés à la communication interprocessus sont les suivants:

(39)

• Comment un processus fait-il pour passer des informations à un autre processus?

• Comment éviter que deux processus ou plus ne produisent pas de conflits lorsqu’ils s’engagent dans des activités critiques (tentative de récupération du dernier Mo de mémoire par deux processus?

• Comment faire le séquençage en présence de dépendances (un processus B qui travaille sur des données produites par A, doit attendre que A ait terminé pour pouvoir commencer)?

Pour étayer la communication interprocessus, prenons pour exemple le spouleur d’impression.

Les noms des fichiers à imprimer sont stockés dans un répertoire de spool et supprimés au fur et à mesure de leur impression. Le répertoire de spool possède plusieurs entrées numérotées de manière croissante et chaque entrée peut loger un nom de fichier. Pour gérer ce répertoire, deux variables globales partagées (in et out) sont utilisées. La variable in pointe vers la

prochaine entrée libre du répertoire tandis que la variable out pointe vers le prochain fichier à imprimer.Le processus qui veut lancer l’impression lit la valeur de la variable globale in, la met dans sa variable locale suivant , puis place le nom de fichier dans l’entrée libre, du répertoire de spool, désignée par le contenu de suivant puis met à jour la variable globale in en lui affectant la valeur de suivant incrémentée de 1.

Le pseudo code correspondant à cette séquence est le suivant:

suivant=in;

MettreNomDeFichier (suivant);

in=suivant+1;

Admettons qu’à un instant t, in=7 et out =4 et que deux processus A et B désirent lancer l’impression.

Figure 7: Intention d’accès simultanée de deux processus à la mémoire partagée

(40)

Dans ce cas, chaque processus doit exécuter la séquence d’actions d’ajout d’une tâche d’impression (voir le pseudo-code ci-dessus indiqué). Supposons que le processus A s’exécute et est interrompu par l’ordonnanceur avant de mettre à jour la variable globale in (c’est à dire interrompu quelque part entre la 1ère et la 3ème instruction). L’ordonnanceur jugeant que le processus A a eu suffisamment de temps bascule vers le processus B. Pour ce cas les deux processus vont utiliser le même numéro, de l’entrée libre, pour placer la tâche d’impression et l’une des tâches sera sans doute supprimée. Cependant au regard du contenu des variables in et out, le répertoire va rester cohérent et aucune anomalie ne sera détectée par le CPU.

De tels cas de figure sont appelés de situations de concurrences (race conditions en anglais).

Face à une telle situation, il est donc indispensable que le système fournisse un moyen sûr de communication interprocessus permettant la synchronisation et l’échange de données.

Sections critiques

Pour résoudre le cas des problèmes d’accès concurrents (voir exemple ci-dessus), il faut éviter que plus d’un processus accèdent (en lecture/écriture) à une donnée partagée en même temps. Cela consiste à mettre en place un processus d’exclusion mutuelle à la ressource partagée aussi appelée section critique.

Quatre conditions sont à remplir pour résoudre ce problème:

1. deux processus ne doivent pas se trouver parallèlement dans leurs sections critiques;

2. il ne faut pas faire de suppositions sur la vitesse ou le nombre de processeurs mis en œuvre;

3. Aucun processus s’exécutant en dehors de la section critique ne doit bloquer d’autres processus;

4. aucun processus ne dit attendre indéfiniment pour entrer dans sa section critique.

5. Il existe plusieurs façons de mettre en œuvre l’exclusion mutuelle. Ci-dessous nous allons détailler quelques-unes.

Masquage des interruptions

Le moyen le plus simple d’éviter les accès concurrents est de masquer les interruptions avant d’entrer dans la section critique et de les restaurer à la sortie de celle-ci. Cela permettra d’éviter la suspension du processus en section critique au profit d’un autre processus, puisque l’inhibition des interruptions empêche l’ordonnanceur de s’exécuter. Les principaux problèmes en rapport avec le masquage d’interruption sont les suivants:

• risque d’accaparer le processeur par un seul processus si celui-ci se maintient longtemps en section critique;

• risque de blocage du système si le processus en section critique oublie de restaurer les interruptions.

Références

Documents relatifs

L’analyse du fonctionnement des systèmes d’élevage se fait au travers de trois approches : - un suivi annuel, afin d’établir des bilans technico-économiques et environnementaux,

Tableau 1 : Résultats de 25 exploitations d’élevage bovins viande en agriculture biologique entre 2008 et 2010, source : suivis du projet système... Les charges opérationnelles des

• Multiplier judicieusement chaque équation, afin qu’en additionnant membre à membre les deux équations, l’une des deux inconnues s’élimine. Ce choix est conditionné par

Il se peut ´egalement que l’une des deux machines, le serveur par exemple, soit persuad´e qu’il y a congestion, alors qu’en fait le client ignore d´elib´er´ement les

• Mémoire: code machine, données, pile, tas, adressages, représentation de l’information.. INF3135 Construction et maintenance

Question 1: Déterminer la vitesse angulaire de chaque moteur (en tr/min) qui permet de satisfaire le critère de vitesse angulaire du cahier des charges.. Fonction de transfert

Ce panneau modulaire en polycarbonate de 16 mm est utilisé dans deux systèmes de vitrage très efficaces et offre une finition à joint debout ou à joint affleurant afin

Chemin de fichier exprimé depuis un autre répertoire que la racine du système de fichiers (généralement par rapport au répertoire de travail, voir plus loin). Exemple