Gestion des Périphériques

50
PERI Master ACSI cours 7 - 1 Gestion des Périphériques Année 2006 - 2007 (Transparents de F. Dromard)

description

Gestion des Périphériques. Année 2006 - 2007 (Transparents de F. Dromard). 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. Principes généraux des E/S. Echanges par accès direct mémoire - PowerPoint PPT Presentation

Transcript of Gestion des Périphériques

Page 1: Gestion des Périphériques

PERI Master ACSI cours 7 - 1

Gestion des Périphériques

Année 2006 - 2007

(Transparents de F. Dromard)

Page 2: Gestion des Périphériques

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

Page 3: Gestion des Périphériques

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

Page 4: Gestion des Périphériques

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

Page 5: Gestion des Périphériques

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

Page 6: Gestion des Périphériques

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

Page 7: Gestion des Périphériques

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

Page 8: Gestion des Périphériques

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

Page 9: Gestion des Périphériques

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

Page 10: Gestion des Périphériques

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é

Page 11: Gestion des Périphériques

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

Page 12: Gestion des Périphériques

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

Page 13: Gestion des Périphériques

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

Page 14: Gestion des Périphériques

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

Page 15: Gestion des Périphériques

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

Page 16: Gestion des Périphériques

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

Page 17: Gestion des Périphériques

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

Page 18: Gestion des Périphériques

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

Page 19: Gestion des Périphériques

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

Page 20: Gestion des Périphériques

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)

Page 21: Gestion des Périphériques

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

Page 22: Gestion des Périphériques

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

Page 23: Gestion des Périphériques

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

Page 24: Gestion des Périphériques

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, ...

Page 25: Gestion des Périphériques

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)

Page 26: Gestion des Périphériques

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. . . .

Page 27: Gestion des Périphériques

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

Page 28: Gestion des Périphériques

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

Page 29: Gestion des Périphériques

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

Page 30: Gestion des Périphériques

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

Page 31: Gestion des Périphériques

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

Page 32: Gestion des Périphériques

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

Page 33: Gestion des Périphériques

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

Page 34: Gestion des Périphériques

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

Page 35: Gestion des Périphériques

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

Page 36: Gestion des Périphériques

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

Page 37: Gestion des Périphériques

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

Page 38: Gestion des Périphériques

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)

Page 39: Gestion des Périphériques

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

Page 40: Gestion des Périphériques

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 »

Page 41: Gestion des Périphériques

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()

Page 42: Gestion des Périphériques

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)

Page 43: Gestion des Périphériques

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

Page 44: Gestion des Périphériques

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

Page 45: Gestion des Périphériques

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

Page 46: Gestion des Périphériques

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

Page 47: Gestion des Périphériques

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)

Page 48: Gestion des Périphériques

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

Page 49: Gestion des Périphériques

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

Page 50: Gestion des Périphériques

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