Wargan Solutions: Publications.

Laboratoire R&D

Implémentation d'une table de hachage parallèle - Raphael Prevost - 22/07/2010

Une table de hachage est une structure de données généralement utilisée pour impléementer tableaux associatifs, caches, ou plus généralement associer une clé à une valeur. Dans le cadre de notre projet, nous avons choisi de réaliser un cache de données reposant sur cette structure, particulièrement intéressante dans notre cas pour ses temps d'accès relativement constants par rapport au nombre d'entrées dans la table. Cependant, la majorité des implémentations libres ne sont pas optimisées pour une utilisation parallèle. Nous avons donc décidé de programmer cette structure nous-mêmes, en nous basant sur les travaux publiés sur le sujet. Nous décrirons dans cet article le cheminement que nous avons suivi afin de mener à bien cette implémentation.
Une table de hachage n'est pas une structure complexe: c'est en réalité un vulgaire tableau. Tout l'art et la difficulté de son implémentation se résume à deux problèmes principaux:

  • Le premier consiste à trouver une fonction injective (fonction de hachage) associant efficacement à toute clé un emplacement quelconque dans le tableau.
  • Le second est plus subtil et procède directement du premier: notre tableau ne disposant que d'un nombre fini d'emplacements, il est nécessaire de gérer le cas où la fonction de hachage attribue le même emplacement à plusieurs clés différentes (collision). C'est le problème de la gestion de ces collisions qui est le plus ardu, et il existe de nombreuses façons de le traiter. Nous allons les passer en revue concisément dans les paragraphes suivants.

Lire la suite de "Implémentation d'une table de hachage parallèle".



Optimiser l'allocation mémoire avec le Thread Local Storage (TLS) - Raphael Prevost - 19/07/2010

Les allocations mémoire sont généralement plus coûteuses que d'ordinaire en environnement multi-thread. En effet, la majorité des algorithmes d'allocation en usage dans les systèmes d'exploitation actuels implémentent le tas à l'aide d'un ou plusieurs pool de mémoire protégés par des mécanismes de synchronisation à exclusion mutuelle. Cela induit de la contention lorsque plusieurs threads ont besoin de mémoire simultanément. De plus, les primitives de verrouillage introduisent bien souvent une perte de performance même lorsqu'un seul processus les utilise.

A cela s'ajoute l'éventualité plus fourbe d'obtenir dans deux threads différents des blocs mémoire partageant la même ligne de cache processeur. Dans un tel cas de figure, si deux processeurs utilisent ces blocs mémoire indépendants simultanément, le mécanisme de cohérence du cache provoquera une importante perte de performance en le rafraîchissant à chaque accès. Nous avons donc étudié la possibilité de limiter le nombre d'allocations concurrentes pour augmenter les performances tout en continuant d'utiliser l'allocateur du système à l'aide du mécanisme de Thread Local Storage (TLS).

Lire la suite de "Optimiser l'allocation mémoire avec le Thread Local Storage (TLS)".

Offres d'emploi

Stage - Consultant en sécurité informatique - 22/07/2010

Associé aux consultants de l'entreprise, vous aurez pour mission d'assurer dans un premier temps la veille en vulnérabilités.
Suite à cette mise en condition, vous serez ensuite invité à collaborer sur l'audit de plusieurs CMS / Framework libres, et au développement d'outils de tests d'intrusion interne. Enfin, selon votre évolution, vous participirez, dans certaines phases, à des tests d'intrusions applicatifs.

Vous devez absolument connaitre les concepts de la sécurité informatique applicative web (XSS, XSRF, Sql injection, Blind sql injection, LFI, etc); et les outils de détection et d'exploitation.

Vous êtes proche idéologiquement des méthodes et techniques de l'OWASP.
Votre formation n'est pas un facteur déterminant (de bac +3 à bac +5), nous recherchons avant tout quelqu'un de passionné et disposant d'excellentes connaissances en sécurité web.

Possibilité d'évolution en CDI.
Pour postuler: recrutement@wargan.com