Changes between Version 57 and Version 58 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 27, 2010, 2:02:26 AM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v57 v58  
    312312Si ce n'est pas le cas, vous pouvez utiliser le '''GDB Server'''...
    313313
    314 == 3.4 Appliction multi_tâches coppératives ==
    315 
    316 On veut maintenant exécuter une application parallèle multi-tâches où plusieurs tâches coopérent pour résoudre un problème,
     314== 3.4 Application "sobel" ==
     315
     316On veut maintenant exécuter une application parallèle multi-tâchescoopératives: Plusieurs tâches coopérent pour résoudre un problème,
    317317en essayant d'exploiter le parallélisme de l'architecture matérielle multi-processeurs.
    318318On s'intéresse à une application de traitement d'image réalisant une détection de contour grâce à un filtre de Sobel.
     
    321321L'application logicielle contenue dans le fichier '''main_sobel.c''' est découpée en trois tâches logicielles, qui peuvent s'exécuter en parallèle sur trois processeur différents, et communiquent entre elles à travers deux tampons de communication en mémoire '''buf_in''' et '''buf_out''':
    322322 * La tâche '''load''' lit une image sur le disque et copie cette image dans le tampon '''buf_in'''.
    323  * La tâche '''sobel''' lit l'image dans le tampon '''buf_in''', applique le filtre de Sobel, et écrit l'image résultante dans le tampon '''buf_out'''.
     323 * La tâche '''sobel''' lit l'image présente dans le tampon '''buf_in''', applique le filtre de Sobel, et écrit l'image résultante dans le tampon '''buf_out'''.
    324324 * La tâche '''display''' lit l'image présente dans le tampon '''buf_out''', et affiche cette image sur le frame buffer.
    325325Les deux tampons de communication '''buf_in''' et '''buf_out''' sont protégés par les deux variables de synchronisation '''buf_in_empty''' et
    326 '''buf_out_empty''', qui supportent un protocole de type SET/RESET en mode utilisateur:
     326'''buf_out_empty''', qui supportent un protocole de synchronisation de type SET/RESET en mode utilisateur:
    327327 * La tâche productrice attend que la variable de synchronisation passe à 0 avant d'écrire, et force cette variable à 1 quand elle a fini de remplir le tampon.
    328328 * La tâche consommatrice attend que la variable de synchronisation passe à 1 avant de lire, et force cette variable à 0 quand elle a fini de vider le tampon.
     
    330330'''Question''' : Modifiez le fichier '''reset.s''' pour que les tâches '''load''', '''sobel''', et '''display''' s'exécutent sur les processeurs 0, 1 et 2 respectivement. Modifiez le fichier '''Makefile''' pour compiler le fichier '''main_sobel.c''' plutôt que le fichier '''main_hello.c'''.
    331331
    332 '''Question''' : Lancez la simulation. Quelle est la téquence d'affichage? Cette fréquence est l'inverse du nombre de cycles entre deux affichages.
     332'''Question''' : Lancez la simulation. Quelle est la téquence d'affichage? (inverse du nombre de cycles entre deux affichages).
    333333
    334334'''Question''' : L'inconvénient du mécanisme de synchronisation par bascule SET/RESET est que les deux tâches productrice et consommatrice ne peuvent s'exécuter en parallèle. Comment peut-on modifier l'application logicielle pour augmenter le parallélisme et augmenter ainsi la fréquence d'affichage des images?