Académique Documents
Professionnel Documents
Culture Documents
Système d’exploitation
comparé
Edition 2024
Page |2
PRELUDE
Le contenu que nous proposons dans ce document d’une centaine de pages est
adapté au contexte actuel, aux pré-requis en générale et au niveau des
apprenants. Les chapitres préliminaires tentent de balayer les notions de base
des systèmes d’exploitation en général pour permettre à l’auditoire d’avoir un
même niveau avant de nous attaquer aux notions de comparaison entre
quelques systèmes d’exploitation. Une partie est consacrée à la programmation
Shell et Batch pour l’automatisation des tâches.
Ce cours prévoit des séances des travaux en salle machine. Les systèmes
d’exploitation qui seront essentiellement utilisés sont UNIX/Linux, Windows et
MS-DOS.
PRESENTATION DU COURS
1. OBJECTIFS
• Donner à l’étudiant les notions de base sur les systèmes d’exploitation et
surtout montrer la place du système d’exploitation dans un système
informatique.
• Faire une étude approfondie des fonctionnalités d’un système
d’exploitation par des exercices et des exposés.
• Mener sur le plan théorique et pratique, une étude comparative de
quelques systèmes d’exploitation couramment utilisés notamment MS-
DOS, Windows et UNIX/Linux.
• Apprendre aux étudiants comment automatiser les tâches routinières par
la programmation (BATCH et SHELL).
2. CONTENU DU COURS
4. MODE D’EVALUATION
L’évaluation sera faite sur base de la présence, la participation au cours, les
travaux pratiques, interrogations et sous forme d’examen oral et / ou d’examen
écrit. Des exposés sur les sujets d’actualité sur les systèmes d’exploitation sont
aussi prévus dans le cadre de ce cours.
5. PREREQUIS
L’étudiant qui suivra ce cours doit avoir des notions de base sur :
• L’informatique générale
• L’architecture des ordinateurs
• L’algorithmique
• La programmation
• La statistique et les mathématiques
Dans ce chapitre nous allons aborder les notions de base sur les systèmes
d’exploitation en générale. Les notions essentiellement abordées sont la
création et la destruction des processus, les algorithmes d’ordonnancement et
la gestion de la mémoire.
a. Informatique
C’est une science de traitement automatique des informations, au moyen d’une
machine électronique appelé Ordinateur et de programmes appelés logiciels,
pour obtenir des résultats.
• Science : elle obéit aux lois.
• Traitement : transformation
• Automatique : sans l’intervention de l’homme
• Informations : données numériques, alphanumériques, visuelles, sonores,
tactiles, etc.
• Electronique : courant faible
• Ordinateur : matériel
• Programmes (logiciels) : textes (ensemble de phrases) écrits dans des
langages de programmation qui permettent à l’ordinateur de traiter,
mémoriser et restituer les résultats.
Ordinateur = ensemble de matériel + logiciels
Matériel = Unité centrale + périphériques
Unité centrale = ensemble de processeurs (un ou plusieurs) + mémoire
principale + disques+ horloges + interfaces de connexion réseaux+pores+…
Périphériques = entrées (acquisitions de données) + sorties (sortie des
résultats)+ entrées-sorties ( lecteurs de disques, modem)+stockages ( mémoires
de masses).
Logiciels = Logiciels de base (systèmes d’exploitation) + logiciels d’application
Système Interface
d’Exploitation
Utilisateur
En résumé :
ALU
U.C
ACCU
c. Système à microprocesseurs
Les principales fonctions assurées par un système d’exploitation sont les suivantes :
• gestion de la mémoire principale et des mémoires secondaires, exécution
des E/S à faible débit (terminaux, imprimantes) ou haut débit (disques,
bandes),
• multiprogrammation, temps partagé, parallélisme : interruption,
ordonnancement, répartition en mémoire, partage des données
• lancement des outils du système (compilateurs, environnement
utilisateur,...) et des outils
• pour l'administrateur du système (création de points d'entrée,
modification de privilèges,...),
• Lancement des travaux,
• protection, sécurité ; facturation des services,
• réseaux
• Systèmes ouverts :
Par contre ces types de systèmes sont caractérisés par l’extensibilité accrue : il
est possible de rajouter des fonctionnalités et des abstractions sans avoir à
repenser le système et même sans avoir à l'arrêter sur une machine. Cela
implique souvent une conception modulaire basée sur le modèle « client-
serveur». Cela implique aussi une communication entre systèmes, nécessitant
des modules spécialisés.
l'exécution d'un programme n'est plus valide au delà d'un certain temps connu
et déterminé à l'avance. Généralement, on trouve des systèmes « temps réel »
dans les systèmes embarqués (satellites, sondes, avions, trains, téléphones
portables, ...).
Pour ces raisons de performance, les systèmes généralistes basés sur une
technologie à micro-noyau, tels que Windows et Mac OS X, n’ont pas un « vrai »
micro-noyau enrichi. Ils utilisent un micro-noyau hybride : certaines
fonctionnalités qui devraient exister sous forme de mini-serveurs se retrouvent
intégrées dans leur micro-noyau, utilisant le même espace d’adressage. Pour
Mac OS X, cela forme XNU : le noyau monolithique
BSD (Berkeley System Developpement) fonctionne en tant que service de Mach
P a g e | 15
et ce dernier inclut du code BSD dans son propre espace d’adressage afin de
réduire les latences.
Pour répondre aux problèmes des noyaux monolithiques, ces derniers sont
devenus modulaires. Dans ce type de noyau, seules les parties fondamentales
du système sont regroupées dans un bloc de code unique (monolithique). Les
autres fonctions, comme les pilotes matériels, sont regroupées en différents
modules qui peuvent être séparés tant du point de vue du code que du point de
vue binaire.
La très grande majorité des systèmes actuels utilise cette technologie : Linux, la
plupart des BSD ou Solaris. Par exemple avec le noyau Linux, certaines parties
peuvent être non compilées ou compilées en tant que modules chargeables
directement dans le noyau. La modularité du noyau permet le chargement à la
demande de fonctionnalités et augmente les possibilités de configuration. Ainsi
les systèmes de fichiers peuvent être chargés de manière indépendante, un
pilote de périphérique changé, etc. Les distributions Linux, par exemple, tirent
profit des modules chargeables lors de l’installation. L’ensemble des pilotes
matériels sont compilés en tant que modules. Le noyau peut alors supporter
l’immense variété de matériel trouvé dans les compatibles PC. Après
l’installation, lors du démarrage du système, seuls les pilotes correspondants au
matériel effectivement présent dans la machine sont chargés en mémoire vive.
La mémoire est économisée.
b. Systèmes à micro-noyaux
Les micro-noyaux ont un autre avantage : ils sont beaucoup plus compacts que
les noyaux monolithiques. 6 millions de lignes de code pour le noyau Linux 2.6.0
contre en général moins de 50 000 lignes pour les micro-noyaux. La maintenance
du code exécuté en mode noyau est donc simplifiée. Le nombre réduit de lignes
de code peut augmenter la portabilité du système.
Les premiers micro-noyaux (comme Mach) n’ont pas tout de suite atteint ces
avantages théoriques. L’utilisation de nombreux services dans l’espace
utilisateur engendre les deux problèmes suivants :
c. Noyaux hybrides
d. Exo-noyaux
e. Méta-noyaux
De cette manière, les logiciels peuvent être déployés et utilisés sur le réseau
informatique comme s’il s’agissait d’une machine unique, et l’ensemble des
logiciels fonctionnant sur cette plate-forme peuvent se partager les ressources
de manière intégrée, comme elle le ferait sur un noyau simple.
Les noyaux temps réel sont fonctionnellement spécialisés. Ce sont des noyaux
généralement assez légers qui ont pour fonction de base stricte de garantir les
temps d’exécution des tâches. Il n’y a pas à proprement parler de notion de
rapidité de traitement ou de réactivité dans les noyaux temps réel, cette notion
est plutôt implicite à la garantie des temps d’exécution en comparaison aux
critères temporels de l’application industrielle (la réactivité d’un système de
freinage ABS n’a pas les mêmes critères temporels que le remplissage d’une cuve
de pétrole).
Très utilisés dans le monde de l’électronique embarquée, ils sont conçus pour
tourner sur des plates-formes matérielles limitées en taille, puissance ou
autonomie.
Les noyaux temps réel peuvent adopter en théorie n’importe quelle architecture
précédemment listée. Ils fournissent souvent deux interfaces séparées, l’une
spécialisée dans le temps réel et l’autre générique. Les applications temps réel
font alors appel à la partie temps réel du noyau.
P a g e | 22
Une des architectures souvent retenue est un noyau hybride qui s’appuie sur la
combinaison d’un micro-noyau temps réel spécialisé, allouant du temps
d’exécution à un noyau de système d’exploitation non spécialisé. Le système
d’exploitation non spécialisé fonctionne en tant que service du micro-noyau
temps réel. Cette solution permet d’assurer le fonctionnement temps réel des
applications, tout en maintenant la compatibilité avec des environnements
préexistants.
Par exemple, on peut avoir un micro-noyau temps réel allouant des ressources à
un noyau non temps réel tel que Linux (RTLinux, RTAI) ou Windows.
L’environnement GNU (resp. Windows) peut alors être exécuté à l’identique sur
le noyau pour lequel il a été conçu, alors que les applications temps réel peuvent
faire directement appel au micro-noyau temps réel pour garantir leurs délais
d’exécutions.
VxWorks est un noyau propriétaire temps réel très implanté dans l’industrie bien
que les systèmes à base de noyau Linux se déploient énormément et aient un
succès grandissant via RTAI (RTLinux étant breveté).
P a g e | 23
2. DIFFERENTES FONCTIONNALITE
Un processus est un programme qui s'exécute, ainsi que ses données, sa pile,
son compteur ordinal, son pointeur de pile et les autres contenus de registres
nécessaires à son exécution. Un processus fournit l'image de l'état d'avancement
de l'exécution d'un programme.
Les processus correspondent donc à l’exécution de tâches : les programmes des
utilisateurs, les entrées-sorties, … par le système. Un système d’exploitation doit
en général traiter plusieurs tâches en même temps. Comme il n’a, la plupart du
temps, qu’un processeur, il résout ce problème grâce à un pseudo-parallélisme.
Il traite une tâche à la fois, s’interrompt et passe à la suivante. La commutation
des tâches étant très rapide, l’ordinateur donne l’illusion d’effectuer un
traitement simultané.
Les processus des utilisateurs sont lancés par un interprète de commande. Ils
peuvent eux-mêmes lancer ensuite d’autres processus. On appelle le processus
créateur, le père, et les processus créés, les fils. Les processus peuvent donc se
P a g e | 25
Sur cette figure, P1, P2, …, P6 sont des processus. Au lancement du système, il
n’existe qu’un seul processus, qui est l’ancêtre de tous les autres. Les processus
sont composés d’un espace de travail en mémoire formé de 3 segments : la pile,
les données et le code et d’un contexte.
Le contexte est formé des données nécessaires à la gestion des processus. Une
table contient la liste de tous les processus et chaque entrée conserve leur
contexte3. Les éléments de la table des processus de Minix, par exemple, ont la
forme simplifiée du tableau ci-dessous.
b. Simultanéité et ressources
Dans certains systèmes d’exploitation, il existe des appels système pour créer un
processus, charger son contexte et lancer son exécution. Dans d'autres systèmes
d’exploitation, un processus particulier (INIT sous UNIX) est lancé au démarrage
de la machine. Il crée un processus par terminal. Chacun de ces processus attend
une éventuelle connexion, et lorsqu'une connexion est validée, il lance un
nouveau processus chargé de lire et d'interpréter les commandes de l'utilisateur
(Shell sous UNIX). Chacune de ces commandes peut elle-même créer un nouveau
processus, etc. On aboutit ainsi à une arborescence de processus.
Les processus, dans UNIX/LINUX, sont créés par l’appel système FORK qui crée
une copie conforme du processus appelant. A la suite du FORK, le processus père
continue à s’exécuter en parallèle avec le processus fils et peut créer d’autres
processus fils et avoir ainsi plusieurs fils en cours d’exécution.
Création
Prêt
Bloqué
Elu (Actif)
• Elu (actif) : en cours d'exécution. Un processus élu peut être arrêté (en
attente de données), même s'il peut poursuivre son exécution, si le
système d’exploitation décide d'allouer le processeur à un autre
processus.
P a g e | 28
f. Mécanismes de commutation
La commutation des tâches, le passage d’une tâche à une autre, est réalisée par
un ordonnanceur au niveau le plus bas du système. Cet ordonnanceur est activé
par des interruptions :
• d’horloge,
• de disque,
• de terminaux.
On parle aussi de TRAP ou déroutement sur erreur, qui est une extension du
mécanisme des interruptions. En cas de détection d'erreur interne au processus
(ex : division par 0, erreur d'adressage), le contrôle est passé au système
d’exploitation en cas d'erreur mettant en cause son intégrité (ex : erreur
d'adressage) ou à une fonction de traitement de l'erreur du processus courant.
1. Décomposition en tâches
P a g e | 32
P = T1 T2...Tn
Une relation de précédence, notée <, sur un ensemble E est une relation vérifiant :
La relation Ti < Tj entre tâches signifie que fi inférieur à dj entre dates. Si on n'a
ni Ti < T j, ni
Tj < Ti, alors on dit que Ti et Tj sont exécutables en parallèle.
Une relation de précédence peut être représentée par un graphe orienté. Par
exemple, la chaîne de tâches S = ((T1, T2, T3), (Ti < Tj pour i inférieur à j)) a pour
graphe :
T1 T3
T2
Que l’on peut simplifier, en représentant le graphe de la plus petite relation qui
a même fermeture transitive que la relation de précédence : c'est le graphe de
précédence :
T1 T3
T2
P a g e | 33
T1 T6 T7
T2 T3 T8 G2
G1
T4 T5
T1
T2 T3
G1 * G2
T4 T5
T6 T7
T8
parbegin
............
parend
P a g e | 34
lire a lire b
c <- a * a d <- b * b
e <- c + d
Un algorithme simple de cette représentation peut être donné par ce qui suit :
Début
parbegin
lire a
lire b
parend
parbegin
c ß a * a
d ß b * b
parend
e ß c + d
fin
1 2
3 4
P a g e | 35
(S1)
P1 P2
T1 T2
T3 T4
T5
S1 n'est pas équivalent à S (affichage pas forcément identique). S1 est
indéterminé.
T1 T2
T3
T4
T5
T1 lire X
T2 lire Z
T3 Xß X+Z
T4 YßX+Z
T5 afficher Y
On a donc :
- M= (X, Y, Z)
- S0 = (0, 0, 0)
- w = d1 f1 d2 f2 d3 f3 d4 f4 d5 f5 et
• Son domaine de lecture : L = {C'1, ........, C'p} ou ensemble des cellules lues par T
• Son domaine d'écriture : E = {C"1, ........, C"p} ou ensemble des cellules
écrites par T. Ecrire signifie plus généralement modifier l'état d'une
ressource.
Dans l'exemple que nous développons, nous obtenons les domaines ci-après:
L1 = Æ E1 = {X}
L2 = Æ E2 = {Z}
L3 = {X, Z} E3 = {X}
L4 = {X, Z} E4 = {Y}
L5 = {Y} E5 = Æ
P a g e | 37
- ti : sa date d'arrivée
- t i : sa durée
On utilise :
On démontre que le temps moyen d'attente est minimal par rapport à toute
autre stratégie si toutes les tâches sont présentes dans la file d'attente au
moment où débute l'assignation. En effet, considérons 4 travaux dont les durées
d'exécution sont a, b, c, d. Si on les exécute dans cet ordre, le temps moyen
d'attente sera : (4a + 3b + 2c + d)/4. Comme a possède le plus grand poids (4), il
faut donc que « a » soit le temps le plus court, etc...
Il s'agit d'un algorithme ancien, simple et fiable. Le processeur gère une liste
circulaire de processus. Chaque processus dispose d'un quantum de temps
pendant lequel il est autorisé à s'exécuter. Si le processus actif se bloque ou
s'achève avant la fin de son quantum, le processeur est immédiatement alloué
à un autre processus. Si le quantum s'achève avant la fin du processus, le
P a g e | 39
tourniquet. Puis, quand cette liste est vide, on applique l'algorithme à la liste de
priorité 3, etc... S'il n'y avait pas une évolution dynamique des priorités, les
processus faiblement prioritaires ne seraient jamais élus : risque de famine.
Supposons que l'on ait r chaînes de tâches à exécuter en parallèle : C1, C2, ...,
Cr avec : Ci = Ti1 Ti 2 Ti 3 .... Tik , c'est à dire que la chaîne C1 comprend k1 tâches,
i
, 2 , ... , n }
Ajouter à l'assignation les tâches de la sous-
chaîne C ' jp et les supprimer de la chaîne C j
j
D'autre part, la taille d'un processus doit pouvoir dépasser la taille de la mémoire
disponible, même si l'on enlève tous les autres processus. L'utilisation de pages
(mécanisme de pagination) ou de segments (mécanisme de segmentation)
permet au système de conserver en mémoire centrale les parties utilisées des
processus et de stocker, si nécessaire, le reste sur disque.
• Monoprogrammation
• Multiprogrammation
La multiprogrammation est utilisée sur la plupart des ordinateurs : elle permet
de diviser un programme en plusieurs processus et à plusieurs utilisateurs de
travailler en temps partagé avec la même machine.
Supposons qu'il y ait n processus indépendants en mémoire centrale, chacun
ayant la probabilité p d'attendre la fin d'une opération d'E/S. La probabilité que
le processeur fonctionne est 1-pn. (Il s'agit d'une estimation grossière, puisque
sur une machine monoprocesseur, les processus ne sont pas indépendants
(attente de libération de la ressource processeur pour démarrer l'exécution d'un
processus prêt).
Toutefois, on remarque que plus le nombre n de processus en mémoire centrale
est élevé, plus le taux d'utilisation du processeur est élevé : on a donc intérêt à
augmenter la taille de la mémoire centrale. Une solution simple consiste à diviser
la mémoire en n partitions fixes, de tailles pas nécessairement égales (méthode
MFT [Multiprogramming with a Fixed number of Tasks ] apparue avec les IBM
360).
- on crée une file d'attente par partition. Chaque nouveau processus est
placé dans la file d'attente de la plus petite partition pouvant le contenir.
Inconvénients :
o on perd en général de la place au sein de chaque partition
o il peut y avoir des partitions inutilisées (leur file d'attente est vide)
- on crée une seule file d'attente globale. Il existe deux stratégies :
o dès qu'une partition se libère, on lui affecte la première tâche de
la file qui peut y tenir. Inconvénient : on peut ainsi affecter une
partition de grande taille à une petite tâche et perdre beaucoup de
place
o dès qu'une partition se libère, on lui affecte la plus grande tâche de
la file qui peut y tenir. Inconvénient : on pénalise les processus de
petite taille.
P a g e | 44
On a alors :
Adresse physique = adresse de base (contenu de ce registre) + adresse relative
(mentionnée dans le processus). De plus, il faut empêcher un processus d'écrire
dans la mémoire d'un autre.
Deux solutions :
- des clés de protection : une clé de protection pour chaque partition,
dupliquée dans le mot d'état (PSW = Program Status Word) du processus
actif implanté dans cette partition. Si un processus tente d'écrire dans une
partition dont la clé ne concorde pas avec celle de son mot d'état, il y a
refus.
- un registre limite, chargé au lancement du processus à la taille de la
partition. Toute adresse mentionnée dans le processus (relative)
supérieure au contenu du registre limite entraîne un refus.
On pourrait utiliser des partitions fixes, mais on utilise en pratique des partitions
de taille variable, car le nombre, la taille et la position des processus peuvent
varier dynamiquement au cours du temps. On n'est plus limité par des partitions
trop grandes ou trop petites comme avec les partitions fixes. Cette amélioration
P a g e | 45
On utilise une liste chaînée des zones libres en mémoire centrale. On applique :
En résumé, les listes chaînées sont une solution plus rapide que la précédente
pour l'allocation, mais plus lente pour la libération.
Cet algorithme proposé par Donald KNUTH en 1973 utilise l'existence d'adresses
binaires pour accélérer la fusion des zones libres adjacentes lors de la libération
d'unités.
Le gestionnaire mémorise une liste de blocs libres dont la taille est une puissance
de 2 ( 1, 2, 4, 8 octets, ...., jusqu'à la taille maximale de la mémoire). Par exemple,
avec une mémoire de 1 Mo, on a ainsi 251listes. Initialement, la mémoire est
vide, toutes les listes sont vides, sauf la liste 1 Mo qui pointe sur la zone libre de
1 Mo :
1M
A B 64 256 512
A B 64 C 128 512
D 64 B 64 C 128 512
Dans certains systèmes, on n'alloue pas une place fixe sur disque aux processus
qui sont en mémoire. On les loge dans un espace de va et vient (swap area ) du
disque. Les algorithmes précédents sont utilisés pour l'affectation.
c. Gestion avec recouvrement avec pagination ou segmentation
P a g e | 48
• La pagination
L'espace d'adressage d'un processus est divisé en petites unités de taille fixe
appelées pages. La mémoire centrale est elle aussi découpée en unités physiques
de même taille appelées cadres. Les échanges entre mémoire centrale et disques
ne portent que sur des pages entières. De ce fait, l'espace d'adressage d'un
processus est potentiellement illimité (limité à l'espace mémoire total de la
machine). On parle alors d'adressage virtuel.
La MMU mémorise :
- les cadres physiques alloués à des processus (sous forme d'une table de
bits de présence)
P a g e | 49
- les cadres mémoire alloués à chaque page d'un processus (sous forme
d'une table des pages)
On dira qu'une page est mappée ou chargée si elle est physiquement présente
en mémoire.
Dans l'exemple précédent, les pages ont une taille de 4 Ko. L'adresse virtuelle
12292 correspond à un déplacement de 4 octets dans la page virtuelle 3 (car
12292 = 12288 + 4 et 12288 = 12*1024). La page virtuelle 3 correspond à la page
physique 2. L'adresse physique correspond donc à un déplacement de 4 octets
dans la page physique 2, soit : (8*1024) + 4 = 8196.
Par contre, la page virtuelle 2 n'est pas mappée. Une adresse virtuelle comprise
entre 8192 et 12287 donnera lieu à un défaut de page. Il y a défaut de page
quand il y a un accès à une adresse virtuelle correspondant à une page non
mappée. En cas de défaut de page, un déroutement se produit (trap) et le
processeur est rendu au système d’exploitation. Le système doit alors effectuer
les opérations suivantes :
- déterminer la page à charger
- déterminer la page à décharger sur le disque pour libérer un cadre
- lire sur le disque la page à charger
- modifier la table de bits et la table de pages
• La segmentation
Dans cette solution, l'espace d'adressage d'un processus est divisé en segments,
générés à la compilation. Chaque segment est repéré par son numéro S et sa
longueur variable L. Un segment est un ensemble d'adresses virtuelles contiguës.
Contrairement à la pagination, la segmentation est "connue" du processus : une
adresse n'est plus donnée de façon absolue par rapport au début de l'adressage
virtuel; une adresse est donnée par un couple (S , d), où S est le n° du segment
et d le déplacement dans le segment, d Î [0 , L [ .
• La pagination segmentée
• La segmentation paginée
La taille d'un segment peut être importante, d'où un temps de chargement long
qui peut en résulter. La pagination des segments peut être une solution. Une
adresse virtuelle (S, d), avec S n° de segment et d déplacement dans le segment,
est transformée en (S, P, d ), où P est un n° de page et d' un déplacement dans
la page P. Par Exemple avec l'hypothèse de pages de 4 Ko, l'adresse logique (2 ,
9200) est transformée en (2 , 2, 1200)
adresse 0 200
(2 , 2 , 1200) 1000 table des pages
1
(une par segment)
2 15700
0
............
1 cadre dans lequel
on effectuera
2 le déplacement
limite de segment de 1200
...........
MC
P a g e | 51
Dans tous les cas, l'utilisation d'une mémoire associative, stockant des triplets
(S, P, adresse de cadre), gérée comme fenêtre au voisinage du dernier cadre
accédé, peut accélérer la recherche des cadres.
système d’exploitation retire la page d'indice le plus élevé, c'est à dire la page
qui sera référencée dans le futur le plus lointain.
Le système d’exploitation référence chaque page par deux bits R (le plus à
gauche) et M initialisés à 0. A chaque accès en lecture à une page, R est mis à 1.
A chaque accès en écriture, M est mis à 1. A chaque interruption d'horloge, le
système d’exploitation remet R à 0.
Les bits R-M forment le code d'un index de valeur 0 à 3 en base 10. En cas de
défaut de page, on retire une page au hasard dans la catégorie non vide de plus
petit index. On retire donc préférentiellement une page modifiée non
référencée (index 1) qu'une page très utilisée en consultation (index 2). Cet
algorithme est assez efficace.
Variantes :
compteur le plus petit. Mais en cas d'égalité des compteurs, on ne sait pas quelle
est la page la moins récemment utilisée.
c5. Améliorations
Le dérobeur de pages : dès qu'un seuil minimal de cadres libres est atteint, le
système d’exploitation réveille un dérobeur de pages. Celui-ci supprime les
pages les moins récemment utilisées, par algorithme d'aging, et les range dans
la liste des cadres libres, ceci jusqu'à un seuil donné. Le système d’exploitation
vérifie qu'une page référencée sur défaut de page n'est pas dans la liste.
Soit t la taille moyenne des processus et p (en octets) la taille d'une page. Soit e
(en octets) la taille de l'entrée de chaque page dans la table des processus. Le
nombre moyen de pages par processus est t/p. Ces pages occupent t*e/p octets
dans la table des processus. La mémoire perdue en moyenne dans la dernière
page d'un processus est p/2 (fragmentation interne). La perte totale q est donc
:
P a g e | 55
q = t*e/p + p/2
• Cas de la pagination
Chaque fois qu'un processus fait référence à son propre code, il utilise un
numéro de page fixe qui le fait accéder toujours à la même page virtuelle. Donc,
si un processus partage son code, il va toujours référencer la même page
virtuelle, quelle que soit la table des pages utilisée. Chaque tâche doit donc
mettre le code exécutable de ce processus à la même adresse virtuelle.
- Partage de données
Pour partager des données, la zone commune peut être à des endroits différents
dans la table des pages de chacune des tâches. Soit une page commune P
contenant un pointeur q :
o si D pointe sur une adresse dans P, le numéro de cette page doit
être le même dans tous les processus ;
P a g e | 57
- Solution habituelle
processu s 1
processu s 2
• Cas de la segmentation
Pour que deux processus référencent une partie commune, il suffit que cette
partie se trouve dans un segment qui possède le même descripteur dans la
table des segments de chacun des processus.
Les principes et les caractéristiques des périphériques sont sensés être vus dans
le cours d’architecture des Ordinateurs. Dans certains ordinateurs, des
instructions permettent la redirection des données issues de l'UC, non vers la
mémoire, mais vers un périphérique (solution INTEL); ou bien un accès mémoire
à une adresse réservée particulière est interprétée comme demande d'accès à
un périphérique (solution Motorola). Trois solutions sont utilisées pour faire
communiquer l'UC et les périphériques :
• Les contrôleurs
• Le DMA
• Les bus Le S.E comm
a. Contrôleurs
P a g e | 58
Toutes les données transitent par l'UC qui gère toutes les phases de la
transmission, du contrôle et de la synchronisation. Par exemple citons
l’imprimante, le clavier ou l’écran sur PC.
b. DMA (Direct Access Memory)
Pour éviter le ralentissement de l'UC par ces tâches de bas niveau, on utilise
parfois l'accès direct à la mémoire (DMA). Cette méthode utilise le transfert
direct entre le périphérique et la mémoire sous contrôle DMA, pour réaliser les
opérations d’E/S avec un périphérique rapide. Les paramètres suivants sont
utilisés :
BUSREG
MEMOIRE DMA P1 P2 Pn
BUSGR
DATA
Logique
décodage
Micro -
Processeur
Control
P a g e | 59
c. Canal
Sur les gros ordinateurs, des canaux d'E/S allègent le travail du processeur
principal pour sa communication avec les contrôleurs (contrôle et
synchronisation). Un canal d'E/S est un processeur spécialisé qui gère soit un seul
périphérique rapide, soit plusieurs périphériques multiplexés. Un canal utilise le
DMA. L'UC envoie au canal l'adresse en mémoire centrale du début du
programme de transfert à exécuter (programme canal). L'UC peut interrompre
l'exécution, scruter l'état d'avancement par consultation de registres du canal.
Un canal est une solution adaptée aux périphériques rapides des mini- et gros
ordinateurs.
D’autres canaux tels que les canaux multiplexés sont utilisés pour gérer plusieurs
échanges avec des périphériques à faible vitesse de transfert (ex : terminaux).
Voici le schéma des canaux d’entrées/sorties, processeurs spécialisés pour les
entrées/sorties:
P a g e | 60
MEMOIRE
PRINCIPALE
PROCESSEU
R
Il existe une solution à chacune des 4 conditions précédentes pour prévenir les
interblocages :
ü Exclusion mutuelle : usage d'un spoule :
Considérons une imprimante avec un fichier tampon associé. Un processus peut
ouvrir ce fichier et ne rien imprimer pendant des heures, bloquant tous les autres
processus voulant accéder à la ressource. On crée un processus particulier
appelé démon (daemon) et un répertoire spécial, le répertoire de spoule (spool).
Pour imprimer un fichier, un processus doit d'abord le lier au répertoire de
spoule. Le démon, seul processus à être autorisé à accéder au fichier spécial de
l'imprimante, imprime les fichiers du répertoire de spoule.
Une technique identique peut être utilisée pour la transmission de fichiers à
travers un réseau (démon de réseau, répertoire de spoule de réseau). Mais le
spoule ne peut pas résoudre tous les problèmes d'exclusion mutuelle (par
exemple, spoule plein et processus inachevés), ni s'appliquer à tous les
périphériques. On se reportera donc aux algorithmes du chapitre précédent.
proc. P1 P2 P3 P4 pr oc. P1 P2 P3 P4
A 3 0 1 1 A 1 1 0 0
B 0 1 0 0 B 0 1 1 2
C 1 1 1 0 C 3 1 0 0
D 1 1 0 1 D 0 0 1 0
E 0 0 0 0 E 2 1 1 0
tota l 5 3 2 2
Ressources actuellement
r essou rces actuel lement a ttrib uéesattribués Ressources
r essou rces encor e demencore
andé es demandées
r essou rces existan tes : e xist = ( 6 3 4 2 )
r essou rces disp oni bl es : dispo = exist - total = (1 0 2 0)
5 processus sont actifs (A, B, C, D, E) et il existe 4 catégories de périphériques P1
à P4 (exemple : P4 = imprimante). Le tableau de gauche donne les ressources
déjà allouées et le tableau de droite les ressources qui seront encore demandées
pour achever l'exécution.
Un état est dit sûr s'il existe une suite d'états ultérieurs qui permette à tous les
processus d'obtenir toutes leurs ressources et de se terminer. L'algorithme
suivant détermine si un état est sûr :
P a g e | 64
Etape 1. Trouver dans le tableau de droite une ligne L dont les ressources
demandées sont toutes inférieures à celles de dispo ( Li £ dispoi, "i). S'il n'existe
pas L vérifiant cette condition, il y a interblocage
Etape 2. Supposer que le processus associé à L obtient les ressources et se
termine. Supprimer sa ligne et actualiser dispo
Etape 3. Répéter étape 1 et étape 2 jusqu'à ce que tous les processus soient
terminés (l'état initial était donc sûr) ou jusqu'à un interblocage (l'état initial
n'était pas sûr)
a. Caractéristiques physiques
Pour éviter cet inconvénient, on déplace la tête dans une direction donnée en
traitant toutes les requêtes rencontrées, puis le sens du balayage s'inverse et on
traite les requêtes rencontrées, etc... Dans l'exemple traité, on obtiendrait
l'ordre : 12, 16, 34, 36, 9, 1 et un parcours total de 60 cylindres. Une variante a
été proposée par T.J. TEOREY en 1972 (C-Look, C pour circulaire) : la dernière
piste est considérée comme adjacente à la première. La tête, lorsqu'elle est
arrivée à une extrémité, retourne immédiatement à l'autre sans traiter de
requête. On obtiendrait ici l'ordre : 12, 16, 34, 36, 1, 9, soit 68 cylindres
parcourus.
• Algorithme PCTL
L'algorithme PCTL (plus court temps de latence) traite les requêtes dans l'ordre
de défilement des secteurs concernés sous la tête, pour une piste donnée, quel
que soit leur ordre d'arrivée. Par exemple, si la tête se trouve au-dessus du
secteur n° 2 et que des requêtes concernent les secteurs 11, 5, 8 et 7, on traitera
dans l'ordre les secteurs 5, 7, 8, 11ce qui évitera d'attendre plus d'un tour pour
traiter les secteurs 5, 8, 7. On peut parfois gagner en efficacité en entrelaçant les
secteurs sur les pistes.
Souvent, les modèles probabilistes sont plus réalistes que les modèles
déterministes. Dans les problèmes d'ordonnancement, en particulier, les
modèles des files d'attente sont souvent performants.
e. Disque virtuel
a. Caractéristiques physiques
Du point de vue du système d’exploitation, on distingue deux catégories de
terminaux :
octets de la RAM vidéo et génère le signal vidéo qui contrôle l'affichage à l'écran.
Dans le cas des terminaux bitmap, chaque bit de la RAM vidéo contrôle un pixel
de l'écran. Le clavier est interfacé par une liaison parallèle, voire une liaison série.
A chaque frappe de touche et à chaque relâchement, une interruption est
déclenchée et le code de l'emplacement de la touche est placé dans un tampon.
2.3.5. Le logiciel du clavier
Sous UNIX, le mode cbreak est un compromis entre les modes raw et cooked :
les caractères sont transmis au processus sans attendre la validation (comme en
mode raw), mais DEL, CTRL-S, CTRL-Q et CTRL-\ sont traités comme en mode
cooked. La fonction ioctl permet de changer de mode.
a. Introduction
b. Un peu d’histoire
Le DOS a été conçu pour les premiers XT d'IBM (processeurs X86 compatibles).
Contrairement aux systèmes d'exploitation de l'époque, il n'est pas intégré en
mémoire ROM, mais sur une disquette ou installé sur le disque dur. Il travaille en
mode texte en utilisant un prompt: les commandes doivent être connues de
l'utilisateur (elles ne sont pas très complexes et reprises des mots anglais
associés). L'interface graphique utilisant la souris est arrivée plus tard avec une
couche supplémentaire (Windows 2.0, 3.0, 3.1 et 3.11 - Workgroups).
DOS est au départ conçu pour gérer les disques durs et disquettes, ainsi que leur
utilisation pour la sauvegarde et la récupération de fichiers (données,
programmes, ...), compris leur organisation dans des répertoires (depuis
Windows 95 ou dit dossiers). Différentes commandes permettent également de
préparer les supports comme la commande FDISK ou la commande FORMAT. En
gérant directement le BIOS couplé au setup, ce système d'exploitation va servir
d'interface entre l'utilisateur et l'électronique du PC
Le DOS (Disk Operating System) est le premier système d'exploitation utilisé avec
les PC. Il a été développé par Microsoft pour la firme IBM et l'ordinateur de type
XT. Il a été développé en parallèle sous 3 appellations suivant le vendeur: PC-DOS
pour IBM, DR-DOS pour Novell et MS-DOS pour toutes les autres firmes
(commercialisé par Microsoft). Ils sont équivalents, seuls quelques petites
différences dans les options de commandes sont présentes.
P a g e | 71
Comme tous les systèmes d'exploitation, DOS est développé pour servir
d'interface entre l'électronique d'une part et l'utilisateur d'autre part. Il n'inclut
pas d'interface graphique, c'est un système d'exploitation en mode texte.
Microsoft a contourné le problème en développant les Windows 2.0, 3.0, 3.1 et
3.11, une sorte de rajoute.
c. Les périphériques
d. Démarrage de l'ordinateur
1. Introduction.
Sous Dos, une fichier stocké sur le disque dur (ou sur une disquette/CD-ROM)
est désigné par un nom composé de 1 à 8 caractères numériques -
alphanumériques ou caractères spéciaux suivants: $&#@!%'()-<>_
P a g e | 73
Les capacités sont exprimées en Byte (octet en Français). Pour 1024 bytes, on
parle de Kilo (KB ou KO), pour 1024 Kilos, on parle de Mega (MB ou Mo). Les
lecteurs de disquettes prennent les lettres "A:" et "B:". La première partition du
disque dur se nomme "C:", les autres partitions prennent les lettres suivantes.
Pour passer d'un disque à l'autre, tapez simplement la lettre suivie de 2 points
(:).
L'organisation des données sur le disque dur (dans une moindre mesure la
disquette) se fait par répertoires (directory en anglais) et sous-répertoires. Ces
P a g e | 74
• <ALT> + 94 donne le caractère '^', cette combinaison est basé sur le code
ascii.
• <ALT>+<CTRL>+SUPP>: redémarre l'ordinateur
• <CTRL>+<C>: arrête l'exécution d'une commande
• <CTRL>+<S>: arrête momentanément une instruction DOS, elle reprend
en appuyant sur n'importe quelle touche, utilisée par exemple avec la
commande DIR
P a g e | 75
Sans rentrer dans tous les détails de ces commandes, nous allons nous déplacer
d'un répertoire à l'autre, en créer et en supprimer, visualiser le contenu.
Exemple, nous sommes dans le répertoire principal du disque dur C: (ce que nous
montre le prompt DOS en affichant C:\>). Nous considérons que l’utilisateur
connecté s’appelle pc. Etant dans le répertoire de l’utilisateur pc, nous tapon la
commande DIR et nous appuyons sur la touche « Entrée ». Cette capture d’écran
montre le résultat que nous obtenons.
P a g e | 76
Lorsque le nombre de fichiers à afficher est trop grand, une partie des
informations défile sans être visible pour l'utilisateur. Deux options sont
utilisables:
> DIR /P: affiche le contenu du répertoire par page. Pour afficher la page
suivante, appuyez sur n'importe quelle touche.
> DIR /W: affiche le contenu du répertoire, mais uniquement les noms et
extensions en colonnes. En Win 2000 et récentes versions, cette commande est
remplacée par DIR /D. L'espace entre la commande et les caractères optionnels
peut être omis.
Par exemple (2), C:\Windows>DIR sys*.* affiche tous les fichiers se trouvant
dans le répertoire Windows dont le nom commence par sys, quelque soit
l'extension.
P a g e | 77
Par exemple (3), C:\Windows>DIR *.?xe affiche tous les fichiers dont l'extension
termine par xe, par exemple les fichiers exe.
Par exemple (1), vous êtes dans le répertoire principal de C: (le root). Vous voulez
vous déplacer dans le répertoire sous-adjacent Users, tapez: C:>CD Users
P a g e | 78
Par exemple (1), la commande C:>MD rien crée le répertoire rien dans la root
de C:
• Exécution
> Programme1: exécute le programme dont le nom est programme1.
L'extension n'est pas nécessaire. DOS reconnaît 3 types de fichiers exécutables
directement suivant l'extension:
1. .bat: ce sont des listes de commandes DOS
2. .exe
3. .com
Si le logiciel n'est pas dans le répertoire courant, on peut lancer en tapant: nom-
du-lecteur:\répertoire\sous-répertoire\programme.
P a g e | 80
Par exemple :
Attention, nous devons noter que cette commande n'est pas aussi puissante que
la corbeille de Windows. L'emplacement d'un fichier effacé est laissé libre pour
d'autres fichiers. Elle doit être exécutée immédiatement après la suppression.
Cette commande utilise différentes options qui diffèrent d'une version à l'autre,
notamment pour les versions 2000, XP, Windows 7 et plus. Cette commande
remplace dans les DOS actuels la commande BACKUP.
3. Commandes systèmes
Deux commandes sont utilisées, pour modifier la date et l'heure. Elles gèrent
directement le BIOS du système. Les XT ne possédaient pas de circuits RTC (Real
Time Clock), l'horloge n'était pas mise à jour si l'ordinateur n'était pas sous
tension. Ce n'est plus le cas depuis le 286. L'utilisation de ces 2 commandes dans
une fenêtre DOS est parfaitement identique au paramétrage sous Windows par
le panneau de configuration ou directement dans le BIOS.
En appuyant directement sur entrée, l'heure est conservée. Pour mettre l'heure
à jour, tapez l'heure actuelle heure : minutes
En appuyant directement sur entrée, la date est conservée. Pour mettre la date
à jour, tapez la date actuelle. Le format diffère de la langue du système
d'exploitation.
Cette commande est Utilitaires disque dur et disquette, elle n'est apparue qu'à
partir du DOS 5.0. Les options sont modifiées dans les DOS sous Windows
actuels.
Le rapport contient:
FORMAT /V:<label> <disque> formate le disque et lui donne comme nom label.
Le nom du volume peut également être inscrit en utilisant la commande VOL ci-
dessous. DOS n'accepte ni les caractères accentués, ni les espaces.
Cette commande n'est reconnue qu'à partir du DOS 5.0. Un format /U permet
une meilleure récupération. Ceci ne fonctionne que si les clusters de la disquette
ou du disque dur n'ont pas été utilisés par un nouveau fichier depuis. Elle n'existe
plus sous Windows.
P a g e | 85
La date de création est celle à la quelle le fichier a été effectivement créé, pas
celle d'inscription sur le disque dur. Si la taille des fichiers est trop importante,
DOS demande d'insérer une nouvelle et modifie l'extension du fichier sur la
disquette suivante.
Exemple (1): C:\>backup a:/s sauvegarde tous les fichiers contenus sur le disque
dur C: (y compris dans les sous-dossiers) sur la disquette A:
Cette commande (jusque DOS 5.0) permet de récupérer les fichiers sauvegardés
avec la commande BACKUP. Pour les versions supérieures, MS-backup permet la
restauration.
• La commande Attrib
5. Autres commandes
Cette commande est surtout utilisée par des logiciels externes, pour des
questions de compatibilité. Elle est connue par toutes les versions.
1. Introduction
Sous DOS, lorsque l'ordinateur démarre, il lit d'abord les informations inclues
dans le BIOS (paramétrable à partir des 80286 par le setup). Ce firmware permet
de configurer l'hardware du PC, notamment de déterminer l'ordre de bootage
(démarrage) des disques (lecteur de disquette, disque dur, CD-ROM, USB, Via
Réseau).
Dans le cas du DOS, il va lire deux fichiers de configuration de type texte l'un à la
suite de l'autre:
P a g e | 89
L'ordre des commandes n'a pas réellement d'importance, sauf dans le cas de la
gestion de la mémoire haute.
Par la conception des premiers XT, la mémoire d'un PC est constituée de 3 zones:
L’adressage du DOS est en fait restreint à 640 ko, la partie supérieure (Upper
Memory Area) étant réservée à divers programmes de pilotage d’entrées-
sorties. Le modèle de mémoire du DOS permet des adresses au delà de 1 Mo. En
prenant comme base, la valeur 0xFFFF, il est possible d’aller jusqu’à 1 Mo + 64
ko. Ceci correspond à la zone de mémoire haute (High Memory Area).
L’exploitation de cette mémoire dépend de la manière – variable – dont est
câblée la ligne d’adresse 21.
Device=c:\dos\hymem.sys
L'utilitaire MEMMAKER est apparu avec la version 6.0. C'est un utilitaire qui va
modifier les fichiers config.sys et autoexec.bat pour libérer le maximum de
mémoire Ram.
2. MICROSOFT WINDOWS
a. Introduction
• Windows 10
• Nouvelle barre des tâches plus performante avec des boutons plus gros
et prévisualisation d'écran améliorée.
• Les programmes sont plus rapidement accessibles.
• Recherche simplifiée depuis le menu démarrer.
• Simplification du partage de fichiers et périphériques.
• Performances améliorées : exécution plus rapide des programmes et
utilisation réduite de la mémoire.
• Connexion aux réseaux sans fil simplifiée et rapidement accessible.
• Prise en charge des écrans tactiles grâce à une interface tactile.
• Personnalisation des thèmes, arrières plans et diaporama plus facile.
• Plus de souplesse dans la gestion des messages de sécurité.
• Lecture des fichiers multimédia sur d'autres ordinateurs, diffusion à
distance.
c. Présentation de Windows 7 et 8
• Bureau de Windows 7
• Bureau de Windows 8
P a g e | 98
3. UNIX / LINUX
a. Introduction
De nos jours, les systèmes les plus puissants sont basés sur un design vieux de
plus de 35 ans! La philosophie d’UNIX est basé sur :
Au départ, Unix à été créé pour les ordinateurs multi-utilisateurs. Les principales
caractéristiques sont donc :
b. Architecture UNIX
c. Linux
Linux est constitué d’un noyau libre semblable à un noyau Unix. Il a été conçu
par Linus Torvalds en 1991. Le système complet se repose sur les outils GNU:
bibliothèque C, gcc, binutils, fileutils, make, emacs... Le système complet est
donc appelé “GNU / Linux”.
Linux a été très tôt partagé comme Logiciel Libre (Licence GPL), ce qui attira des
contributeurs et des utilisateurs de plus en plus nombreux. Depuis 1991, Linux
connaît une croissance supérieure à tout autre système d'exploitation (pas
seulement Unix).
P a g e | 100
Il est à noter qu’il ne faut pas confondre la version de distribution avec celle du
noyau!
Sous Linux/UNIX (presque) tout est fichier. On trouve les fichiers ordinaires, les
répertoires qui ne sont juste que des fichiers listant plusieurs fichiers, les liens
symboliques ceux qui font référence au nom d'un autre fichier, les périphériques
et dispositifs, la lecture et l'écriture à partir d'un dispositif se fait comme un
fichier.
Depuis le début d'Unix, les noms de fichiers ont les caractéristiques suivantes:
• Sensibles aux majuscules / minuscules
• Pas de longueur limite évidente
• Peuvent contenir tous caractères (incluant l'espace, à l'exception de /). Les
types de fichiers sont stockés dans un fichier (“nombre magique”). Les
extensions d'un nom de fichier n'ont pas besoin et ne sont pas interprétés.
Ils sont justes utilisés pour les utilisateurs.
Les fichiers sont localisés par un chemin, un chemin est une séquence de
répertoires emboîtés avec un fichier ou un répertoire à la fin, séparés par le
caractère /. Un exemple d’un chemin relatif:
documents/fun/microsoft_jokes.html (Relatif au répertoire courant). Un
exemple d’un chemin absolu: /home/bill/bugs/crash9402031614568. Le
répertoire / représente le répertoire racine («root»). Il représente le début des
chemins absolus pour tous les fichiers du système de fichiers (même pour les
fichiers sur des périphériques externes ou de partage réseau).
Dans GNU/Linux rien n’est imposé par le système en ce qui concerne la structure
de fichiers. Elle peut varier d’un système à l’autre, même entre deux installations
de GNU / Linux.
/ Répertoire racine
/bin/ Commandes de base du système
/boot/ Images, initrd et fichiers de
configuration du noyau
/dev/ Fichiers représentant des
périphériques
/dev/hda: premier disque dur IDE
/etc/ Fichiers de configuration du système
/home/ Répertoires utilisateur
/lib/ Bibliothèques de base du système
(partagées)
/lost+found Fichiers détériorés que le système a
essayé
de récupérer.
/mnt/ Systèmes de fichiers montés
/mnt/usbdisk/, /mnt/windows/ ...
/opt/ Outils spécifiques installés par
l’administrateur.
Souvent remplacé par /usr/local/
P a g e | 103
Les interpréteurs de commandes sont des outils pour exécuter des commandes
tapées par un utilisateur. Appelés “shells” (coquilles) parce qu’elles masquent
sous leur surface les détails du système d’exploitation sous-jacent.
Les commandes sont tapées dans un terminal en mode texte, constitué soit par
une fenêtre dans un environnement graphique, soit par une console sur un écran
en texte seul. Les résultats sont aussi affichés sur le terminal. Aucun graphique
n’est nécessaire. Les interpréteurs de commandes peuvent être programmables:
ils fournissent toutes les ressources nécessaires pour l’écriture de programmes
complexes (variables, conditions, boucles...).
P a g e | 104
Les interpréteurs de commandes les plus connus et les plus populaires sont les
suivants :
• sh: Le Bourne shell (obsolète). C’est le shell de base qu’on trouve
traditionnellement dans les systèmes Unix, par Steve Bourne.
• csh: Le C shell (obsolète). C’est le chell avec une syntaxe à la C, qui a connu
son heure de gloire.
• tcsh: Le TC shell (toujours très populaire). C’est une implémentation
compatible avec le C shell, avec des fonctionnalités avancées (complète
les noms de commandes, rappel de commandes antérieures et bien
d’autres...)
• bash: Le Bourne Again shell (le plus populaire). C’est une version
améliorée de sh avec de nombreuses fonctions nouvelles.
• La commande ls
Cette commande affiche la liste des fichiers dans le répertoire courant, en ordre
alphanumérique, sauf ceux qui commencent par le caractère “.”.
ls –a («all»: tous) : Affiche tous les fichiers (y compris les fichiers .*)
ls –l (long) : Affichage en format long (type, date, taille, propriétaire,
permissions)
ls –t (temps) : Affiche les fichiers les plus récents en premier
ls –S (“size”: taille) : Affiche les fichiers les gros en premier
ls –r («reverse»: inversé) : Affiche en ordre inverse
ls –ltr (les options peuvent être combinées) : Format long, les fichiers les plus
récents à la fin
ls *txt : l’interpréteur remplace d’abord *txt par tous les noms de fichiers et de
répertoires finissant par txt (y compris .txt), sauf ceux commençant par ., et enfin
exécute la ligne de commande ls.
ls –d .* : Affiche tous les fichiers et les répertoires commençant par . –d indique
à ls de ne pas afficher le contenu des dossiers .*
cat ?.log : Affiche le contenu de tous les fichiers dont le nom commence par 1
caractère et finit par .log
P a g e | 105
• La commande cp
• Les commandes mv et rm
• La commande mkdir
mkdir rep1 rep2 rep3 ... (“make dir”: créer rép.): permet de crée des répertoires
avec les noms spécifiés
rmdir rep1 rep2 rep3 ... (“remove dir”: supprimer répertoire) : permet de
supprime les répertoires spécifiés. Pour raison de sécurité, cette commande ne
fonctionne que quand les répertoires sont vides.
La commande alternative est rm –r
cat fich1 fich2 fich3 ... (concaténer): permet de mettre de bout à bout et affiche
le contenu des fichiers donnés
more fich1 fich2 ... (plus de détails) : à chaque page, demande à l’utilisateur
d’appuyer sur une touche pour continuer. Peut aussi aller directement à la
première apparition d’un mot clé (commande "/")
less fich1 fich2 fich3 ... (moins): cette commande fait plus que more avec moins.
Cette commande ne lit pas le fichier entier avant de commencer à afficher. Elle
permet de remonter en arrière dans le fichier (commande "?")
head [-<n>] <fichier> (tête) permet d’affiche les <n> premières lignes (ou 10 par
défaut) du fichier donné. Cette commande n’a pas besoin d’ouvrir le fichier en
entier pour s’exécuter.
tail [-<n>] <fichier> (queue) permet d’affiche les <n> dernières lignes (ou 10 par
défaut) du fichier donné. Ne charge pas tout le fichier en mémoire. Cette
commande est très utile pour les gros fichiers.
tail –f <fichier> (follow: suivre) permet d’affiche les 10 dernières lignes du fichier
donné et continue à afficher les nouvelles lignes au fur et à mesure qu’elles sont
rajoutées en fin de fichier. Très pratique pour suivre les rajouts à un fichier de
journal (“log”)
• La commande grep
grep <motif> <fichiers> permet de parcourt les fichiers donnés et affiche les
lignes qui correspondent au motif spécifié.
grep erreur *.log permet d’affiche toutes les lignes contenant erreur dans les
fichiers *.log
grep v info *.log permet d’affiche toutes les lignes des fichiers, sauf celles qui
contiennent info
• La commande sort
P a g e | 107
sort <fichier> (trier) permet de trie les lignes du fichier selon l’ordre des
caractères et les affiche.
sort –r <fichier> (“reverse”: inverse) permet de trie les lignes du fichier en ordre
inverse
sort –ru <fichier> l’option -u signifie unique. La commande permet de trier les
lignes du fichier, mais ne sort qu’une seule fois les lignes identiques.
Un lien symbolique est un fichier spécial qui est juste une référence au nom d’un
autre (fichier ou répertoire). Cette commande est utile pour simplifier et réduire
l’utilisation du disque quand deux fichiers ont le même contenu.
Pour créer un lien symbolique (même ordre que dans cp): ln –s nom_fichier
nom_lien. La commande ln –s fich1 fich2 fich3 ... rep permet de créer plusieurs
liens d’un coup dans un dossier donné.
Pour supprimer un lien, nous utilisons la commande rm nom_lien. Notons que
cela ne supprime pas le fichier référencé par le lien.
Par défaut, la commande ln crée des liens physiques. Un lien physique vers un
fichier est un fichier ordinaire, avec exactement le même contenu physique. Bien
qu’ils économisent toujours de la place, les liens physiques sont indiscernables
des fichiers d’origine. Si vous supprimez le fichier d’origine, cela n’affecte pas le
contenu du lien physique.
Le contenu est supprimé quand il n’y a plus aucun fichier (lien physique) qui y
fait référence.
P a g e | 108
Utiliser ls –l pour consulter les droits d’accès aux fichiers se trouvant dans le
répertoire courant.
Notons que x sans r est autorisé mais est sans valeur. Vous devez donc pouvoir
lire un fichier pour l’exécuter. Les répertoires requièrent à la fois les droits r et
x: x pour entrer, r pour accéder au contenu. Vous ne pouvez pas renommer,
supprimer ou copier des fichiers dans un répertoire si vous n’avez pas accès en
écriture à ce répertoire.
qu’un répertoire est juste un fichier décrivant une liste de fichiers). Cela permet
même de modifier un fichier (le supprimer et le recréer) même protégé en
écriture.
Quelques exemples :
-rw-r- -r - - signifie que le fichier est lisible et modifiable pour le propriétaire,
seulement lisible pour les autres.
-wr-r- - - - - signifie que le fichier est lisible et modifiable pour le propriétaire,
seulement lisible pour les utilisateurs appartenant au groupe du fichier.
Pour modifier les permissions sur chmod. La syntaxe est la suivante : chmod
<permissions> <fichiers>
• Alias
Les shells vous permettent de définir des alias: des raccourcis pour des
commandes que vous utilisez très souvent. Par exemple, nous pouvons créer un
alias avec la commande :
alias rm='rm -i' : Utile pour faire que rm demande toujours une confirmation
alias cia='. /home/sydney/env/cia.sh' Utile pour initialiser rapidement un
environnement. Le point (.) est une commande shell pour exécuter le contenu
d’un script shell. Le chapitre sur le scripting va présenter ces notions.
Par ailleurs, lorsque la mémoire ne peut contenir tous les processus prêts, un
certain nombre d’entre eux sont déplacés sur le disque. Un processus peut alors
être prêt en mémoire ou prêt sur le disque. De la même manière, on a des
processus bloqués en mémoire ou bien bloqués sur disque.
P a g e | 111
La commande top : Affiche les processus les plus actifs, triés par utilisation du
processeur. L’ordre de tri peut être changé en tapant M: utilisation Mémoire, P:
%CPU, T: Temps d’exécution. On peut arrêter une tâche en tapant k (kill) et son
numéro.
Arrêt de processus
kill <pids> : Envoie un signal d’arrêt aux processus spécifiés. Cela permet aux
processus de sauvegarder leurs données et s’arrêter eux-mêmes. Par exemple :
kill 3039 3134 3190 3416
kill -9 <pids> : Envoie un signal d’arrêt immédiat. Le système lui-même se charge
d’arrêter les processus. Utile quand une tâche est vraiment bloquée (ne répond
pas à kill -1).
kill -9 -1 : Arrête tous les processus de l’utilisateur courant. -1: tous les processus.
h. Editeur de commande
Dans le cadre de ce cours, nous allons nous intéresser aux éditeurs vi et nano.
a. L’éditeur vi
Éditeur de texte en mode texte disponible sur tous les systèmes Unix. Créé avant
même l’apparition de la souris. Cet éditeur est difficile à apprendre pour les
débutants habitués aux éditeurs graphiques.
Mais notons que qu’il est très productif pour les utilisateurs avancés. Cet éditeur
est souvent incontournable pour modifier des fichiers en administration de
système ou dans les systèmes embarqués, quand vous ne disposez que d’une
console texte.
Commande Description
0 Aller en début de ligne
$ Aller en fin de ligne
K Ligne précédente
J Ligne suivante
H Caractère précédent
L Caractère suivant
B Mot précédent
W Mot suivant
Ctrl-B Page précédente
Ctrl-F Page suivante
Aller à la ligne n. Exemple: 1G va sur la première
nG
ligne
G Aller à la dernière ligne
X Supprime le caractère sous le curseur
Supprime la ligne courante et la copie dans le
Dd
presse-papiers
Nd Idem avec n lignes
J Fusionne la ligne courante et la suivante
Yy Copie la ligne courante dans le presse-papiers
Ny Idem avec n lignes
P Colle le presse-papiers avant la position courante
P Colle le presse-papiers après la position courante
V Commence une sélection en mode caractères
V Commence une sélection en mode lignes
Ctrl-V Commence une sélection en mode "rectangulaire"
Supprime la sélection et la copie dans le presse-
D
papiers
Y Copie la sélection dans le presse-papiers
C Supprime la sélection et passe en mode insertion
P a g e | 115
b. L’éditeur nano
Un autre éditeur de texte léger en mode texte est nano. C’est un clone amélioré
de Pico (éditeur non libre dans Pine). Cet éditeur est convivial et plus facile à
prendre en main grâce à un résumé des commandes affiché à l’écran. Disponible
P a g e | 116
sous forme de paquetages binaires pour plusieurs plateformes. Cet éditeur est
une alternative à vi dans les systèmes embarqués.
2. Programmation Batch
a. Introduction
Batch est un langage de script, il permet d'exécuter une suite d'instructions ayant
un but précis et pouvant servir à l'automatisation de tâches (par exemple,
renommer tous les fichiers d'un dossier d'un coup). Cette suite d'instructions est
interprétée par l'interpréteur de commande Windows : la console (cmd.exe).
En Batch, il faut créer un fichier ayant pour extension : *.bat. Pour cela nous
devons nous munir d'un éditeur de code. Nous utiliserons bloc note ou
notepad++.
@echo off
Cette ligne permet de cacher toutes les lignes de commande qui sont effectuées
lors de l'exécution du programme, ainsi que cette même ligne.
Désactiver l'affichage standard peut être fait via la commande echo off dans ce
cas seuls les erreurs et les messages de la commande echo sont affichés.
Pour activer l'affichage standard peut être fait via la syntaxe echo on, ici tout est
affiché. La commande echo utilisée sans paramètre renvoie l'état de l'affichage
standard en cours.
@echo off
cls
rem Ceci est une remarque
:: Ceci est un commentaire
echo Bonjour Monde !
echo.
Pour exécuter ce petit programme, nous cliquons deux fois de suite sur le
fichier test.bat soit nous tapons dans le consol MS-DOS la commande
start test.bat, attention : le fichier doit être dans le répertoire en cours.
La commande pause > nul permet d’effacer la ligne « Appuyer sur une
touche pour continuer… » dans le résultat de l’exécution du programme.
c. Les variables
Une variable est une partie du langage composée de deux éléments : un nom et
une valeur. Le nom pointe vers un emplacement précis de la mémoire ayant une
valeur qui lui a été attribué à sa création, et qui peut être modifiée. Les variables
P a g e | 119
Variable Valeur
Variable Valeur
Les variables doivent respecter une certaine rigueur pour ne pas faire planter le
script :
Exemple 2:
set a=2
set b=5
set resultat=%a%+%b%
@echo off
cls
set /p nom=Veuillez entrer votre nom:
echo Votre nom est %nom%
echo.
pause
set pseudo=BonjouR
set variable=%pseudo:~2,5%
echo %variable%
pause
d. Les conditions
La condition if. Notons qu’en Batch else if et switch n’existent pas. Voici la
syntaxe de la condition if.
Comparant Signification
neq différent de
lss inférieur à
gtr supérieur à
Exemple 1.
if %variable1% == 12 (
echo variable1 est egal a 12
) else (
P a g e | 124
Bien sur, n'écrivez not que lorsque vous voulez vérifiez que le fichier n'existe pas.
Exemples 2.
e. Etiquettes et boucles
• Etiquettes
P a g e | 125
Les étiquettes sont des instructions qui permettent (à l'aide de l'instruction goto)
de répéter le programme, ou une partie de celui-ci. Créer une étiquette est
encore plus facile que d'afficher un message à la fenêtre. Il suffit de mettre le
signe deux points (:) puis de rajouter le nom de l'étiquette.
GOTO est une fonction très utile pour des jeux avec répétitions. Elle sert à
renvoyer l'utilisateur à un endroit précis, comme le début. Elle est utilisée
généralement comme des boucles.
• Boucle for
La boucle for permet d'exécuter un nombre de fois défini une action. Le principe
de la boucle for est de monter de x une variable à chaque tour de boucle en
répétant des instructions. Pour la boucle, les variables s'écrivent avec
%%nom_de_variable.
Par exemple:
For %%v in (5 4 3 2 1) do (
echo %%v
)
Exemple 2 : Et si l'on veut aller jusqu'à 50. Pour faire cela, on utilise une
commande avec la syntaxe suivante :
echo %%v
P a g e | 126
)
1. Le premier paramètre est la valeur de départ de la variable %%v.
2. Le second paramètre est le pas, il ajoute 1 à %%v à chaque fois qu'il
passe dans la boucle.
3. Le troisième paramètre arrête la boucle lorsque %%v est égal à 50.
Une fois exécuté, ce code affiche : de 0 à 50
Exercices :
3. Programmation shell
Parmi les Shells les plus connus, il y a sous Windows 9X command.com, sous NT
et suivants cmd.exe et pour la partie graphique explorer.exe. Sous Unix il en
existe un certain nombre, dont les plus connus sont les suivants : Bourne Shell,
Bourne Again Shell, Z Shell, CShell, Korn Shell, ... A l'heure actuelle, des langages
comme Perl, Ruby ou Python prennent la relève des Shells sans toutefois les
remplacer totalement.
d'autres Shells comme le Ksh et le Csh. Ce programme est libre (licence GPL) et
a été porté sur Windows (Cygwin).
Syntaxe des scripts Shell : Un script Shell n'est rien d'autre qu'un fichier texte
dans lequel sont inscrites un certain nombre de commandes compréhensibles
par votre interpréteur de commandes. Etant donné que Linux ne prend pas en
compte les extensions des fichiers, nous pouvons nommer nos fichiers comme
nous voulons.
Pour indiquer qu'il s'agit bien d'un script et non pas d'un fichier texte classique,
la première ligne doit toujours commencer par le nom de l'interpréteur de
commandes. Comme dans le cadre de ce cours nous utiliserons le Bash, la
première ligne sera donc :
#!/bin/bash
Vous pouvez écrire autant de lignes de commentaires que vous voulez, pour cela,
faites débuter votre ligne ou votre fin de ligne par #.
Pour créer notre premier script bash qui affichera « Bonjour Monde » à l'écran,
nous allons éditer un fichier que vous, que nous nommons script1.sh par
exemple, avec l’éditeur vi ou Nano comme suit :
#!/bin/bash
echo Bonjour Monde
Pour exécuter le script que nous venons de créer, nous devrons d'abord vérifier
que nous avons le droit d'exécuter ce fichier. Pour cela nous devons taper la
commande ls -l du répertoire dans lequel se trouve le fichier pour vérifier.
Il faut avoir le droit x sur le fichier pour avoir le droit d'exécution, si ce n'est pas
le cas, donnez au fichier le droit d'être exécuté en tapant la commande Linux:
chmod +x script1.sh
P a g e | 128
./script1.sh
#!/bin/sh
clear
echo -n Vous utilisez le système
uname
echo
echo -n La version de votre noyau est
uname -r
b. Les variables
Dans Bash il n'y a pas besoin de déclarer les variables comme dans la plupart de
langages de programmation (langage C par exemple). On peut directement
affecter une valeur à une variable sans se faire de souci. Par exemple
nom=Selain
Pour utiliser les variables qui ont été affectées, on utilise le signe $. Par exemple
pour utiliser la variable nom ci-dessous, nous devons utiliser la ligne de code :
Il existe des variables prédéfinies par le Bash. Notons que le bash et le système
Linux d'une manière générale utilise ses propres variables pour fonctionner, par
exemple le nom de l'utilisateur courant est stocké dans une variable nommée
$USER. Taper en consol echo $USER pour voir ce qu'elle contient.
P a g e | 129
Pour faire des opérations sur des variables, vous pouvez utiliser la commande
expr. Cette commande s'utilise avec des variables de type numérique, par
exemple :
Par exemple :
echo Veuillez entrer votre nom :
read nom
echo Votre nom est $nom
Par exemple :
echo Veuillez entrer votre nom et votre prenom:
read nom, prenom
echo Votre nom complet est $prenom $nom
e. Structures conditionnelles
- Tests avec if :
Pour vérifier qu'une ou plusieurs conditions sont remplies avant d'effectuer un
traitement, on utilise souvent la clause if.
Par exepmle:
Par exemple:
P a g e | 131
La clause elif (else if) permet d'imbriquer plusieurs if les uns dans les autres pour
pouvoir traiter tous les cas possibles :
if [$feu=«rouge»];
then echo N'avancez pas
elif [$feu=«orange»];
then echo Ralentissez
else echo Allez-y
fi
Exercice : Utiliser cette structure pour écrire un programme bash qui permet de
demander à l’utilisateur d’entrer son mon puis son âge. Le programme devra lui
dire s’il est mineur (0 à 17 ans), majeur (18 à 45 ans) et vieux (46 à plus).
Il est aussi possible de combiner un certain nombre de conditions les unes après
les autres. Par exemple pour vérifier que l'âge entré par l'utilisateur est situé
entre 0 et 100. On peut écrire un code du genre :
Pour combiner plusieurs conditions, vous pouvez utiliser soit OU (||), soit ET
(&&). Il s'agit des opérateurs logiques.
P a g e | 132
Exemple :
- La structure case
#!/bin/bash
echo Quel est votre OS préféré ?
Echo 1- Windows 2- Linux 3- Mac OS 4- Autre
read $choix
case « $choix » in
1) echo «Vous préférez Windows» ;;
2) echo «Vous préférez Linux»;;
3) echo «Vous préférez Mac OS»;;
4) echo «Vous préférez un autre OS»;;
else ) echo « Vous devez taper un nombre entre 1 et 4
!»;;
esac
- Select
Le select est une extension du case. La liste des choix possibles est faite au début
et on utilise le choix de l'utilisateur pour effectuer un même traitement.
Par exemple :
select systeme in "Windows" "Linux" "BSD" "Mac OS" "MS
DOS"
do
echo "Votre système favori est $systeme."
break
done
1) Windows
2) Linux
3) BSD
4) Mac OS
5) MS DOS
#? 4
Votre système favori est Mac OS.
P a g e | 134
f. Les boules
- Vérifier qu'une information saisie par l'utilisateur est correcte et lui faire
recommencer la saisie tant que ce n'est pas correct
- Recommencer un certain nombre de fois la même suite de commandes
While signifie tant que, ce qui veut dire que la boucle sera exécutée tant que la
condition est respectée.
Par exemples :
Cette boucle continuera, Cette boucle continue tant que l'utilisateur entre o au
clavier.
P a g e | 135
Until signifie jusqu'à, ce qui veut dire que la boucle sera exécutée jusqu'à ce que
la condition soit respectée.
Par exemples :
• La boucle for :
D’une manière générale, la boucle for est utilisée quand on veut exécuter un
ensemble de commandes un nombre précis de fois.
Par exemple :
echo Combien voulez-vous d\'étoiles ?
read nombre
for i in `seq $nombre`
do
echo -n \*
done
Il existe aussi une commande qui permet d’afficher une séquence de nombre. La
commande seq, elle permet donc d’afficher une liste de nombre :
Par exemple :
P a g e | 136
En shell la boucle for est beaucoup utilisée pour traiter les fichiers, par exemple
:
g. Passage de paramètres
En général pour utiliser une commande, on l'appelle par son nom, suivi d'un
certain nombre de paramètres, par exemple pour déplacer un fichier.
Par exemple, la commande mv fichier répertoire/, dans cette ligne nous avons
en premier la commande, en deuxième lieu le paramètre 1 et en troisième lieu
le paramètre 2.
L'avantage d'utiliser des paramètres est que lorsqu'on lance le programme, il n'y
a pas à faire intervenir l'utilisateur donc le script peut s'exécuter sans que
personne ne tape quoi que ce soit au clavier. Pour passer un paramètre à votre
programme, il vous faut faire comme avec n'importe quelle commande :
nom_de_votre_script paramètre1 paramètre2
#!/bin/sh
echo Vous avez passé les $# paramètres suivant :
echo paramètre 1 : $1
echo paramètre 2 : $2
echo paramètre 3 : $3
echo paramètre 4 : $4
echo On peut aussi les afficher tous d\'un coup : $*
h. Redirections
La sortie standard de la réponse d'une commande est l'écran par defaut. Dans
certains cas, on a besoin d'utiliser la réponse d'une commande comme
paramètre d'une autre commande. Pour cela, il faut utiliser des redirections.
Le pipe noté (|) permet de renvoyer le résultat d'une commande à une seconde
commande le cas le plus fréquent de son utilisation est pour rechercher un texte
dans le résultat d'une commande qui nous est fourni.
P a g e | 138
Par exemple : La commande ps ax liste tous les processus qui tournent. La liste
étant longue, on limite l'affichage en passant le résultat de cette commande à
grep qui ne va sortir que les lignes contenant le texte apache par exemple.
# ps ax | grep apache
1892 ? S 0:00 /usr/sbin/apache
1893 ? S 0:00 /usr/sbin/apache
Une autre redirection commande1 ‘commande2’ est une redirection qui permet
de passer la commande de droite comme paramètre de la commande de gauche.
C'est donc l'inverse de la redirection |. Par exemple pour regarder le contenu de
tous les fichiers du répertoire courant : On envoie la liste des fichiers (ls) à la
commande cat, comme suit :
cat `ls`
La sortie par défaut étant l'écran, il se peut que vous vouliez récupérer les sorties
pour les écrire soit dans un fichier, soit vers une autre sortie. D'une manière
générale on indique la sortie que l'on veut grâce au signe >.
ls –l > /home/selain/resultat.txt
Attention, le signe > remplace ce qu'il y avait dans le fichier par la sortie de la
commande. S'il s'agit d'un nouveau fichier il le crée. Pour écrire à la suite d'un
fichier existant, il faut doubler le signe : >>
D'autre part, si on veut éviter d'afficher les erreurs sur la sortie standard, on peut
les rediriger vers un périphérique inexistant (/dev/null), par exemple : ls -l 2>
/dev/null
P a g e | 139
i. Fonctions
Comme pour les autres langages de programmation, les scripts Bash peuvent
faire appel à des fonctions.
function nom () {
commandes ;
}
L'appel d'une fonction se fait en écrivant son nom. On peut lui passer des
paramètres comme on le fait pour une commande. Attention on ne peut appeler
une fonction que si elle a été déclarée avant. Voici l’exemple de fonction et de
son appel :
#!/bin/sh
# Déclaration de la fonction :
function multiplier()
{
resultat=`expr $1 "*" $2`
echo $resultat
}
echo Veuillez entrer deux nombres
P a g e | 140
read nb1
read nb2
# Appel de la fonction :
multiplier $nb1 $nb2
P a g e | 141
Un système temps réel est un système dans lequel l'exactitude des applications
ne dépend pas seulement de l'exactitude des résultats mais aussi du temps
auquel ce résultat est produit. Si les contraintes temporelles de l'application ne
sont pas respectées, on parle de défaillance du système. Il est donc essentiel de
garantir le respect des contraintes temporelles du système.
Notons que plus de 95% des processeurs produits dans le monde sont dédiés aux
systèmes embarqués. Voici le lien entre un système temps-réel et un système
embarqué :
2. Caractéristiques Temps-Réel
Un système T.R. est souvent un système critique (devant être valide à presque
100%). approche-qualité par l’utilisation systématique de méthodologies
rigoureuses pour la conception, réalisation, validation, évolution et maintenance
des systèmes logiciels
- Méthodes de spécification (formelles ou semi-formelles) : Utilisant des
langages comme B, Z
- Méthodes de conception et de développement : UML–Marte, SART–
DARTS
P a g e | 144
C’est la qualité d’un système qui, à partir de la connaissance de son état présent,
permet d’assurer la connaissance de son comportement dans le futur et garantit
la maîtrise de son fonctionnement en cas de défaillance potentielle La
prédictibilité doit permettre de déterminer à l'avance si un système va respecter
ses contraintes temporelles. Elle nécessite La connaissance des paramètres liés
aux calculs des activités et des défaillances potentielles
- Assurer qu’il n’y aura pas de défaillance
- Pouvoir estimer le temps de réponse au pire (WorstCase ExcutionTime,
WCET)
La préemptibilité est la réquisition possible des ressources par une tâche. Pour
ce faire une tâche doit pouvoir être interrompue par une tâche de plus haute
priorité. Il est donc a noter que le retrait des ressources (processeur, mémoire)
d’une tâche pour les affecter à une autre tâche est possible (reprise ultérieure
quand les circonstances le permettront)
Nous avons :
- Système Transformationnel : Activité de calcul, qui lit ses données et ses
entrées lors de son démarrage, les traite, puis fournit ses sorties et meurt.
- Système Interactif : Système en interaction forte avec son environnement.
La réaction du système est déterminée par les événements reçus et par
l'état courant. Le rythme de l'interaction est déterminé par le système et
non par l'environnement.
- Système Réactif ou Temps Réel : Système en interaction permanente avec
son environnement. La réaction du système est déterminée par les
évènements reçus et par l'état courant. Le rythme de l'interaction est
déterminé par l'environnement et non par le système.
Il est à noter que Le système de contrôle peut être varié, suivant les
circonstances et nécessités. Il peut par exemple être un automate
programmable, un système électronique ou un système informatique (hardware
et logiciel).
PRELUDE............................................................................................................... 2
PRESENTATION DU COURS .................................................................................. 3
1. OBJECTIFS.................................................................................................... 3
2. CONTENU DU COURS .................................................................................. 3
3. CONTEXTE DE REALISATION DES OBJECTIFS OU MODE D’INTERVENTION . 4
4. MODE D’EVALUATION ................................................................................ 4
5. PREREQUIS .................................................................................................. 4
6. QUELQUES REFERENCES BIBLIOPGRAPHIQUES .......................................... 4
CHAPITRE I. RAPPELS SUR LE SYSTEME D’EXPLOITATION .................................. 6
1. Notions de base et mots clés ...................................................................... 6
a. Informatique ............................................................................................ 6
b. Modèle de VON NEUMAN ...................................................................... 9
c. Système à microprocesseurs ................................................................. 10
2. Eléments de base d'un système d'exploitation .................................... 11
3. Les différentes classes de systèmes d'exploitation................................... 11
4. Différents types de noyaux des systèmes d’exploitation.......................... 14
a. Les noyaux monolithiques ..................................................................... 15
• Noyaux monolithiques non modulaires ................................................. 15
• Noyaux monolithiques modulaires ........................................................ 16
b. Systèmes à micro-noyaux ...................................................................... 17
c. Noyaux hybrides .................................................................................... 20
d. Exo-noyaux............................................................................................. 20
e. Méta-noyaux .......................................................................................... 21
f. Noyaux temps réel ................................................................................. 21
CHAPITRE II. FONCTIONS D’UN SYSTEME D’EXPLOITATION ............................. 23
1. INTRODUCTION ......................................................................................... 23
2. DIFFERENTES FONCTIONNALITE ............................................................... 24
3.1. La gestion des processus .................................................................... 24
2.2. Gestion de la mémoire ....................................................................... 42
2.3. Gestion des entrées – sorties ............................................................. 57
P a g e | 149