Académique Documents
Professionnel Documents
Culture Documents
Définition
On appelle Entrée/Sortie (Input/Output) toute opération de transfert
d’informations (données et programmes) entre l’ordinateur (processeur et
mémoire centrale) et les organes externes (périphériques de stockage et de
communication).
Les périphériques
Classification (suite)
Selon le mode du transfert d’informations :
Périphériques de type caractères (claviers, souris, Ecrans, imprimantes …)
Les données sont envoyées ou reçues octets par octets
Accès Séquentiel
Périphériques de type Blocs (Disques durs,..)
Les données sont envoyées ou reçues Blocs par Blocs
BELGUERCHE & ZEBBANE Accès Aléatoire 6
PRÉSENTATION DU MATÉRIEL
Les Contrôleurs
Un contrôleur (Controller) est une unité spéciale, appelée aussi module d’E/S
(I/O module) ou coupleur, qui sert d’interface entre le périphérique et l’UC.
Fonctions d’un contrôleur d’E/S :
Lire ou écrire des données du périphérique.
Lire ou écrire des données de l’UC/Mémoire.
Contrôler le périphérique et lui faire exécuter des séquences de tâches.
Tester le périphérique et détecter des erreurs.
Mettre certaines données du périphérique ou de l’UC en mémoire tampon afin d’ajuster
BELGUERCHE & ZEBBANE 7
Les Contrôleurs
Un contrôleur dispose, pour chaque périphérique qu’il gère, de trois (03) types de
registres :
Registres de données (RD): destinés à contenir les informations échangées avec le
périphérique. Ils peuvent être lus (entrée) ou écrits (sortie).
Registre d’état (RE) : qui permet de décrire l’état courant du coupleur (libre, en cours
de transfert, erreur détectée,...).
Registre de contrôle (RC) : qui sert à préciser au coupleur ce qu’il doit faire, et dans
quelles conditions (vitesse, format des échanges,...). 8
BELGUERCHE & ZEBBANE
PRÉSENTATION DU MATÉRIEL
Les Contrôleurs
Les Contrôleurs
Périphérique 1
Contrôleur i
R
PC RC 0
RE 1 Périphérique i
RD
M Adr
Périphérique n
C
BELGUERCHE & ZEBBANE 10
PRÉSENTATION DU MATÉRIEL
Les Contrôleurs
Périphérique 1
Contrôleur i
R XX
PC X RC 1
RE 01 Périphérique i
RD XX
X
M Adr XX
X Périphérique n
C
BELGUERCHE & ZEBBANE 11
PROJECTION DES E/S
Les registres peuvent être lus ou modifiés par des instructions ordinaires (MOV).
BELGUERCHE & ZEBBANE
MODES DE PILOTAGE DES E/S
Modes de pilotage
Direct Indirect
Synchrone Asynchrone
DMA: Direct
Memory Access
Le PC est impliqué Le PC est impliqué
complètement dans le Partiellement dans le Le PC est déchargé
control et le suivi de l’E/S control et le suivi de l’E/S complètement du control et du
suivi de l’E/S
E/S
C.P.Cxt
<S.G.Cxt> I T A A T A A A T T B T T
Dem E/S C D F C D F
A E A B E B
CPU
/ /
Traitement de la Dem d’E/S S S
A B
R.P.Cxt 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1
T(ut)
0 1 2 3 4 5 6 7 8 9
<R.G.Cxt>
Fin.
Quel est le programme système qui se Comment une Dem d’E/S est
charge du traitement d’une Dem d’E/S? traitée?
pilotage
MODES DE PILOTAGE DES E/S : MODE SYNCHRONE
E/S
C.P.Cxt
<S.G.Cxt> I TC A A S P A A A T F
Dem E/S A A
V
i
Appel au Pilote_Synchrone C
l
CPU
R.P.Cxt o
<R.G.Cxt>
t
Fin.
e
0 1 2 3 4 5 6 7 8 9 10 11
T(ut)
Tc Dem d’E/S
15
BELGUERCHE & ZEBBANE
MODES DE PILOTAGE DES E/S : MODE SYNCHRONE
Pilote_Synchrone(….) A A A
Début
E/S
Répéter I TC A A S P P P P A A A T F
A A
V
Lancer le transfert d’un i i i i
C
caractère ou d’un bloc en l l l l
initialisant les registres RC et
CPU
RE. o o o o
Attendre la fin du Transfert t t t t
d’un caractère ou d’un bloc en
vérifiant le registre RE e e e e
Fi 10 Périphérique i
BUF X X
i Y
Adr
M X Périphérique n
C
BELGUERCHE & ZEBBANE 17
MODES DE PILOTAGE DES E/S : MODE SYNCHRONE
RE 10 Périphérique i
RD Y X
Y
Adr
M X Y Périphérique n
C
BELGUERCHE & ZEBBANE 18
MODES DE PILOTAGE DES E/S : MODE SYNCHRONE
Exemple: Entrée Synchrone
Entrée_Synchrone(N, Adr)
Pgme A SVC(Cause = E,Id_Périph, N=Taille(x), Début
Adr = Adr(x)) // (1)Lancer le transfert d’1 car
C.P.Cxt Début RC := 1;
<S.G.Cxt>
Lire(x); Et1: RE := 0;
Cas cause vaut
// (2)Attendre la fin du transfert
Entée:
//Appel au Pilote
Et2:Si RE = 0 Alors goto Et2; Fsi;
Entrée_Synchrone (N, Adr); // (3) Placer le car en MC
R.P.Cxt Fcas; R := RD; Mov Adr, R;
// (4) Vérifier si un autre car à
<R.G.Cxt> transférer
Fin. N--;
Si N ≠ 0 Alors Adr ++;
goto Et1;
Sinon RC := 0;
19
BELGUERCHE Fsi;
& ZEBBANE
Fin.
MODES DE PILOTAGE DES E/S : MODE SYNCHRONE
Exemple: Entrée Synchrone A A A
S
/
I TC A A S P P P P A A A T F
A A
V i i i i
l l l l
C
(1) Lancer le transfert
CPU
o o o o
(2) Attendre la fin de transfert
(3) Placer le car en mémoire t t T t
(4) Vérifier si il existe d’autre
car à transférer
T 0 1 2 3 4 5 6 7 8 9 10 11
u
(
t
)
2eme 3eme Neme
1er
E/S
I TC A A S (1) (2) (3) (4) (1) (2) (3) (4) (1) (2) (3) (4) (1) .... .... (1) (2) (3) (4) A A A TFA
A
V
CPU
C P I T E
L O
0 1 2 3 4 7 8 9 10 11 20
T(ut)
E/S
Comment I TC A A T B B B T B …
? A
D F
…
CPU
E/S E/S
ut)
T(
autre pgme
2eme 3eme Neme
1er
E/S
I TC A A S (1) (2) (3) (4) (1) (2) (3) (4) (1) (2) (3) (4) (1) .... .... (1) (2) (3) (4) B … ….
A
V
B B B B
CPU
Pilote Asynchrone
Init Rit
Elle s’exécute une seule fois
Elle s’exécute N fois et permet
et permet de lancer le
de lancer le transfert des
transfert du premier car ou
autres car ou bloc
bloc
22
BELGUERCHE &
ZEBBANE
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE
Exemple:
2eme
1er 3eme Neme
E/S
Car Car
Car Car
A A A
E/S
CPU
A
D F
CPU
C
E/S E/
S 7 8 9
0 1 2 3 4
T(ut)
0 1 2 3 4 5 6 7 8 9
ut)
T(
Tc
Dem
d’E/S
Tc Fin
d’E/S
23
BELGUERCHE &
ZEBBANE
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE
RD X X
Y
Adr
M X Périphérique n
C
BELGUERCHE & ZEBBANE 24
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE
RE 10 Périphérique i
RD Y X
Y
Adr
M X Y Périphérique n
C
BELGUERCHE & ZEBBANE 25
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE
P-Actif Exemple: Entrée Asynchrone
Pgme A SVC(Cause,Id_Périph, N, Adr) Entrée_Asynchrone.Init(N, Adr)
Début Début
<S.G.Cxt> //Vérifier la disponibilité du périphérique
C.P.Cxt Cas cause vaut Si RE = 1 Alors //Lancer le transfert d’1 car
Lire(x); Entée: RC := 1;
Vérifier les droits d’accès RE := 0;
P-Actif.etat := ”Bloqué
P-Actif.etat ”; ”;
:= ”Bloqué
Enfiler
Enfiler (F pb, P-Actif);
(Fpb, P-Actif);
P-Actif Sinon //Mettre en attente la dem
//Appel au Pilote
d’E/S
Pgme B Entrée_ASynchrone.Init (N, Adr);
Enfiler (FE/S, Dem);
LPSW(Scheduler);
LPSW(Scheduler)
Fcas; ; Fsi;
Fin. Fin.
Scheduler()
…..
BELGUERCHE
//Choisir une autre pgme user 26
& ZEBBANE LPSW(B);
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE
Exemple: Entrée Asynchrone (Suite)
Entrée_Asynchrone.Rit(N, Adr)
P-Actif Début
Pgme B <S.G.Cxt>
//Placer le car en MC
C.P.Cxt R := RD; Mov Adr, R;
// Vérifier si un autre car à transférer
N--;
It-Fin d’E/S Si N ≠ 0 Alors Adr ++;
RE := 0;
Sinon //Fin de transfert de tous les car
Défiler (Fpb, P);
P.état := Prêt ;
Enfiler(Fp, P);
Si vide (FE/S)
Alors Défiler (FE/S,Dem) ;
Entrée_Asynchrone.Init(Dem.N, Dem.Adr);
Sinon RC := 0;
Fsi;
27
BELGUERCHE R.P.Cxt Fsi;
& ZEBBANE
<R.G.Cxt>
Fin.
MODES DE PILOTAGE DES E/S : MODE D’ACCÈS DIRECT À LA
MÉMOIRE (MODE DMA)
Idée : Eliminer l’envoi des interruptions au
PC à chaque fin de transfert d’un car ou
bloc
Comment
? 1er
2eme 3eme Neme
E/S
Car Car
Car Car
I TC A A S Init B Rit B Rit B Rit .... .... B Rit B ...
A
En déchargeant le PC de la tache de V
transférer la données vers ou de la
CPU
MC C Tc Fin
d’E/S
Tc
Dem
0 1 2 3 d’E/S 4 7 8 9
T(ut)
Architecture
Périphérique 1
Contrôleur DMA Contrôleur i
PC RC 0
Accès
verrouillé
RCpt
RE 1 Périphérique i
RAdr
RD
M Périphérique n
C
BELGUERCHE & ZEBBANE 29
Gestionnaire de
conflits
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE DMA
Pilote Asynchrone
DMA
Init Rit
30
BELGUERCHE &
ZEBBANE
MODES DE PILOTAGE DES E/S : MODE D’ACCÈS DIRECT À LA
MÉMOIRE (MODE DMA)
Car Car
Car Car
I TC A A S Init B B B B B B .... .... .... B Rit B ...
A
V
CPU
0 1 2 3 4
T(ut)
31
BELGUERCHE &
ZEBBANE
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE DMA
Adr X
M Demand
e d’accès Périphérique n
C
BELGUERC
à la MC
HE & 32
ZEBBANE Gestionnaire de
conflits
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE DMA
P-Actif Exemple: Entrée Asynchrone DMA
Pgme A SVC(Cause,Id_Périph, N, Adr) Entrée_Asynchrone_DMA.Init(N, Adr)
Début Début
<S.G.Cxt> //Vérifier la disponibilité du DMA
Cas cause vaut Si DMA libre
Lire(x); Entée: Alors //Initialiser le DMA
C.P.Cxt Vérifier les droits d’accès Rcpt := N;
P-Actif.etat := ”Bloqué ”;
Radr := Adr;
Enfiler (Fpb, P-Actif);
P-Actif //Initialiser le controleur
//Appel au Pilote
Entrée_Asynchrone_DMA.Init (N,Adr); RC := 1;
Pgme B RE := 0;
LPSW(Scheduler);
LPSW(Scheduler)
Fcas; ; Sinon //Mettre en attente la dem d’E/S
Fin. Enfiler (FE/SDMA, Dem);
Fsi;
Scheduler() Fin.
…..
BELGUERCHE
//Choisir une autre pgme user 33
& ZEBBANE LPSW(B);
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE DMA
Exemple: Entrée Asynchrone DMA (Suite)
P-Actif Entrée_Asynchrone_DMA.Rit(N, Adr); //Elle est lancée à la fin du transfert de tous les car
Pgme B Début
<S.G.Cxt>
C.P.Cxt Défiler (Fpb, P);
P.état := Prêt ;
Enfiler(Fp, P);
It-Fin d’E/S Si vide (FE/SDMA)
Alors Défiler (FE/SDMA,Dem) ;
Entrée_Asynchrone_DMA.Init(Dem.N, Dem.Adr);
Sinon RC := 0;
R.P.Cxt Fsi;
<R.G.Cxt>
Fin.
34
BELGUERCHE
& ZEBBANE
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE DMA
P-Actif Exemple: Pilote Asynchrone DMA
Pgme A SVC(Cause,Id_Périph, N, Adr) Pilote_Asynchrone_DMA.Init(N, Adr)
Début Début
<S.G.Cxt> //Vérifier la disponibilité du DMA
Cas cause vaut Si DMA libre
Ecrire(x); Entrée/Sortie: Alors //Initialiser le DMA
C.P.Cxt Vérifier les droits d’accès Rcpt := N;
P-Actif.etat := ”Bloqué ”;
Radr := Adr;
Enfiler (FpbDMA, P-Actif);
P-Actif //Initialiser le controleur
//Appel au Pilote
Pilote_Asynchrone_DMA.Init (N,Adr); RC := 1;
Pgme B RE := 0;
LPSW(Scheduler);
LPSW(Scheduler)
Fcas; ; Sinon //Mettre en attente la dem d’E/S
Fin. Enfiler (FE/SDMA, Dem);
Fsi;
Scheduler() Fin.
…..
BELGUERCHE
//Choisir une autre pgme user 35
& ZEBBANE LPSW(B);
MODES DE PILOTAGE DES E/S : MODE ASYNCHRONE DMA
Exemple: Pilote Asynchrone DMA (Suite)
P-Actif Pilote_Asynchrone_DMA.Rit(N, Adr); //Elle est lancée à la fin du transfert de tous les car
Pgme B Début
<S.G.Cxt>
C.P.Cxt Défiler (FpbDMA, P);
P.état := Prêt ;
Enfiler(Fp, P);
It-Fin d’E/S Si vide (FE/SDMA)
Alors Défiler (FE/SDMA,Dem) ;
Pilote_Asynchrone_DMA.Init(Dem.N, Dem.Adr);
Sinon RC := 0;
R.P.Cxt Fsi;
<R.G.Cxt>
Fin.
36
BELGUERCHE
& ZEBBANE