1 / 50

Gestion des Périphériques

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

arvin
Download Presentation

Gestion des Périphériques

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gestion des Périphériques Année 2006 - 2007 (Transparents de F. Dromard) 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 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 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 demande demande ADM Mémoire Processeur Périphérique réponse réponse données données données 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 demande ADM Mémoire Processeur Périph. 1 Périph. 2 demande1 réponse réponse 1 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 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 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 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 Master ACSI

  10. 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é Adresse de base des registres Cmd-Block 18h secondaire Adresse de base des registres Contrôle 1Ch 20h Master ACSI

  11. 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 de commande Registre d’état primaire 04h Adresse PRD Table Mode accès direct mémoire Registre de commande Registre d’état 08h secondaire 0Ch Adresse PRD Table 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 0 Adresse physique de la région en mémoire EOT Nombre d’octets 1 : indique la fin de la table 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 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 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 D0 Pont hôte Structures de données ADMA fifo Bus PCI 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 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 Master ACSI

  18. 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 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 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) Master ACSI

  21. services système Pilotes de Périphériques Rappels sur le système Unix • Appels systèmes exécution en mode utilisateur utilisateur1 utilisateur2 utilisateur3 exécution en mode noyau 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 Master ACSI

  23. Interface des appels système communications interprocessus sous-système de fichiers ordonnanceur Cache E/S Pilotes de périphériques gestion mémoire mémoire périphériques Pilotes de Périphériques Organisation du noyau Unix Appels systèmes utilisateurs noyau sous-système de contrôle des processus matériel 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, ... 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) 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 . . . . 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 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 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 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 Master ACSI

  31. gestion des fichiers périphériques Pilotes de Périphériques Organisation read(), write(), ioctl(), close() utilisateurs noyau gestion des entrées/sorties non spécifiques open read close intr gestion des entrées/sorties spécifiques Pilote de périphérique matériel 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 Master ACSI

  33. Pilotes de Périphériques Procédures du pilote • Autres procédures • xxxxstrategy • xxxxinit • xxxxintr • Exécutées dans contexte inconnu Master ACSI

  34. 2 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 3 @ scsibopen @ scsibclose @ scsibstrategy 4 Master ACSI

  35. 2 Pilotes de Périphériques Appels système <--> procédures du pilote • Table pour les périphériques caractères @ ioctl @ write majeur @ open @ close @ read @ conioctl @ conwrite 0 @ conopen @ conclose @ conread @ sysioctl @ syswrite 1 @ sysopen @ sysclose @ sysread @ scsioctl @ scsiwrite @ scsiopen @ scsiclose @ scsiread 3 @ ttyioctl @ ttywrite @ ttyopen @ ttyclose @ ttyread 4 Master ACSI

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

  38. unité 0 unité 1 unité 2 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 : (0,0) unité 1 : (0,1) unité 2 : (0,2) Accès en mode bloc : (2,0) Accès mode caractère : (0,0) 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 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 » 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() 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) 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 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 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 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 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) 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 Master ACSI

  49. Pilotes de Périphériques Appel utilisateur ioctl : paramètre arg • Exemple 1 arg nombre d’octets Zone de données 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 Master ACSI

More Related