Changes between Version 58 and Version 59 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 5, 2010, 11:07:54 AM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v58 v59  
    1919 * 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 se comporte comme 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.
    2020
    21  * 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, cat ils peuvent directement lire ou écrire en mémoire.
     21 * Par opposition un périphérique ''bloc'', tel qu'un contrôleur de disque, doit tranférer de grosses quantités de données entre la mémoire et le disque. 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, cat ils peuvent directement lire ou écrire en mémoire.
    2222
    2323= 2. Interruptions vectorisées =
     
    3333
    3434Le composant '''vci_multi_timer''' est également une cible VCI
    35 contenant un nombre queconque de timers programmables capables de générer des interruptions périodiques à destination du processeur. On trouvera la spécification fonctionnelle de ce composant
     35contenant un nombre queconque de timers programmables capables de générer des interruptions périodiques. On trouvera la spécification fonctionnelle de ce composant
    3636[https://www.soclib.fr/trac/dev/wiki/Component/VciMultiTimer ici].
    3737
    38 Le composant '''vci_block_device''' est un contrôleur de disque simplifié. Ce composant FBF est à la fois un initiateur VCI, capable de lire et d'écrire dans la mémoire, et une cible qui peut recevoir des commandes de configuration.
    39 Le GIET ne gérant pas un véritable système de fichier, ce composant IOC ne gère qu'un unique fichier, stocké sur le disque de la station de travail qui exécute le simulateur. Le nom de ce fichier est un argument du constructeur. On trouvera la spécification fonctionnelle de ce composant [https://www.soclib.fr/trac/dev/wiki/Component/VciBlockDevice ici].
     38Le composant '''vci_block_device''' est un contrôleur de périphérique de stockage externe (disque ou mémoire flash). Ce composant IOC est à la fois un initiateur VCI, capable de lire et d'écrire dans la mémoire, et une cible qui peut recevoir des commandes de configuration. Le composant IOC ne gère qu'un unique fichier, stocké sur le disque de la station de travail qui exécute le simulateur. Le nom de ce fichier est un argument du constructeur. On trouvera la spécification fonctionnelle de ce composant [https://www.soclib.fr/trac/dev/wiki/Component/VciBlockDevice ici].
    4039
    4140Le composant '''vci_frame_buffer''' est un contrôleur d'écran graphique. C'est une cible VCI qui est vue
    4241comme un tampon mémoire directement adressable de M lignes de N pixels, dans lequel le logiciel peut lire ou écrire.
    43 Le contenu de ce buffer est parcouru périodiquement à la fréquence video, et son contenu est affiché sur l'écran graphique externe. On trouvera la spécification fonctionnelle de ce composant [https://www.soclib.fr/trac/dev/wiki/Component/VciFrameBuffer ici].
     42Le contenu de ce buffer est parcouru périodiquement, et son contenu est affiché sur l'écran graphique externe. On trouvera la spécification fonctionnelle de ce composant [https://www.soclib.fr/trac/dev/wiki/Component/VciFrameBuffer ici].
    4443
    4544Le composant '''vci_dma''' est un composant matériel qui peut être programmé par le système d'exploitation pour éffectuer
     
    9392'''Question''' : Comment les deux entités communicantes (l'ISR et l'appel système) calculent-elles l'index du terminal concerné ? La réponse se trouve dans les fichier ''drivers.c'' et ''isr.s''.
    9493
    95 '''Question:''' Que fait la routine d'interruption ISR déclenchée par le périphérique TTY lorsqu'un caractère est frappé alors que  la variable '''_tty_get_full[i]''' vaut 1 ?   La réponse se trouve dans le fichier ''isr.s''.
     94'''Question''' : Que fait la routine d'interruption ISR déclenchée par le périphérique TTY lorsqu'un caractère est frappé alors que  la variable '''_tty_get_full[i]''' vaut 1 ?   La réponse se trouve dans le fichier ''isr.s''.
    9695
    97 '''Question:''' Quel est l'avantage de ce type de communication par interruption, comparé au mécanisme de scrutation utilisé dans le TP3 ?
     96'''Question''' : Quel est l'avantage de ce type de communication par interruption, comparé au mécanisme de scrutation utilisé dans le TP3 ?
    9897
    9998== 2.2 Communication entre le GIET et le contrôleur IOC ==
    10099
     100Les deux appels système '''ioc_read()''' et '''ioc_write()''' permettent à un programme utilisateur de demander au GIET de réaliser un transfert de données entre un tampon mémoire utilisateur et le périphérique de stockage externe.
     101Tous les transferts se font par blocs de 512 octets.
     102
     103'''Question''' : Editez le fichier ''stdio.c'' pour déterminer la signification des trois arguments de ces appels système. Editez le fichier ''drivers.c'' pour voir ce que font réellement les deux fonctions système '''_ioc_read()''' et '''_ioc_write()''' associées.
     104Quand ces fonctions rendent-elle la main au programme utilisateur?
     105
     106L'appel système '''ioc_completed()''', qui appelle lui-même la fonction système '''_ioc_completed''' permet au programme utilisateur de de mettre en attente sur la fin d'un transfert. C'est donc une fonction bloquante qui ne rend la main au programme utilisateur que lorsque la variable de synch'onisation '''_ioc_busy''' a repris la valeur 0.
     107
     108'''Question''' : Quelle fonction met la variable '''_ioc_busy''' à 1 ? Quelle fonction remet cette variable à 0 ? QUelles sont les deux fonctions de cette variable de synchronisation ? Dans quel segment doit-elle être rangée?
     109 
    101110= 3 Modélisation de l'architecture matérielle =
    102111