Changes between Version 48 and Version 49 of SoclibCourseTp4
- Timestamp:
- Nov 30, 2010, 1:42:19 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v48 v49 9 9 Le but de ce quatrième TP est d'introduire dans l'architecture de nouveaux 10 10 composants matériels supportant la communication par interruption entre le(s) processeurs(s) et les périphériques, 11 et d'analyser les écanismes de communication entre un programme utilisateur et un périphérique.11 et d'analyser les mécanismes de communication entre un programme utilisateur et un périphérique. 12 12 13 13 Tous les périphériques utilisent les interruptions, mais il existe deux types de périphériques: 14 14 15 Un contrôleur TTY est un périphérique ''caractère'' car il supporte des requêtes de lecture ou d'écriture d'un seul caractère. Ce type de périphérique est généralement une ciblesur le bus, puisqu'il ne peut que recevoir des 16 commandes, et qu'il n'a pas la possibilité de lire ou d'écrire lui-même en mémoire. 15 * Un contrôleur TTY est un périphérique ''caractère'' car il supporte des requêtes de lecture ou d'écriture d'un seul caractère. Ce type de périphérique est généralement une cible sur le bus, puisqu'il ne peut que recevoir des commandes provenant d'un processeur, et qu'il n'a pas la possibilité de lire ou d'écrire lui-même en mémoire. 17 16 18 Par opposition un périphérique ''bloc'' tel qu'un contrôleur de disque, ou un contrôleur réseau doit tranférer 19 de grosses quantités de données entre la mémoire et le disque. Les transferts se font par blocs (un bloc contenant 20 généralement 512 octets), et ces périphériques ont généralement une capacité DMA : Ils sont à la fois maître et 21 cible sur le bus, et peuvent directement lire ou écrire en mémoire. 17 * Par opposition un périphérique ''bloc'', tel qu'un contrôleur de disque, (ou un contrôleur réseau) doit tranférer de grosses quantités de données entre la mémoire et le disque (ou le réseau). Les transferts se font par blocs (un bloc contenant généralement 512 octets), et ces périphériques ont généralement une capacité DMA : Ils sont à la fois maître et cible sur le bus, et peuvent directement lire ou écrire en mémoire. 22 18 23 19 = 2 Communications par interruption = … … 44 40 en allant écrire à certains emplacements prédéfinis en mémoire. 45 41 46 Pour communiquer avec un périphérique, un programme utilisateur utilise 47 un tampon mémoire partagé '''_tty_get_buf''', protégé par une variable de synchronisation '''-tty_get_full'''. 42 === 2.1 Contrôleur TTY === 43 44 Dans le TP3, le programme utilisateur utilisait l'appel système ''tty_getc()'' pour lire un caracère saisi au 45 clavier. Cet appel système bloquant réalise une boucle de scrutation dans laquelle, à chaqur tour de boucle, 46 on effectue une transaction sur le bus pour lire la valeur du registre STATUS du terminal concerné. 47 On ne sort de cette boucle que lorsqu'un caractère aeffectivement été saisi. au clavier.le système lit la valeur 48 49 Dans un mécanisme interruptif, le programme utilisateur utilise l'appel système ''tty_get_irq()''. 50 Cet appel système utilise lui-même un tampon mémoire partagé '''_tty_get_buf''', protégé par une variable de synchronisation '''-tty_get_full'''. 48 51 Ces deux variables appartiennent au système d'exploitation et sont stockées dans le segment ''seg_kunc'', 49 52 qui est à la fois protégé (non accessible par les programmes utilisateur) et non cachable. 50 53 51 Si un programme utilisateur souhaite lire un caractère sur un terminal TTY, il utilise l'appel système 52 ''tty_getc_irq()'', défini dans le fichier ''stdio.c'' du GIET. 53 Plutôt que d'effectuer une scrutation sur le registre STATUS du contrôleur TTY, cet appel système 54 va tester la variable '''_tty_get_full''', ce qui permet (en principe) au système d'exploitation d'attribuer le processeur 54 Plutôt que d'effectuer une scrutation sur le registre STATUS du contrôleur TTY, l'appel système ''tty_get_irq()'' 55 teste la variable '''_tty_get_full''', ce qui permet (en principe) au système d'exploitation d'attribuer le processeur 55 56 à un autre programme utilisateur si te tampon est vide. C'est la routine d'interruption (ISR) associée au 56 57 terminal TTY qui se charge d'écrire le code ASCII du caractère dans le tampon '''_tty_get_buf''', et de … … 74 75 dans le tampon '''_tty_get_buf[i]''' n'a pas été lu par le programme utilisateur. La réponse se trouve dans le fichier ''isr.s''. 75 76 76 '''Question:''' Quel est l'avantage de ce type de communication par interruption, comparé au mécanisme de scrutation utilisé dans le TP 2?77 '''Question:''' Quel est l'avantage de ce type de communication par interruption, comparé au mécanisme de scrutation utilisé dans le TP3 ? 77 78 78 79 = 4 Travail à réaliser =