Cours Systemei - 2019-2020
Cours Systemei - 2019-2020
Cours Systemei - 2019-2020
Objectifs du cours :
Plan de cours :
I/ Introduction :
Les concepteurs visaient par la création du premier ordinateur de faciliter la vie de l’être humain
en automatisant tout type de tâche. Vers les années 40, un seul groupe de personnes concevait,
construisait, programmait et utilisait la machine à cause de sa complexité (d’un autre terme,
l’utilisation de l’informatique était limitée dans ce groupe), aux cours des années suivantes cette
complexité est devenue réduite petit à petit jusqu’aux années 80 où l’ordinateur est évolué pour
devenir à la portée de tout le monde tout en utilisant un élément intermédiaire qui doit s’acquitter de
toutes les tâches. Cet intermédiaire entre l’utilisateur et l’ordinateur nommé « Système
d’exploitation ».
Définition3 : un système d’exploitation joue le rôle d’un intermédiaire entre les programmes
d’application et le matériel de la machine.
Programme
d’application
Système
informatique
Le système se charge de contrôler les étapes d’exécution d’un programme (programme en disque
chargement en mémoire centrale exécution sur le processeur).
Cette tâche devient plus difficile quand on sera dans un environnement multitâche où il faut
décider :
Le SE doit partager l’ensemble de l’espace mémoire entre les programmes et les données tout en
sachant les espaces libres et occupés pour faciliter et faire rapidement l’exécution.
c/ Gestion de processeur :
Le système d’exploitation doit piloter l’exécution d’un processus au niveau du processeur. Il doit
décider la politique d’ordonnancement de programmes au cours d’exécution, ainsi le temps
d’exécution de chaque programme (surtout dans les systèmes à temps partagé).
Le SE doit permettre l’accès des utilisateurs à leurs fichiers par des opérations spécifiques.
Le SE doit être capable de détecter les anomalies, les signaler et les corriger si possible.
j/ Virtualisation de la machine :
Ce type de système est destiné à piloter un processus industriel, et pour faire, le système doit être
en mesure d'assurer les fonctions supplémentaires suivantes :
Cette catégorie de système est destinée à conserver et gérer des volumes d'information
importants (bases de données) comme le système de réservation d'Air Algérie ou le CCP. Les
fonctions assurées par ce système sont :
Cette catégorie de système permet à l'utilisateur de créer ses propres programmes et les exploiter.
Les systèmes d’exploitation dans cette période ont comme principe de travail d’exécuter un seul
programme à la fois, on peut citer :
Les plus répondus à l’époque c’est les systèmes à multiprogrammation qui ont comme principe
de maintenir plusieurs travaux prêts à s’exécuter en mémoire et partager les ressources entre ces
jobs. Le processeur est au départ alloué à un job et le reste sont en mémoire, dès que le job effectue
une E/S alors le processeur est alloué au job suivant.
Le processeur dans ces systèmes est commuté sur le processus suivant à chaque expiration d’un
délai Q (Quantum de temps).
Sont des systèmes spécialisés dédiés à des applications spécifiques en particulier les systèmes de
contrôle, ce système est utilisé lorsqu’il y a des exigences de temps de réponse.
Sont des systèmes fortement couplés possèdent plus d’un processeur qui partagent l’horloge et la
mémoire.
Sont des systèmes qui exploitent plusieurs processeurs non forcément identiques et chacun
possède sa mémoire.
C’est un système mono-utilisateur, il est connu au début des années 80, il est destiné au micro-
ordinateur (les premiers IBM-PC 8088), conçu par Bill Gates, associé aujourd’hui avec Windows.
2/ Le système Windows :
Système conçu par Microsoft avec une interface graphique, son nom désigne l’utilisation d’une
fenêtre pour chaque exécution. Il est destiné à plusieurs architectures (PC, Station de travail,
Portable, Réseau client/serveur, …).
Une famille de systèmes en temps partagé proposée pour la plupart des architectures, utilisée
pour certains milieux d’industrie et de recherche.
Historique :
1969 : Naissance d’UNICS aux laboratoires de Bell par Ken Thompson une altération en UNIX.
1979 : Apparition des versions BSD (Berkeley Software Distribution) de l’université de Berkeley.
Jusqu’à 1980 : UNIX est offert aux maisons d’enseignements et aux entreprises.
Aux années 80 : La société AT & T commercialisa les versions System III, System IV et System V
1/ Unité centrale :
Carte mère : c’est une carte électronique qui permet le branchement de tous les composants du PC
et la circulation des informations.
Processeur : C’est le cerveau de la machine qui exécute toutes les opérations demandées et donne
les réponses attendues.
Mémoire vive « RAM » : C’est le lieu de travail de processeur permet la sauvegarde des
informations nécessaires pour le traitement, c’est une mémoire volatile qui s’efface à chaque
coupure de courant électrique.
Disque dur :
Ce sont des lecteurs qui permettent l’accès à des disques externes (disquette, DVD et CD-ROM).
Cartes d’extension :
Ce sont des cartes qu’on ajoute à la carte mère pour assurer d’autres fonctionnalités qui sont
absentes dans la carte mère (Exemple : carte réseau, carte son, carte graphique, …).
2/ Périphériques :
Périphériques d’entrée :
Ce sont les éléments du PC, tel que : Le clavier, la souris, le scanner, le modem…etc. permettant
d’entrer des données.
Périphériques de sortie :
Ce sont les éléments du PC permettant de faire sortir des informations tel que : L’écran,
l’imprimante, les baffles…
Périphériques d’entrée/sortie :
Ce sont les éléments du PC permettant d’entrer et de faire sortir des informations tel que les clés
USB, les appareils à photos numériques, les imprimantes-scanner, …
I/ Introduction :
Pour qu’un problème puisse être interprété, exécuté et donne les résultats attendus par le
processeur de la machine, il faut qu’il soit formulé dans un langage compréhensible par la machine
et il faut que le système d’exploitation pilote son exécution.
Pour le faire, le programmeur commence au début d’écrire son problème d’une manière
structurée sous forme d'un algorithme.
Formulation
Problème Algorithme
algorithmique
Cet algorithme est écrit en langage humain et pour le rendre exécutable par l’ordinateur, le
programmeur fait le passer par plusieurs étapes tout en utilisant des outils de langage de
programmation et des outils système.
Chargé en MC pour
Algorithme s’exécuter
Processus
Editeur de
texte
Erreurs de chargement
Langage évolué
(*.pas, *.java, *.c, …)
Chargeur
Programme
source
Traduction Programme
exécutable
Erreurs de traduction
Compilateur/interpréteur Erreurs de liaisons
Langage machine
Programme Editeur de
(binaire/assembleur)
objet liens
(*.obj, *.class, …) Programmes bibliothèque
Programmes externes
1/ L’édition de programme :
C’est l’étape dont on saisit l’algorithme établit pour résoudre le problème tout en le traduisant à
un programme écrit dans un langage évolué (exemple : Java, Pascal, Delphi, C++, …) ou dans le
langage Assembleur. L’éditeur de texte est l’outil qui nous permet de réaliser cette étape, c’est un
logiciel interactif soit associé au système, soit associé au langage de programmation. Il nous permet
d’appliquer toutes les opérations nécessaires sur un fichier nommé « Code source »
Ce code source à une extension spécifique tout dépend du langage utilisé (exemple : *.pas,
*.java, *.cpp, …)
Exemple : Bloc-notes, Wordpad, Edit de MS-DOS, Editeur du compilateur C, JEDPlus pour java,
…
Le traducteur est un outil système qui permet de traduire les instructions écrites dans un langage
de programmation vers des instructions écrites dans le langage machine (Binaire), on distingue deux
types de traducteurs :
Le compilateur :
L’analyse lexicale : le rôle de cette phase est la reconnaissance des unités lexicales (tokens),
en inspectant le code source caractère par caractère. Ces unités peuvent être des nombres,
des identificateurs, des mots clés, des opérateurs, … Chaque unité est décrite par un type
(mot clé, identificateur, constante, opérateur, …) et une valeur (le nom qui figure dans le
code source). Alors le résultat de cette étape :
- La création de la table de symbole.
- Elimination de blancs et de commentaires.
- Signalisation des erreurs lexicales.
L’analyse syntaxique : vérifie que le code source à compiler respecte bien les règles
syntaxiques du langage. Le résultat est la création de l'arbre syntaxique en se basant sur les
unités lexicales et l'ensemble des règles syntaxiques du langage. Elle met à jour la table des
symboles en ajoutant les informations manquantes comme les types des identificateurs, et
elle signale les erreurs dues au non-respect de la syntaxe du langage.
L’analyse sémantique : qui vérifie la sémantique du programme. Cet analyseur utilise
l'arbre syntaxique pour identifier les opérandes et les opérations et il utilise la table des
symboles pour identifier les types des opérandes. Il signale les erreurs sémantiques qui
peuvent être faites dans le code.
L’optimisation de code.
Transformation en code objet : c'est la partie qui réalise effectivement la traduction du
code source en code objet.
L’interpréteur :
L’interpréteur est un logiciel qui permet de traduire le programme vers le langage machine et de
l’exécuter en même temps.
Ce type de traducteur ne résulte pas un fichier contenant le code objet ce qui impose
l’interprétation à chaque fois d’exécution (exemple : l’interpréteur HTML).
L'opération de translation consiste à ajouter à chaque emplacement qui contient une adresse, la
valeur de l'adresse effective de l'implantation finale dans la mémoire.
3/ L’édition de liens :
Lors de la traduction d’un programme en code objet, le compilateur associe à chaque instruction
son type, dont on peut avoir :
Dans le dernier type, le programmeur peut référencer des structures ou des modules externes par
rapport au module en question (il s’agit des références externes de la bibliothèque du langage ou
personnelles). Alors le compilateur marque ces références sans les ramener et les ajouter au code
objet.
Un lien interne au programme, mais qui peut être accédé par d’autre modules lien
utilisable (définition externe).
Un lien externe appartient à un autre module appelé dans ce programme lien à satisfaire
(référence externe).
L’éditeur de lien est un outil système qui a comme objectif d’accomplir la tâche du compilateur
en ajoutant les codes objets de tous les liens à satisfaire dans le code objet principal. Alors l’éditeur
de liens cherche l’origine de chaque référence externe et établit une table globale des modules
contenant les informations : nom du module, taille et adresse d’implantation.
Compilation
Editeur de liens
- Librairies
- Code objet 1 Code
- Code objet 2 exécutable
- Code objet 3
- Pgm principal
Le travail de l’éditeur de liens est basé sur la table de fonctions qui contient toutes les
informations concernant la bibliothèque.On peut distinguer entre deux types des éditeurs de liens :
Editeur de lien statique : c’est l’édition de liens qui s’établit une fois pour toute et elle engendre un
fichier résultat liant toutes les références externes avec le programme principal, nommé le fichier
exécutable. Ce type des éditeurs de liens ne se refait pas à chaque exécution.
Editeur de liens dynamique : c’est l’édition de liens qui s’établit à chaque demande d’exécution du
programme, elle n’engendre pas un fichier exécutable.
4/ Le chargement :
Après l’édition de liens, le programme est prêt à s’exécuter, pour faire il faut le charger dans la
mémoire centrale. Cette phase est faite par un outil système nommé le chargeur. Cette étape
consiste à lire les instructions en mémoire secondaire, et les transférer en mémoire centrale tout en
lisant au début l’adresse de chargement fournit par l’éditeur de liens. Dans ce cas le programme
devient un processus.
Le chargement absolu : le code chargé ne doit être pas met dans un autre bloc de données différent
de celui indiqué dans le code objet, (d’une autre façon recopier le code).
Le chargement relogeable (translatable) :le chargement peut se réaliser à n’importe quelle adresse
dans la mémoire centrale, la façon de translater les adresses est basée sur les informations fournies
par l’éditeur de liens.
C’est un logiciel qui permet d’exécuter le programme pas à pas, d’afficher les valeurs des
variables à tout moment et mettre en place des points d’arrêts sur des conditions ou des lignes du
programme. Il offre au programmeur la possibilité de contrôler l’exécution et de détecter l’origine
des erreurs non corrigées.
I/ Introduction :
La mise en œuvre d’un système d’exploitation nécessite la connaissance des caractéristiques des
éléments hardware, certains éléments participent dans l’exécution des programmes et autres
interrompent leurs exécutions. Le système d’exploitation a comme fonctionnalité de les gérer pour
conduire à une exécution fiable.
Dans ce chapitre, nous étudierons les composants du processeur et les concepts des interruptions.
La mémoire centrale pour sauvegarder les données et les programmes en cours d’exécution.
Le processeur pour effectuer les calculs et les traitements nécessaires.
Les périphériques pour l’échange de l’information.
La mémoire centrale
Le processeur
III/ Le processeur :
Unité capable d’exécuter une instruction, elle se compose de :
L’UAL est composée des circuits dont le but est d’effectuer un traitement (les calculs) sur les
opérandes sous le contrôle de l’unité de commande.
3/ Autres :
Les registres généraux : sauvegardent les instructions fréquemment utilisées et les résultats
intermédiaires. Dans la plupart des machines, on dispose de 7 registres.
Registre d’index : utilisé pour comptabiliser le nombre d’itération dans une boucle (par
exemple les tableaux).
Registre de base : utilisé pour calculer l’adresse effective dans la mémoire centrale pour un
bloc d’instructions.
Registre pointeur de pile : utilisé pour l’accès à la pile.
Accumulateur : utilisé pour sauvegarder les résultats surtout dans la multiplication et
l’addition.
Champ adresse
- Mot mémoire
- Registre
1/ Adressage immédiat :
L’opérande se trouve en mémoire centrale, le champ adresse contient son adresse effective.
Exemple : MOV R1, 100 charger dans R1 le contenu du mot mémoire 100
3/ Adressage indirect :
Le contenu du compteur ordinal + le contenu du champ adresse (utilisation dans les branchements).
Ces deux types de programmes se partagent le processeur de telle sorte de s’occuper des
programmes utilisateurs et de prendre en considération les évènements produits.
Les évènements synchronisés liés aux programmes comme : la division par zéro, tentative
d’accès à une zone interdite, …
Les évènements asynchrones liés aux matériels comme une fin d’opération d’E/S, signal
d’horloge, …
Ces évènements sont la manière dont le processeur contrôle continuellement l’état d’une
ressource, sont nommés les interruptions.
1/ Définition :
Une interruption constitue un mécanisme pour lequel les modules (E/S, mémoire, processus)
peuvent interrompre le traitement normal du processeur.
L’interruption est une réponse à un évènement qui interrompe l’exécution des programmes en
cours à un point observable du processeur central, elle se traduit par un signal envoyé au processeur,
elle permet de forcer le processeur à suspendre l’exécution du programme en cours et à déclencher
l’exécution d’un programme prédéfini appelé « routine d’interruption ».
a/ Les interruptions externes causées par des organes externes au processeur comme les unités
d’E/S, on peut citer :
Les interruptions de l'horloge : à travers ces interruptions, le SE gère le temps d'exécution entre
l'ensemble des processus dans le système.
Les déroutements : sont causées par des erreurs lors de l’exécution des programmes, un
déroutement ne doit pas être masqué ou retardé, comme exemple :
Tentative d’exécution d’une opération interdite ou invalide.
Violation d’accès à une zone protégée ou inexistante.
Division par zéro.
Débordement arithmétique.
Les appels au superviseur : sont causés par les instructions d’appel à des fonctions d’E/S
système comme l’instruction de lecture à partir du clavier, l’instruction d’impression, …
Arrivée
d’intr
Pour une interruption externe : le processeur possède d'un bit dit bit d'interruption qui prend la
valeur 1 par le hardware quand une interruption est déclenchée par un périphérique. Le
processeur teste la valeur de ce bit avant de commencer l'instruction suivante (alors les
interruptions externes sont prises en compte au début de chaque instruction).
Pour une interruption interne : elle aura lieu le moment de l'exécution d'une instruction (surtout
un déroutement):
- Dans l'étape de décodage (comme la tentative d'exécution d'une instruction non existante, ou
une instruction privilégiée en mode esclave).
- Dans l'étape de recherche de l'opérande (dans le cas de violation de mémoire).
- Dans l'étape de déclenchement de l'opération (dans le cas de dépassement de capacité).
Pour identifier la source d'une interruption, la technique utilisée couramment est de consulter un
vecteur de bits où chaque bit est associé à un périphérique.
Pour que le processeur prenne en charge une interruption juste après son arrivée, il faut vérifier
les conditions suivantes :
Le processeur doit être dans un point observable, d’un autre terme, le code, qui est en train
d’être exécuté, doit être un code divisible où on peut l’interrompre à tout moment et dans
n’importe quelle instruction. (On dit un code indivisible dans le cas inverse)
Le système d’interruption doit être actif, dont le processeur contient un mécanisme d’activation
et de désactivation du système d’interruption. Il désactive ce système s’il est en train d’exécuter
des instructions protégées contre les interruptions (exemple : les instructions de sauvegarde de
contexte).
L’interruption doit être plus prioritaire que le programme en cours.
L’interruption doit être démasquée, où on peut masquer une interruption à cause de sa priorité.
Quand une interruption masquée arrive, elle sera retardée.
I/ Généralités :
Une mémoire est un système capable d’acquérir, de conserver, et de restituer des informations
binaires dans un ordinateur. La capacité d’une mémoire est la quantité d’information qu’elle peut
stocker, elle est exprimée en bits ou en mots de 2n bits.
Le temps d’accès et le temps qui s’écoule entre la demande de l’information et le moment où elle
est disponible.
Quatre types de mémoires qui se diffèrent selon l’utilisation, la capacité, le temps d’accès et le
coût :
Les registres (sont les plus petites mémoires qui ont le plus court temps d’accès et les plus
chers)
La mémoire cache (elle a une faible capacité, très rapide, et le coût très élevé).
La mémoire centrale (capacité de 128 MO 2 GO, avec un accès très rapide, moins cher).
Les mémoires auxiliaires (elles ont une très grande capacité, avec un accès long et sont les
moins chers).
Les programmes sont chargés seulement dans la MC, parmi ces modes on peut citer :
a/ Zone unique contigüe : utilisé dans les systèmes séquentiels, où il existe un seul programme à la
fois d’une façon à partager la MC entre ce programme et le système d’exploitation.
Inconvénients : SE
Programme
Libération après fin d’exécution
- Mauvaise utilisation de la mémoire. user
- Les tailles des programmes sont Libre
limitées à cette zone.
N.B : Ce schéma est utilisé dans les premiers mini-ordinateurs (IBM. DS/360)
Inconvénients :
Exemple : partition 100KO pour programme utilisateur, P1 = 20, P2 = 25, P3 = 10, P4 = 30, P5 = 30
SE SE SE SE
P1 20 KO P1 20 KO P1 20 KO
100 KO P2 25 KO 35 KO P5 30 KO
Allocation P2 et P3 libre
P3 10 KO termine Charger 5 KO libre
P4 30 KO P5
P4 30 KO P4 30 KO
15 KO
15 KO 15 KO
libre
libre libre
First Fit : Le programme est placé dans la première partition trouvée >= à celle du programme.
Elle a comme inconvénient de laisser plusieurs fragments inutilisables.
Best Fit : cette stratégie cherche de trouver la meilleure partition dont le résidu soit minimal
(taille de partition – taille du programme <<<).
Worst Fit : le programme est placé dans la partition la plus large, son objectif est de gagner une
nouvelle partition pour un autre programme.
Compactage de MC : pour éviter les fragments inutilisables créés durant l’allocation des processus,
un algorithme de compactage permet de rassembler les partitions libres en une seule partition avec
une taille importante. Pour effectuer cette opération, il faut que les programmes à déplacer soient
relogeables.
a/ La mémoire virtuelle :
Les programmes sont chargés au début de lancement dans la MS, ensuite ils sont découpés en
blocs et ils sont ramenés de la MS bloc par bloc vers la MC, le moment d’exécution de chaque bloc.
SE
B Programme X
A
B
C
C
D
D
b/ Le swapping (va-et-vient) :
- Un programme est chargé dans sa totalité dans la MS ensuite il est transféré partie par partie
dans la MC (Swap-In)
- Il s’exécute soit jusqu’à sa terminaison, ou son blocage.
- Dans le cas du blocage, le programme peut être transféré en MS (Swap-out)
Swap-In
MC
Swap-Out MS
Pour gérer l’espace de ces deux mémoires ainsi que pour faciliter les opérations de swapping, le
système utilise l’une des techniques suivantes :
La pagination
La segmentation
La segmentation paginée
c/ La pagination :
- La mémoire centrale est organisée en blocs de tailles égales et fixes appelés pages physiques
ou cadres de pages.
- Les processus sont divisés en blocs appelés pages virtuelles ayant la même taille que les
cadres de pages.
Alors les programmes sont mis dans la mémoire secondaire dans une zone swap dont on
manipule un espace d’adressage virtuel. L’exécution d’un programme se fait en ramenant de la MS
à la MC, page virtuelle par page virtuelle le moment de sa référence dans un cadre de page libre.
Où le processeur génère l’adresse de l’instruction suivante qui est une adresse virtuelle dont il
faut référencer la page contenant cette adresse.
Lorsque la mémoire virtuelle est utilisée, l’adresse référencée soit logique, elle n’est pas mise
directement dans le bus d’adresse, mais elle est envoyée à une unité physique appelée « Unité de
gestion de mémoire MMU » qui a comme rôle de faire la correspondance entre cette adresse et son
adresse réelle dans la MC, tel que :
Table des pages : c’est une table contient toutes les informations nécessaires pour manipuler les
pages, elle se trouve dans la MC incluse dans le Bloc de Contrôle de Processus, elle contient :
- Le numéro de page.
- L’adresse dans la MS S.
- Un bit indiquant son existence dans la MC R.
- L’adresse de cette page si elle est chargée en MC PR.
- Un bit indiquant si la page est modifiée ou non M.
- Un bit de protection.
- Un bit de référence.
Gestion de la mémoire virtuelle dans la pagination :
1/La recherche : le gestionnaire cherche l’existence de la page virtuelle pour la charger en MC soit
dans la demande du processeur, soit par anticipation (prédiction d’utilisation).
3/Le déplacement : quelle page doit quitter la MC, si elle est saturée, pour charger une nouvelle
page référencée, le gestionnaire cherche une page victime à remplacer selon une des stratégies :
Avantages :
Inconvénients :
Une stratégie qui reproduit le découpage dans la mémoire tel qu’il est décrit par l’utilisateur et le
compilateur (découpage logique)
P:
Main() Fon1
Pile
Fon2 Data
Où :
e/ La segmentation paginée :
Cette technique a comme objectif de regrouper les avantages des deux techniques précédentes,
tel que :
- Le programme est découpé, en premier lieu, en segments logiques avec des tailles variables,
chaque segment est découpé en pages virtuelles de la même taille.
- La mémoire centrale est découpée en pages de la même taille.
- L’adresse virtuelle est un triple constitué du numéro de segment, numéro de page et le
déplacement dans la page.
V/ La protection mémoire :
Tout système doit offrir un mécanisme de protection contre les accès non autorisés à des blocs de
mémoire, suite à des erreurs de programmation ou autre. Les processus doivent être protégés entre
eux contre leurs activités. Deux modes sont proposés :
L’accès à une zone mémoire pour un processus donné est soit complètement autorisé, soit
interdit, c'est-à-dire en sachant les limites début et fin de cette zone, on indique si ce qui existe entre
ces limites soit protégé ou non.
2/ Protection spécifiée :
Permet de spécifier les opérations autorisées sur une zone mémoire, les opérations concernées
sont :
- La lecture (Read).
- L’écriture (Write).
- L’exécution (Execute).
I/ Introduction :
Dans l’exécution des différents processus, il faut disposer de plusieurs ressources machine
contribuant au long du cycle de vie d’un processus, la plus importante c’est la ressource qui effectue
l’exécution elle-même, c’est le processeur. Alors, pour cette ressource, le système d’exploitation
doit doter d’un ensemble de mécanismes gérant d’une manière efficace et optimale le travail du
processeur et contrôlant l’exécution des processus.
II/ Le processus :
1/ Définition :
Quand l’utilisateur lance l’exécution d’un programme, et quand la machine utilise le principe de la
mémoire virtuelle et le multitâche, alors ce programme passe par les étapes suivantes :
- Actif : (Elu) c'est-à-dire, le processus dispose de toutes les ressources nécessaires et il est en
train de s'exécuter au niveau du processeur.
- Prêt : (Eligible) c'est-à-dire, le processus dispose de toutes les ressources nécessaires sauf le
processeur processus en attente du processeur.
- Bloqué : le processus est en attente d’une autre ressource que le processeur ou d’un
évènement.
- Suspendu : le processus est arrêté temporairement par l’utilisateur ou le SE pour ne plus être
en compétition pour le processeur.
Pour chacun des états prêt, bloqué et suspendu, on associe une file d’attente pour les processus dans
cet état et elle est gérée par un outil du SE.
Fin de
Allocation de Actif Demande de processus
processeur ressource
Préemption
de processeur
Prêt
Nouveau Bloqué
processus
Suspendu
Levée de
suspension
Suspendu
A la création d’un processus (idem pour le job), son image est créée dans la mémoire contenant
toutes les informations nécessaires pour ce processus au long de son exécution, cette image
représente aussi le processus au niveau des différentes files d’attente des différents états. Cette
image est nommée descripteur ou bloc de contrôle de processus (job) PCB (JCB) qui contient :
La manipulation d’un processus se fait par des primitives nécessaires qui utilisent son PCB et se
sont des procédures systèmes. Ces primitives d’exécutent d’une manière indivisible :
1/ Le dispatcher :
- La commutation de contexte.
- Branchement vers la première instruction du processus pour l’exécution.
2/ Le scheduler :
Il s’occupe de la sélection du processus qui aura le prochain cycle d’exécution à partir de la file
d’attente des processus prêts, c’est l’ordonnanceur des processus.
- Lorsqu'un nouveau processus est créé, il faut décider s'il faut exécuter d'abord le processus
parent ou le processus fils.
- Il faut prendre une décision d'ordonnancement lorsqu'un processus se termine un autre
processus doit être choisi dans le jeu de processus prêts.
- Lorsqu'un processus bloque sur des E/S, un sémaphore ou autre (à voir en 3LMD), un autre
processus doit être sélectionné pour être exécuté.
- Lorsqu'une interruption d'E/S se produit, il faut également prendre une décision
d'ordonnancement.
- Si l'horloge matérielle fournit des interruptions périodiques à une fréquence de 50 ou 60 Hz,
par exemple, une décision d'ordonnancement peut être prise à chaque interruption d'horloge
(système à temps partagé).
Il permet de :
Il permet de :
- Politique SRTF : Short Remaining Time First le processus avec le temps restant le plus
court d’abord.
- Politique tourniquet (Round Robin) : cette politique consiste à allouer le processeur suivant
une durée limitée nomméele quantum de temps, où chaque processus entre pendant cette
durée de temps et il sort et attend un autre tour d’exécution. Cette politique est réalisée à
l’aide d’une file d’attente circulaire des processus prêts avec une gestion FIFO.
- Politique à plusieurs niveaux de queue : la file d’attente des processus prêts est subdivisée
en plusieurs files suivant la classe des processus (Batch, interactifs, temps réel, …), chacune
est gérée indépendamment.
I/ Définition :
On appelle entrée/sortie (Input/Output), toute opération de transfert d’information entre le
processeur, la mémoire et les organes externes.
Processeur Mémoire
Bus
Interface avec la
carte mère
Unité de
contrôle +
les registres
Interface avec le
périphérique
Signaux
Le périphérique
Dans ce mode, le processeur lance l’opération d’E/S puis il retourne à l’exécution des
processus utilisateur, à des intervalles réguliers brefs, le processeur est interrompu pour vérifier si
cette opération est achevée.
Même inconvénient de perte de temps due au traitement des interruptions fréquentes de
l’horloge.
Mode asynchrone :
Le processeur est libéré du contrôle de fin de transfert où le contrôleur est muni d’une ligne
d’interruptions qui sera utilisée pour informer le processeur. Après la réalisation de transfert, le
contrôleur génère une interruption qui informe de la fin de transfert dont il faut exécuter une routine
d’interruption.
L’inconvénient de ce mode est la perte de temps pour exécuter ces routines d’interruption.
2. E/S physique indirecte :
Cette technique est proposée pour améliorer les performances du processeur, elle consiste à le
libérer totalement du suivi des E/S jusqu’à ce que leur déroulement se termine. On utilise un
dispositif indépendant dit canal.
Mode canal :
Un canal est un processeur programmable qui peut exécuter une suite d’opérations d’E/S, il
exécute un programme canal résidant en MC.
Le processeur initialise une opération d’E/S en envoyant une instruction spéciale au canal, et
en lui indiquant où trouver le programme canal qui lance l’E/S. le canal exécute alors toutes les
commandes de ce programme indépendamment du processeur. A la fin d’exécution le canal envoie
une interruption au processeur pour l’avertir de la fin d’E/S.
L’accès direct mémoire (DMA) :
Le DMA est un canal simplifié utilisé dans les ordinateurs de petite taille, il peut être connecté
entre le contrôleur et le bus mémoire, permettant ainsi aux périphériques d’accéder à la mémoire
sans passer par le CPU. Si le DMA et le CPU demandent simultanément un accès à la mémoire, le
DMA passe en priorité.
Il se compose de :
- Un registre d’adresse mémoire (contient le début de bloc où se trouvent les informations
dans la mémoire).
- Un registre de commande RC (indique le sens de transfert lecture ou écriture).
- Un registre compteur de caractères RCC (nombre de caractère à lire ou écrire).
- Le registre RAP (l’adresse du périphérique concerné).
Il fonctionne de la manière suivante :
Le processeur initialise le DMA en envoyant dans le registre d’adresse l’adresse de début du
bloc dans la mémoire, le nombre de caractères dans le RCC, fournit l’adresse du
périphérique concerné dans le RAP et le code de l’opération à exécuter dans le registre RC.
Le DMA remplace le processeur dans le transfert.
Après la fin de l’opération, il transfert une interruption au processeur.
Expliquer en détails le principe de travail du contrôleur DMA pour transférer 500 caractères à un
périphérique écran dont le numéro est 4. Ces caractères se trouvent à partir de l’adresse 1400 dans
la mémoire centrale.
Le DMA lire le premier caractère de la mémoire centrale à partir de l’adresse 1400, le transfert dans
le tampon de l’écran, décrémente le compteur et incrémente l’adresse pour passer au caractère
suivant.