Changes between Version 48 and Version 49 of SoclibCourseTp4


Ignore:
Timestamp:
Nov 30, 2010, 1:42:19 PM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v48 v49  
    99Le but de ce quatrième TP est d'introduire dans l'architecture de nouveaux
    1010composants 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.
     11et d'analyser les mécanismes de communication entre un programme utilisateur et un périphérique.
    1212
    1313Tous les périphériques utilisent les interruptions, mais il existe deux types de périphériques:
    1414
    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.
    1716
    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.
    2218
    2319= 2 Communications par interruption =
     
    4440en allant écrire à certains emplacements prédéfinis en mémoire.
    4541
    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
     44Dans le TP3, le programme utilisateur utilisait l'appel système ''tty_getc()'' pour lire un caracère saisi au
     45clavier. Cet appel système bloquant réalise une boucle de scrutation dans laquelle, à chaqur tour de boucle,
     46on effectue une transaction sur le bus pour lire la valeur du registre STATUS du terminal concerné.
     47On ne sort de cette boucle que lorsqu'un caractère aeffectivement été saisi. au clavier.le système lit la valeur
     48
     49Dans un mécanisme interruptif, le programme utilisateur utilise l'appel système ''tty_get_irq()''.
     50Cet 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'''.
    4851Ces deux variables appartiennent au système d'exploitation et sont stockées dans le segment ''seg_kunc'',
    4952qui est à la fois protégé (non accessible par les programmes utilisateur) et non cachable.
    5053 
    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
     54Plutôt que d'effectuer une scrutation sur le registre STATUS du contrôleur TTY, l'appel système ''tty_get_irq()''
     55teste la variable '''_tty_get_full''', ce qui permet (en principe) au système d'exploitation d'attribuer le processeur
    5556à un autre programme utilisateur si te tampon est vide. C'est la routine d'interruption (ISR) associée au
    5657terminal TTY qui se charge d'écrire le code ASCII du caractère dans le tampon  '''_tty_get_buf''', et de
     
    7475dans 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''.
    7576
    76 '''Question:''' Quel est l'avantage de ce type de communication par interruption, comparé au mécanisme de scrutation utilisé dans le TP2 ?
     77'''Question:''' Quel est l'avantage de ce type de communication par interruption, comparé au mécanisme de scrutation utilisé dans le TP3 ?
    7778
    7879= 4 Travail à réaliser =