2011-05-05 5 views

Répondre

1

Si vous aviez un langage de programmation qui vérifiait lors de l'exécution que tous les accès tampons étaient valides, comment pourriez-vous obtenir un dépassement de mémoire tampon? Il y a beaucoup de langauges comme celle-ci (par exemple, Java). Une question plus pratique est, y a-t-il des services Web qui sont entièrement mis en œuvre (de bas en haut) de cette façon? J'en doute; la plupart sont construites sur un OS, généralement écrit en C, et il y a la faiblesse. Vous n'avez aucune garantie pratique que la machinerie sous-jacente à votre système d'exploitation (ou votre environnement d'exécution Java, d'ailleurs) ne contient pas de débordement de tampon caché. Une chose que vous pouvez faire est de convertir votre langage de programmation "sans contrôle d'accès au tampon" en un langage "coché" qui ne peut pas faire une erreur sans le signaler. Voir notre CheckPointer pour un outil qui fait exactement cela pour le langage de programmation C. À l'heure actuelle, cet outil n'est pas pratique à utiliser dans un environnement de production, car il ajoute plutôt beaucoup de frais généraux. Il y a de l'espoir, cependant; Il y a des projets de recherche qui produisent des programmes qui ne peuvent pas accéder en dehors de sa propre mémoire, mais qui échangent la correction fonctionnelle/la précision des rapports pour la performance, et ceux-ci ont des frais généraux assez bas. Finalement, ces méthodes sont susceptibles d'être utilisées dans ces couches inférieures de logiciels, pour s'assurer qu'ils ne peuvent pas causer de problème, soit.

+0

Avez-vous des preuves (code source de l'implémentation) que Java vérifie tous les accès au tampon lors de l'exécution? –

+0

Moi personnellement? Non, je n'ai jamais regardé. Je crois que les appels de spécification Java pour la détection et le rapport de toute opération d'indexation de tableau erronée, la détection et la signalisation d'accès aux objets NULL, etc .. Donc, aucun accès erroné programmé par Java ne devrait être possible. Ils pourraient goof au niveau de la langue, mais je serais très surpris d'une implémentation Java avec ce problème. Maintenant, les machines Java (probablement construites en C) ont des tampons et d'autres structures internes; Il est probable que nous ne garantissons pas que ces accès sont toujours vérifiés. L'OS ...? –

Questions connexes