Chapitre 11. Gestion des Entrées/Sorties (Noyau Linux) Olivier Dalle. Programmation du Noyau Linux



Documents pareils
IV- Comment fonctionne un ordinateur?

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Matériel & Logiciels (Hardware & Software)

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Leçon 1 : Les principaux composants d un ordinateur

Temps Réel. Jérôme Pouiller Septembre 2011

Chapitre 4 : Les mémoires

Éléments d'architecture des ordinateurs

Structure et fonctionnement d'un ordinateur : hardware

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Conception de circuits numériques et architecture des ordinateurs

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Exécution des instructions machine

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Cours 3 : L'ordinateur

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Concept de machine virtuelle

Choix d'un serveur. Choix 1 : HP ProLiant DL380 G7 Base - Xeon E GHz

CH.3 SYSTÈMES D'EXPLOITATION

Réalisation d un OS 32 bits pour PC(x86)

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Fiche technique CPU 314SC/DPM (314-6CG13)

Cours Informatique 1. Monsieur SADOUNI Salheddine

Ordinateurs, Structure et Applications

Un ordinateur, c est quoi?

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Programmation C. Apprendre à développer des programmes simples dans le langage C

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

SYSTÈME DE GESTION DE FICHIERS

Partie 7 : Gestion de la mémoire

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Fiche technique CPU 315SN/PN (315-4PN33)

Initiation à la sécurité

NOTIONS DE RESEAUX INFORMATIQUES

Systèmes d exploitation

Structure fonctionnelle d un SGBD

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Tests de performance du matériel

ELP 304 : Électronique Numérique. Cours 1 Introduction

Ordinateurs, Structure et Applications

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Architecture des ordinateurs

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Démontage d'un ordinateur

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Windows XP niveau 2. D. Hourquin, Médiapôle St Ouen l'aumône

Architecture des Ordinateurs. Partie II:

LE DISQUE DUR : IDE (Integrated Device Electronique) : La nouvelle référence.

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

Exécutif temps réel Pierre-Yves Duval (cppm)

LE MICRO ORDINATEUR. Introduction Architecture Les supports amovibles Les composants Le système d exploitation Les portables

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

VMWARE VSPHERE ESXI INSTALLATION

ATELIERS DE FORMATION TECHNICIEN DE MAINTENANCE INFORMATIQUE

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

GPA770 Microélectronique appliquée Exercices série A

GESTION DE LA MEMOIRE

Guide d installation de Windows Vista /Windows 7

Présentation du modèle OSI(Open Systems Interconnection)

Ajouter de la mémoire à son ordinateur

La mémoire. Un ordinateur. L'octet. Le bit

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

La carte à puce. Jean-Philippe Babau

gestion des processus La gestion des processus

Carte IEEE Version 1.0

Vers du matériel libre

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

Informatique pour scientifiques hiver Plan général Systèmes d exploitation

A -Systèmes de fichiers 1 - FAT vs NTFS

Les liaisons SPI et I2C

Micro ordinateur & Périphériques Mémoire de masse Disque dur (SOLUTION)

Structure de base d un ordinateur

DIGIGRAM interfaces audio INTERFACES PCMCIA. VXpocket V2. VXpocket 440 INTERFACES USB UAX220 V2. UAX220-Mic 346 DIGIGRAM

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Le bus USB. I) Introduction : II) Architecture du bus USB :

HP 600PD TWR i G 4.0G 39 PC

Présentation du système informatique utilisé et éléments d architecture des ordinateurs

Cours de Systèmes d Exploitation

Fiche Technique. Cisco Security Agent

Installation du SLIS 4.1

CAHIER. DES CLAUSES TECHNIQUES PARTICULIERES N du 16 avril 2007 ORDINATEURS. C.I.E.P 1, Avenue Léon JOURNAULT SEVRES

Master d'informatique 1ère année Réseaux et protocoles. Couche physique

BM Le bus USB 09/05/2013. Le Port USB

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Conception de circuits numériques et architecture des ordinateurs

Introduction à l Informatique licence 1 ère année Notes de Cours

Architecture des ordinateurs Introduction à l informatique

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

A5.2.3, Repérage des compléments de formation ou d'autoformation

Contrôle d'accès. access.pro 08.12

La norme Midi et JavaSound

Les avantages de la virtualisation sont multiples. On peut citer:

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Transcription:

1 Chapitre 11 Gestion des Entrées/Sorties (Noyau Linux)

Architecture Matérielle : Bus Bus Ensemble de lignes reliant plusieurs composants Tous les composants voient tout ce qui passe Permet la transmission de signaux (bits) en parallel Architecture PC : 3 bus Données Pentium = 64 bits (lignes) Adresse Pentium = 32bits Contrôle Verrouillage du bus donnée Sens des transferts (lecture/écriture)... Olivier Dalle 2

3 Lignes qui relient CPU <-> périph. E/S Sous-ensemble des 3 bus primaires Sur archi. 80x86 Adresses : 16 lignes / 32 Données : 8, 16 ou 32 /64 Connexion physique périph/bus Hiérarchie de composants Ports d'e/s Interfaces Controlleurs de périphériques Bus d'entrées/sorties

4 Ports d'e/s Chaque périphérique a son propre ensemble d'adresses Appelées "Port d'e/s" Jusqu'à 65K ports 8 bits 2 ports 8bits contigus = 1 port 16 bits 2 ports 16 bits contigus = 1 port 32 bits Instructions réservées en assembleur in/out : lecture/écriture 1 octet ins/outs : lecture/écriture d'une séquence d'octets Les ports peuvent être mappés en mémoire physique Ne pas confondre avec DMA... Lecture/écriture à l'aide d'instructions standard mov, and, or,...

5 Organisation des Ports d'e/s Vue logique : 4 "registres" Contrôle : CPU -> périph. Etat (status) : périph -> CPU Entrée (Input) : données périph -> CPU Sortie :(Output) : données CPU -> périph. Implémentation Physique Réduction des coûts = réutilisation des ports Ex: même port pour Entrée et Sortie

6 API Noyau / Ports Fonctions d'entrée inb()/inw()/inl() : lecture 1x8, 1x16 ou 1x32 bits inb_p()/inw_p()/inbl_p() : idem + instruction nulle insb()/insw()/insl() : nx8, nx16 ou nx32 bits Fonctions de sortie outb()/outw()/outl() outb_p()/outw_p()/outl_p() outsb()/outsw()/outsl()

7 La Notion de Ressource d'e/s Problème : quels ports pour quels périphériques? Détection difficile dans certains cas Bus ISA Conflits possibles entre pilotes En croyant s'adresser à un périph. un pilote peut envoyer une commande à un autre... Solution : gestion rigoureuse des affectations Ressource = plage affectée exclusivement à un pilote Plage de ports (adresses si ports mappés en mémoire) Ressource organisées de façon hiérarchique Ex: partage des ressources IDE entre master et slave ressource "master IDE1" fille de ressource IDE1, fille de IDE...

8 Organisation Hiérachique des Ressources d'e/s Structure ressource dans le noyau début/fin plage de ports parent, frères, fils Drapeaux d'état Racine : variable ioport_resource API offerte aux pilotes {request release check}_resource() : affectation/libération/disponibilité de ressources {request release check}_region() : visent plus directement les ports d'e/s Voir /proc/ioports

Olivier Dalle Interfaces d'e/s Circuit spécialisé Intermédiaire entre port et périphérique Traduction registres -> commandes_periph Détection changements états -> registres Peut aussi être connecté à une ligne d'interruption branchée à un PIC/APIC (Contrôleur d'intr. Progr.) PIC/APIC déclenche interruption matérielle Deux types d'interfaces Dédiée à un matériel Souvent embarquée sur la même carte que le contrôleur Généraliste Permettent de connecter des matériels (très) différents Connecteur vers périphérique externe (RS232,...) 9

10 Exemples d'interfaces d'e/s Dédiées Clavier : connectée à un contrôleur qui possède son propre CPU Graphique : vers contrôleur avec CPU, mémoire (frame buffer), et mémoire morte Disque : connexion par câble au disque, qui contient le contrôleur, souvent assez élaboré (mémoire cache,...) Réseau : Interface et contrôleur sont généralement embarqués dans la "carte réseau" Généralistes Parallèle (8bits à la fois), série (1 bit à la fois), USB PCMCIA (portables), SCSI, Firewire,...

11 Contrôleurs de Périphériques Simplifient l'utilisation de périphériques complexes Interpètent les commandes (simples) de l'interface Supervisent la réalisation des actions correspondantes Exemple: disque Traduire "écrire bloc X" en : Placer les têtes sur le cylindre C (attendre) Attendre rotation pour être au-dessus de secteur S1 Ecrire données (jusqu'à secteur S2) Mettre à jour cache interne pour futures lectures Signaler la fin de l'opération Convertissent les signaux électriques émis par périphérique en valeurs pour registre d'état

12 Zones Mémoire d'e/s Partagées Trois zones de partage sur architecture PC Bus ISA : 0xA000 à 0xFFFFF "Trou" de 640 Ko à 1 Mo Complique init table des pages Bus VLB (VESA) : 0xE00000 à 0xFFFFFF Adresses de 14Mo à 16 Mo Complique encore init table des pages Bus PCI Adresses physiques très élevées Moins difficile à gérer car @ supérieures à la quantité de mémoire physique installée Extension AGP Capable d'utiliser directement la mémoire centrale du CPU Grâce au circuit GART (Graphic( Address Remapping Table)

13 Accès aux Zones de Mémoire d'e/s partagées Rappel : le noyau utilise adresses linéaires du 4e Go Début = PAGE_OFFSET (0xC0000000) Cas simple : E/S partagent des adresses physiques basses il suffit d'un OU binaire avec la valeur PAGE_OFFSET Premier octet @lineaire noyau = premier octet mem physique Problème avec les adresses physiques hautes Les @linéaires ne sont pas en vis-à-vis des @phys. Limite des 896 Mo Donc Pas d'association permanente @phys / @linéaire... Solution : ioremap() / ioremap_nocache() Construit un mapping entre @linéaires et @physiques E/S

14 API Noyau pour Manipuler Adresses E/S Partagées Mémoire partagée mais...... utilisation (potentiellement) différente Sur certaines architecture, accès par inst. spéciales Utilisation systématique de fonctions génériques d'e/s Pour que le code des pilotes soit indépendant de l'architecture cible Et donc portable API noyau Linux readb, readw, readl, writeb, writew, writel memcpy_fromio, memcpy_toio, memset_io

15 Accès Mémoire Direct (DMA) Tous les PC ont un processeur DMAC Direct Memory Access Controller Permet le transfert asynchrone entre RAM et périph. Le pilote construit une réquête décrivant le transfert Le pilote demande au CPU de soumettre la requête au DMAC LE DMAC s'occupe du transfert sans bloquer le CPU Le pilote place le processus client dans l'état bloqué Le scheduler élit un autre processus Quand le transfert est terminé, le DMAC déclenche une intr. matérielle Le traitant réveille le pilote, qui réveille le proc. client

16 Espace d'adressage DMA 4e espace d'adressage En plus de logique, linéaire et physique... Appelée "Adresses de Bus" Adresses manipulées par tous les périphériques Sauf le CPU Permettent de désigner les données à placer sur le bus de données Sur architecture PC : identiques @physiques du CPU Adresses de bus incontournables avec DMA Communication directe entre DMAC et périphérique Le noyau (cad le CPU) doit parler leur "langue" Conversion avec virt_to_bus()/bus_to_virt()

17 Mies en Oeuvre des Accès DMA Accès au périphérique via fichier spécial Allocation d'une ligne IRQ lors de la première utilisation Surcharge de la méthode open() du fichier Incrémentation d'un compteur de référence Utilisation d'un port pour programmer le DMAC Adresse et taille du tampon DMA Direction du transfert Le DMAC déclenche une interruption en fin d'opération Réveil du processus Libération de la ligne IRQ Quand le dernier processus ferme le fichier spécial Surcharge de la méthode release()

Olivier Dalle Niveaux de Support des Périphériques par le Noyau Trois niveaux de support possibles Aucun (!) Le processus client utilise directement les ports d'e/s Appels systèmes iopl() et ioperm() + assembleur (in/out) Nécessite privilège (root) Exemple : certaines implémentations du serveur X11 Minimal Le noyau connait l'interface d'e/s, mais ne sait pas ce qui s'y trouve Le noyau permet aux processus clients d'envoyer des séquences de caractères vers cette interface (via fichier spécial) Etendu Le noyau sait exactement comment utiliser l'interface du périphérique : il se charge de tout 18

Olivier Dalle Exemples de Supports Possibles Cartes graphiques : plusieurs possibilités Aucun Support : serveur X11 spécialisé Support total : serveur X11 générique "frame buffer" Le noyau fournit un service "frame buffer" générique Fichier /dev/fb Depuis 2.4, support extension DRI Direct Rendering Interface : extensions 3D de certaines cartes Interfaces généralistes (série, parallèle, USB) Série, parallèle : Support minimal Le noyau ne sait pas ce qu'on branche sur l'interface SCSI, USB, PCMCIA : Support total Indispensable car ces périphériques ont besoin d'accéder directement au bus de données (ex: transfert disque) 19

Stratégies de Gestion des Tampons Problème de synchronisation D'un coté les processus utilisateurs Olivier Dalle Couche haute du pilote (Top Half) Peuvent mettre du temps à réagir à un évènement Latence d'aiguillage De l'autre les périphériques Couche basse du pilote (Bottom Half) Réagit très rapidement aux évènements matériels Interruption matérielle déclenche un traitant spécialisé Entre les deux?? Il faut stocker provisoirement des données Exemple : paquets réseau, caractères d'une liaison série,... Solution classique : algo. producteur/consommateur tampons circulaires + synchro. par sémaphores... 20

Olivier Dalle Effets de l'utilisation de Tampons Deux situations Périph. à accès séquentiels (cartes son, réseau,...) Une appli (un processus) ne peut pas redemander la même donnée Les tampons permettent d'adoucir les pics de charge Quand le CPU est très chargé, le dialogue entre Top et Bottom est moins rapide Les tampons permettent d'amortir le délai de réaction Périph. à accès direct (disques essentiellement) Un ou plusieurs processus peuvent réclamer la même donnée Les tampons ont un double rôle (plus complexe) Amortir la latence d'aiguillage (un( peu,, car accès souvent lent) Mémoire cache (beaucoup( beaucoup,, car accès souvent lent) 21

22 Techniques de Surveillance des Opérations d'e/s Une opération d'e/s a été lancée... Comment sait-on qu'elle est terminée? Ou a échoué si on a fixé un délai max (timeout timeout)... Deux techniques Sondage (polling polling) Le pilote consulte sans cesse (régulièrement) l'état du périphérique Stratégie 1 : vérification à chaque tick d'horloge (int. horloge) Stratégie 2: vérifier + schedule (attente active) Interruption Exige un minimum du périphérique (son contrôleur) Ligne d'interruption matérielle (IRQ) Utile avec périph. aléatoirement lent

23 Architecture Type d'un Pilote Utilisant les Interruptions Le pilote comporte deux fonctions Une pour la partie haute du pilote Généralement exécution en exclusion mutuelle protection par semaphore/mutex Programme la requête d'e/s Données/commande écrite en mémoire Transmission commande au pilote (instruction du type outb() ) Attente sur wait_queue (ex: wait_event_interruptible() ) Au réveil : copie du résulat depuis noyau vers espace utilisateur Une pour la partie basse Déclenchée par interruption matérielle Programmation du vecteur d'interruption Lors de l'interruption : Lecture état pilote + réveil partie haute (wake_up_interruptible)

24 Exemples de Pilote? Les sources du noyau!! http://perso.ens-lyon.fr/brice.goglin/progsyst/ TP6 + correction : "E/S : IRQ et commande du HP" Utilisation des IRQ Thread noyau Completions, spinlocks...