Changes between Version 58 and Version 59 of SoclibCourseTp4
- Timestamp:
- Dec 5, 2010, 11:07:54 AM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v58 v59 19 19 * 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. 20 20 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. 22 22 23 23 = 2. Interruptions vectorisées = … … 33 33 34 34 Le 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 composant35 contenant un nombre queconque de timers programmables capables de générer des interruptions périodiques. On trouvera la spécification fonctionnelle de ce composant 36 36 [https://www.soclib.fr/trac/dev/wiki/Component/VciMultiTimer ici]. 37 37 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]. 38 Le 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]. 40 39 41 40 Le composant '''vci_frame_buffer''' est un contrôleur d'écran graphique. C'est une cible VCI qui est vue 42 41 comme 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].42 Le 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]. 44 43 45 44 Le composant '''vci_dma''' est un composant matériel qui peut être programmé par le système d'exploitation pour éffectuer … … 93 92 '''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''. 94 93 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''. 96 95 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 ? 98 97 99 98 == 2.2 Communication entre le GIET et le contrôleur IOC == 100 99 100 Les 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. 101 Tous 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. 104 Quand ces fonctions rendent-elle la main au programme utilisateur? 105 106 L'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 101 110 = 3 Modélisation de l'architecture matérielle = 102 111