Changes between Version 90 and Version 91 of SoclibCourseTp4
- Timestamp:
- Dec 19, 2011, 7:30:24 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v90 v91 71 71 Dans ce TP4, le programme utilisateur utilisera l'appel système '''tty_getc_irq()''' pour lire un caractère. 72 72 Cet appel système utilise un tampon mémoire partagé '''_tty_get_buf''', protégé par une variable de synchronisation '''-tty_get_full'''. 73 Ces deux variables appartiennent au système d'exploitation et sont stockées dans le segment ''seg_kunc'', 74 qui est à la fois protégé (non accessible par les programmes utilisateur) et non cachable. 73 Ces deux variables appartiennent au système d'exploitation et sont stockées en mémoire dans le segment ''seg_kunc'', qui est à la fois protégé (non accessible par les programmes utilisateur) et non cachable. 75 74 76 75 Plutôt que d'accéder directement au registre STATUS du contrôleur TTY, l'appel système '''tty_get_irq()''' … … 78 77 79 78 Dans une architecture monoprocesseur, le processeur peut exécuter plusieurs tâches (plusieurs programmes utilisateurs) en pseudo-paralléliseme, par multiplexage temporel. Chaque tâche possède alors son propre terminal écran/clavier, mais ces 80 différents terminaux sont tous contrôlés par le même contrôleur TTY : Chaque terminal possède son propre jeu de 4 registres, 81 pour communiquer avec l'OS. 79 différents terminaux sont tous contrôlés par le même contrôleur TTY : Chaque terminal possède donc son propre jeu de 4 registres, pour communiquer avec l'OS. 82 80 83 81 Le GIET supporte au plus 8 processeurs, et au plus 4 tâches par processeur. Le GIET supporte donc au plus 32 terminaux ecran/clavier, et définit donc deux tableaux '''_tty_get_buf[32]''' et '''_tty_get_full[32]''', indexés par le numéro du terminal concerné. … … 192 190 Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur). 193 191 Comme chaque processeur peut - en principe - exécuter plusieurs tâches en pseudo-parallélisme, et que chaque tâche possède un terminal privé, on peut avoir un grand nombre de terminaux. On aura donc un contrôleur TTY indépendant pour chaque processeur. 194 Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le 195 composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer. 192 Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer. 196 193 197 194 * Le GIET ne pouvant supporter que 8 processeurs, on vérifiera dans le code de la top-cell que le paramètre NPROCS est inférieur ou égal à 8. … … 207 204 * Pour l'index des cibles (TGTID), on utilisera les valeurs (0) à (6) pour les composants matériels non répliqués (ROM, RAM GCD, TIMER, IOC, DMA, FBF). On utilisera les valeurs (7) à ( 7 + NPROCS -1) pour les composants TTY[i]. On utilisera les valeurs (7 + NPROCS) à (7 + 2*NPROCS -1) pour les composants ICU[i]. 208 205 209 * il faut définir NPROCS segments pour les composants ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_icu_base + icu_segment_increment * proc_id. La valeur de cette variable devra donc être définie dans le fichier '''tp4_top_multi.cpp pour le matériel, et dans le fichier '''ldscript''' pour le logiciel. On prendra par exemple la valeur 0x00100000. 210 211 * Il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_tty_base + tty_segment_increment * proc_id. On prendra également la valeur 0x00100000. 206 * il faut définir NPROCS segments pour les composants ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_icu_base + icu_segment_increment * proc_id. La valeur de cette variable ''icu_segment_increment'' devra donc être définie dans le fichier '''tp4_top_multi.cpp pour le matériel, 207 et dans le fichier '''ldscript''' pour le logiciel. On prendra par exemple la valeur 0x00100000. 208 209 * Il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_tty_base + tty_segment_increment * proc_id. On prendra également la valeur 0x00100000 pour la variable ''tty_segment_increment''. 212 210 213 211 * Pour la net-list, il faut utiliser des boucles indexées par l'index du processeur pour connecter les composants répliqués et signaux répliqués.