Browse Source

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

Alexandre Janniaux 6 years ago
parent
commit
3d8af05c2c
1 changed files with 27 additions and 4 deletions
  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
 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
 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
 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
 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.
 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
 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.