La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Gestion des Périphériques

Présentations similaires


Présentation au sujet: "Gestion des Périphériques"— Transcription de la présentation:

1 Gestion des Périphériques
Année (Transparents de F. Dromard) PERI Master ACSI

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

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

4 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 IT Mémoire Processeur demande ADM demande Périphérique réponse réponse données données données PERI Master ACSI

5 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 demande 2 réponse 2 IT Mémoire Processeur demande ADM Périph. 1 Périph. 2 demande1 réponse réponse 1 PERI Master ACSI

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

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

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

9 Disques magnétiques Adaptateur hôte : PCI ATA processeur primaire
contrôleur contrôleur adaptateur ATA D0 D1 mémoire pont hôte secondaire contrôleur contrôleur Bus PCI D0 D1 PERI Master ACSI

10 Accès en mode programmé
Disques magnétiques Adaptateur hôte : PCI ATA Registres de base E/S 10h Adresse de base des registres Cmd-Block primaire 14h Adresse de base des registres Contrôle Accès en mode programmé 18h Adresse de base des registres Cmd-Block secondaire 1Ch Adresse de base des registres Contrôle 20h PERI Master ACSI

11 Mode accès direct mémoire
Disques magnétiques Adaptateur hôte : PCI ATA Registres de base E/S Registres de maître de bus 20h Adresse de base des registres Maître de Bus 00h Registre d’état Registre de commande primaire 04h Adresse PRD Table Mode accès direct mémoire 08h Registre d’état Registre de commande secondaire 0Ch Adresse PRD Table PERI Master ACSI

12 Disques magnétiques Adaptateur hôte : PCI ATA Table de descripteurs
Physical Region Descriptor P R D P R D Une requête lecture ou écriture P R D P R D 32 15 Adresse physique de la région en mémoire EOT Nombre d’octets 1 : indique la fin de la table PERI Master ACSI

13 Disques magnétiques Adaptateur hôte : PCI ATA
ADM, 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

14 Disques magnétiques Adaptateur hôte : PCI ATA
Automatic Direct Memory Access (ADMA) Utilise des structures de données en mémoire Command 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

15 Disques magnétiques Adaptateur hôte : PCI ATA
Automatic Direct Memory Access (ADMA) Proc. Adaptateur ATA primaire reg. base 256 mots mémoire contrôleur automate Structures de données ADMA Pont hôte D0 fifo Bus PCI PERI Master ACSI

16 Disques magnétiques Adaptateur hôte : PCI ATA
Automatic Direct Memory Access (ADMA) registre CPB APRD APRD APRD CPB next address CPB APRD APRD APRD CPB APRD APRD APRD PERI Master ACSI

17 Disques magnétiques Adaptateur hôte : PCI ATA Command Parameter Bloc
CPB longueur flags adresse du prochain CPB adresse du premier APRD initialisation des registres PERI Master ACSI

18 adresse du prochain APRD
Disques magnétiques Adaptateur hôte : PCI ATA ADMA Physical Region Descriptor APRD adresse en mémoire Longueur en mémoire flags adresse du prochain APRD PERI Master ACSI

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

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

21 Pilotes de Périphériques
Rappels sur le système Unix Appels systèmes exécution en mode utilisateur utilisateur1 utilisateur2 utilisateur3 services système exécution en mode noyau PERI Master ACSI

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

23 Pilotes de Périphériques
Organisation du noyau Unix Appels systèmes utilisateurs Interface des appels système noyau sous-système de fichiers sous-système de contrôle des processus communications interprocessus Cache E/S ordonnanceur gestion mémoire Pilotes de périphériques périphériques mémoire matériel PERI Master ACSI

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

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

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_RDONLY O_RDWR O_CREAT PERI Master ACSI

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

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

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

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

31 Pilotes de Périphériques
Organisation read(), write(), ioctl(), close() utilisateurs noyau gestion des fichiers gestion des entrées/sorties non spécifiques open read close intr gestion des entrées/sorties spécifiques Pilote de périphérique périphériques matériel PERI Master ACSI

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

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

34 Pilotes de Périphériques
Appels système <--> procédures du pilote Table pour les périphériques blocs majeur @ open @ close @ strategy @ dskopen @ dskclose @ dskstrategy 1 @ dsk1open @ dsk1close @ dsk1strategy 2 3 @ scsibopen @ scsibclose @ scsibstrategy 4 PERI Master ACSI

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 @ write @ ioctl @ conopen @ conclose @ conread @ conwrite @ conioctl 1 @ sysopen @ sysclose @ sysread @ syswrite @ sysioctl 2 @ scsiopen @ scsiclose @ scsiread @ scsiwrite @ scsioctl 3 @ ttyopen @ ttyclose @ ttyread @ ttywrite @ ttyioctl 4 PERI Master ACSI

36 Pilotes de Périphériques
Appels système <--> procédures du pilote Cas de linux : blk_devs , char_devs pointeur sur le nom pointeur sur la structure file_operation majeur * name * file_operation 1 * name * file_operation 2 3 * name * file_operation 4 PERI Master ACSI

37 Pilotes de Périphériques
Appels système <--> procédures du pilote Cas de linux : structure file_operation table char_devs pilote nom structure file_operation 3 read write PERI Master ACSI

38 Pilotes de Périphériques
Exemples : majeur, mineur pilote bloc dsk majeur 0 pilote bloc A majeur 2 pilote caractère B majeur 0 contrôleurs ATA contrôleur SCSI Bus SCSI unité 0 unité 1 unité 2 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

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) struct file adresses de descripteurs f_pos tampon pilote tampon utilisateur PERI Master ACSI

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

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

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

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

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

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 commande file descriptor PERI Master ACSI

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 cmd sens taille num type PERI Master ACSI

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

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

49 Pilotes de Périphériques
Appel utilisateur ioctl : paramètre arg Exemple 1 arg nombre d’octets Zone de données PERI Master ACSI

50 Pilotes de Périphériques
Appel utilisateur ioctl : paramètre arg Exemple 2 arg nombre d’octets adresse zone Zone de données PERI Master ACSI


Télécharger ppt "Gestion des Périphériques"

Présentations similaires


Annonces Google