Академический Документы
Профессиональный Документы
Культура Документы
programmes
Maza Sofiane.
www.computer-science-dz.wix.com/bbami
Architecture et technologie des
ordinateurs
Structure matérielle d’une machine de
Von Neumann
Processeur
Processeur
Processeur
CO, RI, RDO (RD ou R M : registre de memoire) : registre de données,
RAD(RA) :registre d’adresse.
Registre de processeur :
CO (conteur ordinaire)
Registre instruction (RI) : (instruction : champ code opération et entre 0 et 3
champs opérande).
Accumulateur (ACC) : au niveau d’UAL. Contient un des opérandes avant
l’exécution et le résultat après.
Registres généraux : les registres d’index, de base…etc.
Registre d’état :[PSW = Program StatusWord ] : appelé aussi register
condition, il contient différents bits appelés drapeaux [falgs] indiquant l’état d’une
condition particulière dans le CPU. Plusieurs bits indicateur qui défini l’état de CPU
(mode d’exécution, masque d’interruption, dépassement de capacité dans l’ACC)
Registre pointeur de pile [SP = Stack Pointer] : utilisé pour simuler une pile dans
la mémoire centrale.
Les deux cycles de processeur
Le cycle d’exécution du processeur est divisé en deux niveau : cycle de recherche (Fetch) + cycle
d’exécution (Execute) = cycle indivisible l’arrêt ne peut se faire qu’à la fin de la phase
Execute.
Les deux cycles de processeur
Mémoire
les unités d’E/S
a- les déroutements :
b- les Appels au superviseur (SVC):
a- les déroutements : c’est une exception levée suite à une
anomalie (une erreur) générée par l’exécution de l’instruction
courante. Il peut être provoqué par :
- une erreur arithmétique : division par zéro, débordement, …
- référence d’une adresse mémoire hors inexistante (limites de la
mémoire disponible).
- une violation de la protection mémoire.
- une instruction illégale
- tentative d’exécution d’une instruction privilégiée en mode
esclave.
- les défauts de page, débordement de pile, …
A la suite d’un déroutement, l’utilisateur sera averti de l’erreur
commise et le processus actif est arrêté immédiatement.
b- les Appels au superviseur (SVC): Un appel au superviseur
(SVC : SuperVisor Call) est une instruction qui a pour fonction
de provoquer le changement d’état du processeur. Un appel au
superviseur provoque l’exécution d’un programme spécifié avec
un changement du mot d’état du processeur et sauvegarde de
l’état au moment de l’appel.
Cette instruction est principalement utilisée pour réaliser l’appel,
à partir d’un programme utilisateur exécuté en mode asservi, par
exemple des fonctions d’accès aux fichiers (ouvrir, lire ,
fermer…etc). ces appels offrent des services de système
d’exploitation.
Fonctionnement d’interruption
SE:
1. Sauvegarde d’un contexte
minimal de programme P.
2. Recherche cause.
3. Passage en mode maître pour
traiter l’interruption (IT).
4. Il faut trouver le programme qui
traite IT (routine
d’interruption) au niveau de
vecteur d’interruption
Routine d’interruption
Traitement d’interruption
Le vecteur d’interruption
SE:
1. Sauvegarde d’un contexte
minimal de programme P.
2. Recherche cause.
3. Passage en mode maître pour
traiter l’interruption (IT).
4. Il faut trouver le programme qui
traite IT (routine
d’interruption) au niveau de
vecteur d’interruption
Routine d’interruption
+ N° d’IT
CPU
Pgme Exécution
source1 Traducteur Pgme
obj1
Pgme Pgme Pgme Chargeur
(Compilateur Éditeur de liens
source2 obj2 exécutab
et /ou ……
le Chargement
… Assembleur) dans la MC
… Pgme
Pgme obj n
source n
Sous-pgmes de
bibliothèques
Traducteur d’un langage
Traducteurs
Le cas de Java et C#
Traducteur d’un langage
Programme source
Langages évolués ou assembleur
Prog.c ou prog.asm ..
Compilateur/assembleur
Langage binaire
programme objet
prog.o, prog.obj ..
Compilation
Compilateur
Programme source
Assembleur
LIENS
Module B
Liens Variable
Procédure
Édition de lien:
Par la compilation séparée de chaque module source, les références externes LAS ne peuvent
pas être résolues.
M1
Modules
M2 programme Biblio
thèque
M3
Éditeur de lien
// exp.c
#include <stdio.h>
void main(void)
{
compilateur
extern carre( float e)
exp.obj ou exp.o
float k = 10;
k = carre(k);
printf("%f", k);
}
Bibliothèque Exp.exe ou
« stdio » Exp
Éditeur de liens
// carre.c
compilateur
float carre(float);
carré.obj ou
float carre( float e) carre.o
{
return( e*e) ;
}
Éditeur de lien
Ces deux passes peuvent être détaillés par:
2- Construire la table des liens utilisables (LU) par module en affectant à chacun son
adresse locale dans le module
3- Construire la table des liens à satisfaire (LAS) par module en affectant à chacun la
valeur INDEF
4- Construire le programme final en plaçant les modules l’un après l’autre tout en
modifiant l’adresse de départ de chacun par rapport au début du programme.
@ départ_ Mi = @chargement + @départ_Mi-1 + taille Mi-1
Éditeur de lien
000
J 150
Résultat de liaison
000 …..
A
150 J 150
lw $a1, X 150
300 lw $a2, X
400 jal B Le but est
300
Module Objet B
400 jal B Problème de
X =000 ….. B références
produire un module X =401 ….. externes
300 lw $a1, 04 relatif
@ de base= 0000 700 Lw $a1, 04
500 Jal C
Adresse fixe
600
900 jal C non translatable
500 J 100
1500 J 100
Éditeur de lien
Translation de tous les adresse dans le
module résultant de l’édition de liens
La compilation génère des modules objets relatifs et en indiquant à l'éditeur
de liens l'ensemble des adresses qu'il peut translater.
Ex. lw $a1, a ; a étant une variable ( donc une adresse translattable)
lw $ra, 4($sp)
L’adresse 4($sp) est translatable?
$sp est une valeur d’une adresse qui ne doit pas être translatée
• l’Lors de l'édition de liens, la translation s'effectue en ajoutant à chaque
adresse translatable relative l'@ début du module
500 J 100
Module Objet A Module Objet B Module Objet C
000 J 150 X =000 ….. 000 lw $a0, ($sp)
100
150 lw $a0, X 300 Lw a1, 04 200 ….
Exemples :
- langage C : *.h en utilisant les « headers » #include stdlib.h
- langage Pascal : *.lib; en utilisant uses crt;
- Java : les package : import javax.swing.jpanel
Éditeur de lien
Édition de lien statique
Exp.obj
Exp.o
Module .exe
Ou sans extension dans LINUX
carré.obj
Carre.o entete
Stdio
Code de Carré
….
….
Éditeur de lien
Édition de lien statique
Avantages ??
- Puisque les codes des procédures sont dans l'exécutable ceci facilite le transport
du programme exécutable.
Inconvénients??
- Le code d'une procédure peut exister en plusieurs copies dans la MC, selon le
nombre des programmes faisant appel à cette procédure.
- La taille de l'exécutable est grande.
Éditeur de lien
Édition de lien dynamique
L'éditeur de lien retarde la résolution des appels aux procédures d'une bibliothèque à l'étape
de chargement.
Nom de la bibliothèque
Module @début
M1 @1
M2 @2
…. ….
Mn @n
Code M1
Code M2
….
Code Mn
Éditeur de lien
Édition de lien dynamique
Avantages ??
- Plusieurs exécutables peuvent utiliser la même bibliothèque, cela permet de gagner de l'espace
mémoire.
- On peu remplacer une bibliothèque par une version plus récente (plus performante, plus fiable par
exemple) sans avoir besoin de recompiler le programme qui va utiliser cette bibliothèque.
Inconvénient ??
-Il arrive qu'une nouvelle bibliothèque ne soit plus compatible avec la version antérieure. (Si on
installe une nouvelle bibliothèque les exécutables utilisaient l'ancienne version ne fonctionnent plus.)
Chargeur
Pour exécuter un pgme il faut charger son exécutable, généralement à partir de la
Mémoire secondaire, en Mémoire centrale. Cette opération est confiée à un module
spécial du SE appelé le chrageur.
MC
P1
P1
Chargeur
L’exécutable généré par l’éditeur de lien est relatif : les adresses sont générées par rapport
au début du programme : 0000 ?
MC
?
000C
07D5
2500
????
A1 0000 P1
03 06 0002
A3 0004
B4 4C
CD 21
Chargeur
Compile and Go Compilateur
Avantage:
Inconvénient:
Le module objet ne peut pas profiter de toute l'espace mémoire, une partie de la
mémoire est occupée par le compilateur/assembleur et le programme.
libre
0400 000C
0402 07D5
000C 0404 ? ? ? ?
07D5 0406 2E: A1 0400
????
040A 2E: 03 06 0402
A1 0400
040F 2E: A3 0404
03 06 0402
0413 B4 4C
A3 0404
0415 CD 21
B4 4C
CD 21
libre
Chargeur
Chargeur de réimplantation (relogeable)
Avantage:
Un module translatable peut être chargé à n'import quel espace mémoire libre
multiprogrammation.
Inconvénients:
Temps consommé par le chargeur pour trouver un espace libre.
A chaque déplacement de module, il faut re-translater les adresses.
Chargeur
Chargeur de réimplantation (relogeable)
- Le pgme sera chargé à partir de l’adresse début de cet espace, soit adr
libre
Chargeur
Translation à l'exécution
Avantages :
Inconvénient
L’édition de liens s’intéresse à la résolution des références externes et la liaison des différents modules
pour construire un seul : programme exécutable. Cette édition de lien peut être statique ou
dynamique.
Un programme est exécuté par un processeur seulement s’il est chargé en MC. Le chargement est
accompli par un chargeur de type compile and go, absolu, relogeable.