Gestion des Périphériques

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Module Systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Le Concept du programme enregistré
Stockage de données.
Introduction au langage C
Les procédures et interruptions en Assembleur (Tasm)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Informatique Deug2 Sciences Eco S. Maabout 2004/2005.
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
Gestion de FICHIERS.
Mémoire & Processus Cours SE - SRC
13 – 16 Décembre 2005 Laurence Viry Introduction à MPI MPI_2.
Paramètres et pointeurs
Les microprocesseurs A. Objectifs de la séquence:
Systèmes d’entrée/sortie
Système d’exploitation : Assembleur
Système d’Exploitation
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Architecture de base d’un ordinateur
Gestion des Périphériques
Système d’exploitation
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
LES FICHIERS Un exemple : Unix.
Allocation de mémoire Allocation de mémoire.
LES SYSTEMES AUTOMATISES
Périphériques et bus système
CSI3531 – Labo 1 Lobservation du comportement de processus.
ÉLÉMENTS DE BASE UNIX.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
ΜP David Saint-Mellion.
Mécanismes d'exécution et de communication
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Gérer la sécurité des mots de passe et les ressources
Module 8 : Surveillance des performances de SQL Server
Hachage et Indexation 1. Concepts de base
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
SYSTÈME D’EXPLOITATION I
SYSTÈME D’EXPLOITATION I
Les sockets.
PERI Master ACSI cours Gestion des Périphériques Année (Transparents de F. Dromard)
02/10/2013JC LP MD1 COURS_3. 02/10/2013JC LP MD2 Direct Memory Access DMA.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Gestion des Périphériques
PERI Master ACSI cours Gestion des Périphériques Année (Transparents de F. Dromard)
Un programme Algorithme permettant au processeur de s'alimenter:
TP5 Enoncé DMA MEM MEM. objectif Utiliser un canal DMA pour faire un transfert d’une zone mémoire vers une autre zone mémoire On fera le transfert sans.
Doan Chien Thang Aôut,2008.  La vue d'ensemble des systèmes d'exploitation  Les processus et les fils  Gestion de la mémoire  Le système des fichiers.
Interface de communication pour les réseaux InfiniBand
Les bases du protocole Modbus
Patricia Renault UPMC 2005/2006
Cours Système LI324 Les Interruptions Cours Système LI324
Système de gestion fichiers
Représentation digitale des données Trois formats de base: 1) Décimale: base 10 (Une constante i.e dimension d ’1 vecteur) 2) Binaire: base 2 ( Mask, set/reset.
Architecture Client/Serveur
Architecture et technologie des ordinateurs II
Chapitre 9 Les caractères.
ALLOCATION DU CPU et GESTION DES TRAVAUX.
Crédits SommaireSystème & Processus Système et Applications Système, programmes & données Définition Système & UtilisateursSystème et Interface CULTURE.
Introduction Module 1.
Plan… -Introduction et motivations : -Qu'est-ce que le traitement de fichiers ? -Terminologie et définitions fondamentales des structures de fichiers :
Architecture d’un ordinateur
LES MEMOIRES et le décodage d’adresses
Client/Server Socket. Client/Serveur.
Joëlle Delacroix - NFA0041 Fonctionnement du processeur : exécution des instructions machine RUPTURE DE PROGRAMME : les INTERRUPTIONS.
Gestion des Tâches Les Processus. Un système multitâches La carte mère comporte Le Processeur (calcul et attente) Les jeux de composants spécialisés (entrées-sorties.
Architecture d'un automate programmable
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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