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

Présentations similaires


Présentation au sujet: ""— Transcription de la présentation:

461 Programmation système
IFT-17584 Semaine 09 Programmation système @Pierre Marchand et Martin Dubois, 2002

462 Cette semaine Retour sur la semaine précédente
Interruptions matérielles Bus PCI Port d’entré / sortie Adressage mémoire Périphérique « Polling » vs « Interrupt » Port série Port parallèle Linux Appel système Pilote de périphérique Présentation du TP3 @Pierre Marchand et Martin Dubois, 2002

463 La semaine dernière Premier examen Question 2.6 Question 2.9
@Pierre Marchand et Martin Dubois, 2002

464 Interruptions matérielles
Contrôleur d’interruptions programmable 8259A Vcc A0 INTA IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP CAS2 CS WR RD D7 D6 D5 D4 D3 D2 D1 D0 CAS0 CAS1 GND PIC 8259A @Pierre Marchand et Martin Dubois, 2002

465 Interruptions matérielles
Registres internes du 8259A INTA INT Data Buffer D0-D7 Control logic R0 WR A0 CS Read/Write logic In Service Register ISR Priority Analysis IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 Interrupt Request Register IRR CAS0 CAS1 CAS2 SP Cascading logic Interrupt Mask Register IMR @Pierre Marchand et Martin Dubois, 2002

466 Interruptions matérielles
Le 8259A Le 8259A peut accepter les interruptions de 8 sources externes, et on peut gérer jusqu’à 64 sources différentes en cascadant plusieurs 8259A. Il gère la priorité entre les interruptions simultanées, interrompt le processeur et lui passe un code pour identifier la source d’interruption. Une source d’interruption est connectée à chacune des 8 entrées IR0 à IR7. Selon sa priorité, et s’il n’y a pas d’autre interruption en cours, le PIC décide s’il peut transmettre l’interruption au CPU. Si oui, il affirme la ligne INT, qui est connectée à l’entrée INTR du CPU. Si le CPU est prêt à accepter l’interruption, il répond au PIC via la ligne INTA. @Pierre Marchand et Martin Dubois, 2002

467 Interruptions matérielles
Le 8259A Le PIC répond à son tour en envoyant le numéro d’interruption sur les lignes D0 à D7. Ce numéro est un index dans la table des vecteurs d’interruption. Le CPU est maintenant prêt à appeler le sous-programme de traitement d’interruption approprié. Quand le sous-programme de traitement d’interruption a terminé son exécution, il en avertit le PIC pour qu ’il puisse permettre à d’autres interruptions d ’atteindre le CPU : mov al, 0x20 out 0x20, al @Pierre Marchand et Martin Dubois, 2002

468 Interruptions matérielles
Le 8259A Le PIC comporte deux sortes de commandes : les commandes d’initialisation (ICW) et les commandes opérationnelles (OCW). Ces commandes sont appliquées à deux registres internes, situés respectivement aux adresses 0x20 et 0x21 dans l’espace mémoire d’entrée/ sortie. @Pierre Marchand et Martin Dubois, 2002

469 Interruptions Vecteurs d’interruption Vecteur Mném. Description
0 #DE Division par 0 1 #DB Déboguage 2 NMI 3 #BP Point d’arrêt (break point) 4 #OF Dépassement de capacité 5 #BR Dépassement d’une limite (instruc. BOUND) 6 #UD Opcode invalide 7 #NM Coprocesseur non disponible 8 #DF Double faute 9 Réservée 10 #TS TSS invalide 11 #NP Segment pas présent @Pierre Marchand et Martin Dubois, 2002

470 Interruptions Vecteurs d’interruption Vecteur Mném. Description
12 #SS Défaut de segment de pile 13 #GP Protection générale 14 #PF Besoin de page 15 Réservée 16 #MF Erreur de virgule flottante 17 #AC Vérification d’alignement 18 #MC Vérification du processeur Réservées par Intel Interruptions masquables @Pierre Marchand et Martin Dubois, 2002

471 Bus PCI Bus d’entrée/sortie. Système PCI CPU BUS PCI PCI PCI PCI
Contrôleur de cache et pont PCI CPU Mémoire BUS PCI PCI PCI PCI @Pierre Marchand et Martin Dubois, 2002

472 Port d’entré sortie Zone d’adressage complètement séparer des adresses mémoires Adresse de 0x0000 à 0xFFFF (en théorie) Instruction spéciale du processeur pour accéder à cette zone d’adressage Invention Intel pour facilité le décodage d’adresse Normalement utilisé pour les périphérique ne comportant que peu de registres Port série Port parallèle Port clavier ou souris @Pierre Marchand et Martin Dubois, 2002

473 Accès mémoires Même zone d’adressage que la mémoire
Simplifie le travail du programmeur Complique celle de l’ingénieur électronique Généralement utilisé pour les périphériques nécessitant une grande espace d’adressage Carte vidéo Carte réseau esclave @Pierre Marchand et Martin Dubois, 2002

474 Maître vs Esclave Toute les carte PCI sont des cartes esclave
Une carte est dite esclave quand le processeur accède ses registre ou sa mémoire Exemple de carte PCI slave Modem interne Certaines carte PCI peuvent aussi être Maître Une carte est dite maître lorsqu’elle prends le contrôle du bus et accède elle même la mémoire centrale de l’ordinateur Exemple de carte PCI maître Carte graphique accélératrice Carte réseau avancé Carte de son Carte d’acquisition d’image Contrôleur de disques @Pierre Marchand et Martin Dubois, 2002

475 Périphériques Pour accéder à un périphérique, il faut savoir :
• Comment utiliser ses registres de contrôle, de données et d’état • Ce qui cause la génération d’une interruption • Comment il transfère ses données • S’il utilise de la mémoire dédiée • S’il peut se configurer automatiquement S’il peut, et dans quel condition il devient maître du BUS @Pierre Marchand et Martin Dubois, 2002

476 Périphériques Schéma général d ’une interface de périphérique Bus de
Caractère reçu données IRQ Caractère à transmettre Bus R/W Registre d'état externe Choix du Vecteur registre Configuration @Pierre Marchand et Martin Dubois, 2002

477 Périphériques Modes de fonctionnement
Mode Scrutation (polling) Pour l’envoi d’une donnée, le CPU vérifie dans le registre d’état si le périphérique est disponible. Si oui, il place la donnée dans le registre de transmission du périphérique. Sinon, il attend que le périphérique soit prêt. Pour la réception d’une donnée, le CPU interroge le registre d’état pour savoir s’il a une donnée disponible. Si oui, il la lit dans le registre de réception. Si non, il attend et interroge le registre d’état de nouveau un peu plus tard. @Pierre Marchand et Martin Dubois, 2002

478 Périphériques Mode Interruption
Lorsque le périphérique reçoit une donnée, il active IRQ pour avertir le CPU. Le CPU interroge alors le registre d’état du périphérique pour savoir si c’est lui qui l’a interrompu et s’il s’agit d’une interruption de réception ou de transmission. Réception S’il s’agit d’une interruption de réception, le CPU lit la donnée dans le registre de réception du périphérique. @Pierre Marchand et Martin Dubois, 2002

479 Périphériques Mode interruption Transmission
S’il s’agit d’une interruption de transmission, le CPU place une nouvelle donnée à transmettre dans le registre de transmis-sion du périphérique. S’il n ’a plus de données à transmettre, il doit désactiver l’interruption en transmission, sinon il sera interrompu immédiatement par la même interruption. @Pierre Marchand et Martin Dubois, 2002

480 Interface série Interface série 16550/165552
@Pierre Marchand et Martin Dubois, 2002

481 Interface série Interface série 16550/165552
Cette interface, appelée UART (Universal Asynchronous Receiver Transmitter), assure la communication série avec l’extérieur via les ports COM1 à COM4 : modem, imprimante série, etc. @Pierre Marchand et Martin Dubois, 2002

482 Interface parallèle Port parallèle Control = Base + 2 Data = Base + 0
IRQ enable Port parallèle Control = Base + 2 1 Strobe Data = Base + 0 14 DO 0 2 15 DO 1 3 16 4 17 5 18 DI 0 6 19 7 20 8 21 9 22 IRQ Ack DO 7 10 23 Busy 11 24 12 25 DI 7 13 Status = Base +1 @Pierre Marchand et Martin Dubois, 2002

483 Interface parallèle Les registres Data Out Base + 0 Écriture
Status In Base + 1 Lecture Contrôl Out Base + 2 Écriture Data Feedback Base + 0 Lecture Control Feedback Base + 2 Lecture @Pierre Marchand et Martin Dubois, 2002

484 Interface parallèle Registres « Data Out »
Les valeurs placé dans ce registre se retrouve directement sur les pins 2 à 9 du connecteur. Un 1 dans le registre correspond à une tension de 5 Volt par rapport à la masse sur la pin correspondante Un 0 dans le registre correspond à une tension de 0 Volt par rapport à la masse sur la pin correspondante @Pierre Marchand et Martin Dubois, 2002

485 Interface parallèle Registre « Status In » Bit 0 Bit 1 Bit 2
Bit 3 Pin 15 « Error » Bit 4 Pin 13 « Select In » Bit 5 Pin 12 « Paper End » Bit 6 Pin 10 (inversé) « Acknowledge » Bit 7 Pin 11 (inversé) « Busy » @Pierre Marchand et Martin Dubois, 2002

486 Interface parallèle Registre « Control Out » Bit 0 Pin 1 « Strobe »
Bit 1 Pin 14 « Auto Feed » Bit 2 Pin 16 (inversé) « Init » Bit 3 Pin 17 « Select » Bit 4 « Interrupt enable » Bit 5 Bit 6 Bit 7 @Pierre Marchand et Martin Dubois, 2002

487 Programmes d’utilisateurs et applications
Linux Programmes d’utilisateurs et applications Niveau Application Niveau Noyau Gestion Processus Gestion Mémoire Systèmes de Fichiers Contrôle de Dispositifs Réseautage Parties du Noyau Concurrence Multitâche TTYs & Accès aux Dispositifs Mémoire Virtuelle Fichiers & Répertoires Capacités implémentées Connectivité Code dépendant de l’archi- tecture Gestion de mémoire Types de SF Dispositifs en mode caractère Sous-système réseau Support logiciel Contrôle du matériel Dispositifs par blocs Pilotes IF CPU RAM Disques & CD Console, Ports série Cartes spéciales Interfaces Réseau @Pierre Marchand et Martin Dubois, 2002

488 Linux / bin boot dev etc home lib usr var include lib gtk gnu kde
@Pierre Marchand et Martin Dubois, 2002

489 Linux Principales commandes du shell
cd change directory, home si aucun paramètre ls -l -al liste : répertoire -l affiche aussi permissions -al affiche aussi fichiers invisibles ps -aux -ealf processes pwd répertoire courant cp copy mv move : déplace ou renomme un fichier rm -r -i remove mkdir make directory rmdir remove directory chmod u o g a ±r ±w ±x : chmod a+w toto.c @Pierre Marchand et Martin Dubois, 2002

490 Linux Principales commandes du shell find Trouve : find / -name Toto.c
grep Trouve à l’intérieur de fichiers grep toto *.h clear Efface l’écran date Affiche la date file Propriétés d’un fichier kill -term -kill Arrêter un processus cat Afficher le contenu d’un fichier texte less  more man Afficher la documentation d’une commande passwd Changer mot de passe tar -xf Décompresser un fichier .tar who Liste des utilisateurs @Pierre Marchand et Martin Dubois, 2002

491 Linux Principales commandes du shell pico Petit éditeur
vi Éditeur par défaut mail Pour envoyer un courriel. @Pierre Marchand et Martin Dubois, 2002

492 Appels système Sous Linux, les appels système s’effectuent au moyen de l’interruption logicielle int 0x80. Sous DOS, ils s’effectuent au moyen des interruptions 0x21, 0x25, 0x26 et autres, tandis que sous Windows, ils s’effectuent au moyen de l’interruption logicielle int 0x2E. Ces appels système couvrent toute une gamme de fonctions offertes par le système d’exploitation. Sous Linux, eax contient le numéro de la fonction désirée, et les paramètres sont passés dans ebx, ecx, edx, esi, edi dans l’ordre. @Pierre Marchand et Martin Dubois, 2002

493 Exemples d’appels système :
3 sys_read int fd, char *buf, int count 4 sys_write int fd, char *buf, int count 5 sys_open char *name, int flag, int mode 6 sys_close int fd 12 sys_chdir char *path 20 sys_getpid 24 sys_getuid 37 sys_kill int pid, int sig 39 sys_mkdir char *name, int mode 40 sys_rmdir char *name 48 sys_signal int numero, void(*handler)(int) Une liste complète est disponible sur le site du cours à la page Documentation. @Pierre Marchand et Martin Dubois, 2002

494 Appels système Peu importe le système d’exploitation, un appel système implique un passage du mode d’exécution « application » (03) vers le mode d’exécution « privilégié » (00) La sécurité du « Noyau » dépends entièrement de la technique utilisé pour effectuer ce passage. Le déclenchement d’un interruption logiciel provoque le changement de niveau d’exécution et provoque l’exécution d’une routine de traitement de l’interruption résidant dans le « noyau ». Cette routine et responsable de vérifier les droits de l’utilisateur avant de poursuivre le traitement demandé. @Pierre Marchand et Martin Dubois, 2002

495 Pilotes de périphériques
Classes de périphériques Dispositifs en mode caractère Dispositifs qui peuvent être traités comme des fichiers avec des appels système open, close, read et write. Exemples : la console, le port parallèle, etc. Dispositifs en mode bloc Dispositifs tels que des disques, qui peuvent héberger un système de fichiers. Dans la plupart des systèmes Unix, on ne peut transférer qu’un nombre d’octets multiple d’un bloc. La taille d’un bloc est 1 Ko ou 4 Ko dépendant du système. Sous Linux, on peut lire ou écrire dans un dispositif en mode bloc comme s’il s’agissait d’un dispositif en mode caractère. La différence réside seulement dans la façon dont les données sont gérées par le noyau. @Pierre Marchand et Martin Dubois, 2002

496 Pilotes de périphériques
Classes de périphériques Interfaces réseau Peut être matérielle ou logicielle. Une interface réseau est responsable de transmettre et de recevoir des paquets de données, et est contrôlée par le sous-système réseau du noyau. Elle effectue des transactions sans connaître le rôle de chaque paquet dans les échanges effectués. Pour elle, il n’y a pas de différence entre un paquet de données Telnet ou un paquet ftp. @Pierre Marchand et Martin Dubois, 2002

497 Pilotes de périphériques
Mode utilisateur Avantages On dispose de toutes les librairies C. On peut utiliser un débogueur conventionnel. En cas de panne, on peut simplement tuer le processus. La mémoire utilisateur peut être paginée, de sorte qu’un programme peu utilisé voit son espace mémoire attribué à d’autres processus. @Pierre Marchand et Martin Dubois, 2002

498 Pilotes de périphériques
Mode utilisateur Inconvénients N’a pas accès aux interruptions. L’accès direct à la mémoire nécessite privilège noyau. N’a pas accès aux ports d’entrée sortie. Le temps de réponse est plus lent à cause des changements de contexte nécessités par le transfert d’informations ou d’actions entre le client et le matériel Si jamais le pilote était paginé sur disque, le temps de réponse deviendrait inacceptable Les dispositifs les plus importants ne peuvent pas être traités en mode utilisateur, en particulier les interfaces réseau et les dispositifs par blocs. @Pierre Marchand et Martin Dubois, 2002

499 Pilotes de périphériques
Modules Sous Linux, un module est une extension du noyau. Les pilotes de périphériques peuvent être des modules. Chaque module est du code objet qui peut être lié dynamiquement au noyau pendant son fonctionnement avec la commande insmod et être délié avec la commande rmmod. Un module fonctionne en mode privilégié. Seul un utilisateur root peut installer un module. Habituellement chaque module n’implémente qu’un pilote. On peut donc les classifier comme modules par caractères, modules par blocs, etc. @Pierre Marchand et Martin Dubois, 2002

500 Pilotes de périphériques
Modules Module hello.c #define MODULE #include <linux/module.h> int init_module(void) { printk(“<1>Bonjour le monde!\n”); return 0; } void cleanup_module(void) printk(“<1>Adieu, monde cruel!\n”); @Pierre Marchand et Martin Dubois, 2002

501 Pilotes de périphériques
Modules root# gcc -c hello.c root# insmod hello.o root# rmmod hello root# @Pierre Marchand et Martin Dubois, 2002

502 Pilotes de périphériques
Différences entre un module et une application Un module fonctionne dans l’espace mémoire du noyau tandis qu’une application fonctionne dans l’espace mémoire utilisateur (paginé). Un module a accès aux interruptions. Un module a accès aux entrées/sorties. @Pierre Marchand et Martin Dubois, 2002

503 TP3 Lien de communication entre deux ordinateur Série Synchrone
« Full duplex » Lent, très lent @Pierre Marchand et Martin Dubois, 2002

504 TP3 La recette pour charger votre pilote de périphérique cd $HOME
chmod 711 $HOME mkdir ift-17584 chmod 711 ift-17584 Placer votre module tp3.o dans ~/ift-17584 chmod 611 ift-17584/tp3.o sudo insmod $HOME/ift-17584/tp3.o @Pierre Marchand et Martin Dubois, 2002

505 TP3 Deux moyen de visualiser le journal système
sudo tail –f /var/log/syslog sudo tail –n 100 /var/log/syslog @Pierre Marchand et Martin Dubois, 2002

506 TP3 Pour retirer votre module du noyau sudo rmmod tp3
Pour éviter au utilisateur suivant des problèmes causés par un noyau corrompu, nous vous demandons de toujours redémarrer l’ordinateur après avoir utilisé ces recettes. Aussi, les commande effectué en utilisant sudo sont noter dans un journal de sécurité. @Pierre Marchand et Martin Dubois, 2002


Télécharger ppt ""

Présentations similaires


Annonces Google