Forráskód Böngészése

chapters/sandbox_memory_blocks: ajout de la gestion d'accès

Alexandre Janniaux 6 éve
szülő
commit
3d8af05c2c
1 módosított fájl, 27 hozzáadás és 4 törlés
  1. 27 4
      chapters/sandbox_memory_blocks.tex

+ 27 - 4
chapters/sandbox_memory_blocks.tex

@@ -1,7 +1,10 @@
+\section{Gestion des blocs de données dans le pipeline}
+
 Lorsque l'on traite des données en streaming, on récupère la plupart du temps
-des tronçons de données. Dans VLC, ces tronçons sont annotés de données
-multimédia : le dts et le pts par exemple. On verra son fonctionnement en
-détails dans la partie encodage matériel pour Android.
+des tronçons de données. Dans VLC, ces tronçons sont annotés par des données
+multimédia : le dts et le pts par exemple, qui indique des instants pour le
+décodage et la présentation des images d'une vidéo. On verra son fonctionnement
+en détails dans la partie encodage matériel pour Android.
 
 Ce type de données est particulièrement présent dans le pipeline multimédia de
 VLC. On obtient des \inltype{block_t} après une lecture depuis un fichier ou le
@@ -22,5 +25,25 @@ partagée pour dresser la correspondance de pages mémoires dans des processus
 différents. On peut donc essayer d'introduire des \inltype{block_t} alloués
 comme des mémoires partagées que l'on transmet de processus en processus.
 
+\section{Intégration avec la gestion des accès}
+
 Avec cette idée-là, la gestion de l'accès des processsus aux ressources devient
-cruciale.
+cruciale. Il faut d'un côté pouvoir donner accès à ces données de façon
+performante, mais de l'autre côté offrir une isolation suffisante entre les
+processus. Il faut également pouvoir s'intégrer facilement dans le système
+d'envoi de message.
+
+Deux solutions sont alors envisagées. La première est de créer des blocs de
+mémoire sous forme de jetons d'accès dès lors qu'il y a création d'un nouveau
+bloc. Ces blocs peuvent donc être passés de façon indépendante, idéalement avec
+un paradigme «fire\&forget» qui fera le transfert de l'appartenance du bloc d'un
+processus à l'autre. Avec cette méthode, il suffit de modifier les fonctions
+comme \inltype{block_Alloc}, presque aucune synchronisation supplémentaire n'est
+requise.
+
+La seconde solution est de créer un seul bloc de mémoire partagé entre les deux
+processus, puis de multiplexer l'accès dessus pour plusieurs blocs. Bien
+qu'étant plus compatible avec la plupart des systèmes ainsi que plus performant,
+cela implique des manipulations sur le tampon ainsi qu'une moins bonne isolation
+entre les modules, on préfèrera donc la première méthode dès lors qu'elle est
+possible à mettre en place.