Gestion des Périphériques
description
Transcript of Gestion des Périphériques
PERI Master ACSI cours 7 - 1
Gestion des Périphériques
Année 2006 - 2007
(Transparents de F. Dromard)
PERI Master ACSI cours 7 - 2
Principes généraux des E/S
Modes d’échanges Echanges programmés avec scrutation Echanges programmés sur interruption Echanges par accès direct mémoire
PERI Master ACSI cours 7 - 3
Principes généraux des E/S
Echanges par accès direct mémoire Transferts : périphérique -- mémoire sans
intervention du processeur Matériel supplémentaire ADM Accès à la mémoire partagé entre processeur et
ADM Sychronisation par signaux
PERI Master ACSI cours 7 - 4
réponse
Principes généraux des E/S
Echanges par accès direct mémoire Cheminement des données pour une opération
d’entrée
ProcesseurMémoire Périphérique
données
IT
ADM demande
réponse
demande
donnéesdonnées
PERI Master ACSI cours 7 - 5
réponse 1
demande1
réponse
Principes généraux des E/S
Echanges par accès direct mémoire Une paire de signaux « demande-réponse » par
périphérique utilisant l’ADM
ProcesseurMémoire Périph. 1
IT
ADMdemande Périph. 2
demande 2réponse 2
PERI Master ACSI cours 7 - 6
Principes généraux des E/S
Echanges par accès direct mémoire Le processeur initialise le périph et l’ADM Echanges directs périphérique - mémoire sous
contrôle de l’ADM Interruption en fin d’opération
PERI Master ACSI cours 7 - 7
Principes généraux des E/S
Echanges par accès direct mémoire Initialisation de l’ADM
Adresse de début zone mémoire Nombre de transferts Sens du transfert
A chaque transfert Incrémentation de l ’adresse Décrémentation du compte Fin d’opération lorsque compte = 0
PERI Master ACSI cours 7 - 8
Principes généraux des E/S
Echanges par accès direct mémoire Transfert mémoire - périphérique
demande périph -> adm
dem. bus adm -> proc
rep. bus libre proc -> adm
adresse adm
lec mem adm -> mem
donnée mem
ecr e/s adm -> périph
échange
PERI Master ACSI cours 7 - 9
Disques magnétiques
Adaptateur hôte : PCI ATA
processeur
pont hôte
Bus PCI
mémoire
adaptateurATA
D0
contrôleur
D1
contrôleur
D0
contrôleur
D1
contrôleur
primaire
secondaire
PERI Master ACSI cours 7 - 10
Disques magnétiques
Adaptateur hôte : PCI ATA
Registres de base E/S
Adresse de base des registres Cmd-Block
Adresse de base des registres Contrôle
Adresse de base des registres Cmd-Block
Adresse de base des registres Contrôle
10h
14h
18h
1Ch
20h
primaire
secondaire
Accès en mode programmé
PERI Master ACSI cours 7 - 11
Disques magnétiques
Adaptateur hôte : PCI ATA
Registres de base E/S
Registres de maître de bus
Adresse de base des registres Maître de Bus
Registre de commandeRegistre d’état
Adresse PRD Table
20h
00h
04h
08h
primaire
secondaire
Mode accès direct mémoireRegistre de commandeRegistre d’état
Adresse PRD Table0Ch
PERI Master ACSI cours 7 - 12
Disques magnétiques
Adaptateur hôte : PCI ATA
Table de descripteurs
Physical Region DescriptorAdresse physique de la région en mémoire
EOT Nombre d’octets
1 : indique la fin de la table
01532
P R D
P R D
P R D
P R D
Une requêtelecture ou écriture
PERI Master ACSI cours 7 - 13
Disques magnétiques
Adaptateur hôte : PCI ATAADM, déroulement des opérations
Créer la table de descripteurs, en mémoire Initialiser l’adaptateur hôte (adr. table, direction) Envoyer au disque de la commande avec ADM Activer la fonction maître du Bus Transférer sur demande du disque Interruption de fin de transfert Vider les tampons en mémoire, répercuter l’IT Désactiver la fonction maître du Bus
PERI Master ACSI cours 7 - 14
Disques magnétiques
Adaptateur hôte : PCI ATA
Automatic Direct Memory Access (ADMA)
Utilise des structures de données en mémoireCommand Parameter Bloc (CPB)
ADMA Physical Region Descriptor (APRD)
Utilise une zone de registres de 256 mots Exécute une suite de commandes
PERI Master ACSI cours 7 - 15
Disques magnétiques
Adaptateur hôte : PCI ATA
Automatic Direct Memory Access (ADMA)
Proc.
Ponthôte
Bus PCI
mémoire
Adaptateur ATA
D0
contrôleur
primaire
Structuresde données
ADMA
256 motsreg. base
automate
fifo
PERI Master ACSI cours 7 - 16
Disques magnétiques
Adaptateur hôte : PCI ATA
Automatic Direct Memory Access (ADMA)
CPB APRD APRD APRD
CPB APRD APRD APRD
CPB APRD APRD APRD
CPB next address
registre
PERI Master ACSI cours 7 - 17
Disques magnétiques
Adaptateur hôte : PCI ATA
Command Parameter Bloc
longueur flags
adresse du prochain CPB
adresse du premier APRD
initialisation des registres
CPB
PERI Master ACSI cours 7 - 18
Disques magnétiques
Adaptateur hôte : PCI ATA
ADMA Physical Region Descriptor
Longueur en mémoire
flags
adresse en mémoire
adresse du prochain APRD
APRD
PERI Master ACSI cours 7 - 19
Pilotes de Périphériques
Introduction Programmes spécialisés Gère des périphériques de même type Gère ce qui est spécifique au périphérique Ecriture d’un pilote
Compréhension du périphérique Connaissance du système Mécanismes système à utiliser Règles à respecter
PERI Master ACSI cours 7 - 20
Pilotes de Périphériques
Rappels sur le système Unix Multi-utilisateurs Multitâches Mémoire virtuelle Exécution des programmes
Mode utilisateur Mode noyau (système)
PERI Master ACSI cours 7 - 21
Pilotes de Périphériques
Rappels sur le système Unix Appels systèmes
utilisateur1 utilisateur2 utilisateur3
servicessystème
exécution enmode utilisateur
exécution enmode noyau
PERI Master ACSI cours 7 - 22
Pilotes de Périphériques
Rappels sur le système Unix Gestion de la mémoire
Adresses virtuelles Une partie réside en mémoire Protection des zones mémoire
Le noyau réside en mémoire
PERI Master ACSI cours 7 - 23
Pilotes de Périphériques
Organisation du noyau Unix
sous-systèmede contrôle
des processus
Interface des appels système
sous-système de fichiers communicationsinterprocessus
ordonnanceur
gestion mémoire
Cache E/S
Pilotes de périphériques
périphériques mémoire matériel
noyau
utilisateursAppels systèmes
PERI Master ACSI cours 7 - 24
Pilotes de Périphériques
Rappels sur le système Unix Unix est bâti sur la notion de fichiers Un fichier est une suite d ’octets Les périphériques sont traités comme des fichiers Accès avec : open, read, write, ioctl, close, ...
PERI Master ACSI cours 7 - 25
Pilotes de Périphériques
Rappels sur le système Unix Un périphérique est caractérisé par :
Nom (chemin d’accès) Type : bloc ou caractère Numéro majeur (major) Numéro mineur (minor)
PERI Master ACSI cours 7 - 26
Pilotes de Périphériques
Appels systèmes (pt de vue utilisateur) open
Crée les structures de données nécessaires Initialise le contrôleur Renvoie le ‘file descriptor ’ fd Erreur si fd < 0
fd = open(chemin,flags,mode)droits d’accès pour O_CREAT
O_RDONLYO_RDWRO_CREAT. . . .
PERI Master ACSI cours 7 - 27
Pilotes de Périphériques
Appels systèmes (pt de vue utilisateur) read, write
err = read (fd, buf, count)
nombre d’octets
adresse des données
file descriptor
PERI Master ACSI cours 7 - 28
Pilotes de Périphériques
Appels systèmes (pt de vue utilisateur) ioctl
Envoi de commandes spécifiques à un périphérique Récupération d’informations spécifiques à un périphérique
err = ioctl (fd, cmd, arg)
argument
commande
file descriptor
PERI Master ACSI cours 7 - 29
Pilotes de Périphériques
Appels systèmes (pt de vue utilisateur) close
Supprime la connexion logique avec le périphérique Désalloue les structures de données
err = close (fd)
file descriptor
PERI Master ACSI cours 7 - 30
Pilotes de Périphériques
Définition Procédures Structures de données Seules procédures accédant directement au
matériel Spécifique du périphérique
PERI Master ACSI cours 7 - 31
Pilotes de Périphériques
Organisation
gestion des fichiers
Pilote de périphérique
périphériques matériel
noyau
utilisateursread(), write(), ioctl(), close()
gestion des entrées/sortiesnon spécifiques
open read close intr gestion des entrées/sortiesspécifiques
PERI Master ACSI cours 7 - 32
Pilotes de Périphériques
Procédures du pilote Correspondant aux appels utilisateur
xxxxopen xxxxread xxxxwrite xxxxioctl xxxxclose
Exécutées dans le contexte du processus appelant
PERI Master ACSI cours 7 - 33
Pilotes de Périphériques
Procédures du pilote Autres procédures
xxxxstrategy xxxxinit xxxxintr
Exécutées dans contexte inconnu
PERI Master ACSI cours 7 - 34
Pilotes de Périphériques
Appels système <--> procédures du pilote Table pour les périphériques blocs
majeur @ open @ close @ strategy
0 @ dskopen @ dskclose @ dskstrategy
1 @ dsk1open @ dsk1close @ dsk1strategy
2
3 @ scsibopen @ scsibclose @ scsibstrategy
4
PERI Master ACSI cours 7 - 35
Pilotes de Périphériques
Appels système <--> procédures du pilote Table pour les périphériques caractères
majeur @ open @ close @ read
0 @ conopen @ conclose @ conread
1 @ sysopen @ sysclose @ sysread
2
3
@ scsiopen @ scsiclose @ scsiread
4
@ ttyopen @ ttyclose @ ttyread
@ write
@ conwrite
@ syswrite
@ scsiwrite
@ ttywrite
@ ioctl
@ conioctl
@ sysioctl
@ scsioctl
@ ttyioctl
PERI Master ACSI cours 7 - 36
Pilotes de Périphériques
Appels système <--> procédures du pilote Cas de linux : blk_devs , char_devs
majeur
0 * name * file_operation
1 * name * file_operation
2
3 * name * file_operation
4
pointeursur le nom
pointeur sur lastructure file_operation
PERI Master ACSI cours 7 - 37
Pilotes de Périphériques
Appels système <--> procédures du pilote Cas de linux : structure file_operationtable
char_devspilote
nom
structure file_operation
read
write
3
PERI Master ACSI cours 7 - 38
Pilotes de Périphériques
Exemples : majeur, mineur
pilote bloc dskmajeur 0
pilote bloc Amajeur 2
pilote caractère Bmajeur 0
contrôleurs ATA contrôleur SCSI
unité 0 unité 1
unité 2
BusSCSI
unité 0 : (0,0)unité 1 : (0,1)unité 2 : (0,2)
Accès en mode bloc : (2,0)Accès mode caractère : (0,0)
PERI Master ACSI cours 7 - 39
Pilotes de Périphériques
Fonction read du pilote Appel utilisateur read
long x_read(struct file*,char*,Ulong,loff_t*) int read(fd,char*,Ulong)
tamponutilisateur
tamponpilote
adresses dedescripteurs
struct file
f_pos
PERI Master ACSI cours 7 - 40
Pilotes de Périphériques
Appel utilisateur read : valeur de retour Si valret = compte : requête terminée Si valret > 0 et valret < compte : nbre octets
transférés. Refaire une ou plusieurs requêtes. Si valret = 0 : plus de données (end of file) Si valret < 0 : erreur, code d’erreur dans « errno »
PERI Master ACSI cours 7 - 41
Pilotes de Périphériques
Transferts : espace noyau espace utilisateur Données échangées entre le pilote et l’utilisateur Exécuté en mode noyau Utilisation de procédures de transfert du noyau
copyin() copyout()
PERI Master ACSI cours 7 - 42
Pilotes de Périphériques
Transferts : espace noyau espace utilisateur Cas de Linux
Transfert de blocs
Transfert un élément de 8 bits ou 16 bits ou 32 bits
copy_from_user(adr_dest,adr_orig,longueur)
copy_to_user(adr_dest,adr_orig,longueur)
get_user(nom_variable,adr_orig)
put_user(valeur, adr_dest)
PERI Master ACSI cours 7 - 43
Pilotes de Périphériques
Vérification des adresses passées en paramètre d’un appel système (linux)
1 - L’adresse ne doit pas appartenir au noyau 2 - L’adresse ne doit pas appartenir à d’autres
utilisateurs Espace d ’adressage d’un processus :
De 0 à PAGE_OFFSET - 1, accessible en mode utilisateur et en mode noyau
De PAGE_OFFSET - 1 à 0xFFFF FFFF, accessible en en mode noyau seulement
PERI Master ACSI cours 7 - 44
Pilotes de Périphériques
Vérification des adresses passées en paramètre d’un appel système (linux)
Vérification 1 faite lors des appels système read, write mais pas pour ioctl
Procédures de transfert font la vérification 1 Vérification 2 faite lors de l’utilisation de l’adresse
PERI Master ACSI cours 7 - 45
Pilotes de Périphériques
Appel utilisateur ioctl : paramètre cmd
La valeur de cmd doit être unique dans le système cmd est de type int, représenté sur 32 bits
err = ioctl (fd, cmd, arg)argument
commandefile descriptor
PERI Master ACSI cours 7 - 46
Pilotes de Périphériques
Appel utilisateur ioctl : paramètre cmd
type : doit être différent pour chaque pilote num : numéro d’ordre de la commande taille : quantité de données échangées sens : sens des échanges de données, par rapport
au programme utilisateur
2b 14b 8b 8b
typenumtaillesenscmd
PERI Master ACSI cours 7 - 47
Pilotes de Périphériques
Appel utilisateur ioctl : paramètre cmd Utilisation de macros pour obtenir cmd _IO(type,num) _IOW(type,num,taille) _IOR(type,num,taille) _IOWR(type,num,taille)
PERI Master ACSI cours 7 - 48
Pilotes de Périphériques
Appel utilisateur ioctl : paramètre arg de type : unsigned long Absent si rien à échanger Toute liberté sur la signification et l’utilisation
Donnée fournie au pilote Adresse de données fournies au pilote Adresse à laquelle le pilote renvoie des données Pointeur sur une structure
PERI Master ACSI cours 7 - 49
Pilotes de Périphériques
Appel utilisateur ioctl : paramètre arg Exemple 1
nombre d’octets
Zone de données
arg
PERI Master ACSI cours 7 - 50
Pilotes de Périphériques
Appel utilisateur ioctl : paramètre arg Exemple 2
nombre d’octetsadresse zone
Zone de données
arg