A method and apparatus of translating and executing native code in a virtual machine environment. Debugging of a virtual machine implementation is made easier through binary translation of native code, which permits greater platform independence and greater control over thread management and scheduling, and provides for identification of memory access errors in the native code. When native code is to be executed within a virtual machine environment, the native code is translated into an intermediate form. This intermediate form is processed to determine where memory access and blocking system calls occur. Validity checks are inserted into memory access calls to determine whether the portion of memory to be accessed by each call is within a permitted range. Wild pointers and other resources of memory access errors associated with the native code may thus be identified. Blocking system calls are replaced with non-blocking variants, and "yield" operations may be inserted into system calls and loops. The revised native code incorporating memory access validity checks and non-blocking system calls is compiled or interpreted by the virtual machine to execute the routines defined by the native code. Because the revised native code does not block other threads, thread scheduling may be managed by the virtual machine rather than the underlying operating system, and cooperative scheduling may be performed.

Une méthode et un appareil de traduire et d'exécuter le code indigène dans un environnement virtuel de machine. La correction d'une exécution virtuelle de machine est faite à une traduction binaire traversante plus facile du code indigène, qui permet la plus grande indépendance de plateforme et un plus grand contrôle de gestion et de l'établissement du programme de fil, et prévoit l'identification des erreurs d'accès mémoire dans le code indigène. Quand le code indigène doit être exécuté dans un environnement virtuel de machine, le code indigène est traduit en forme intermédiaire. Cette forme intermédiaire est traitée pour déterminer où l'accès mémoire et le blocage des appels de système se produisent. Des contrôles de validité sont insérés dans des appels d'accès mémoire pour déterminer si la partie de la mémoire consulter par chaque appel est dans une marge autorisée. Les indicateurs sauvages et d'autres ressources des erreurs d'accès mémoire se sont associés au code indigène peuvent être identifiés ainsi. Bloquant des appels de système sont remplacés avec des variantes non groupantes, et des opérations d'"rendement" peuvent être insérées dans des appels et des boucles de système. La validité d'incorporation révisée d'accès mémoire de code indigène vérifie et des appels non groupants de système est compilés ou interprétés par la machine virtuelle pour exécuter les routines définies par le code indigène. Puisque le code indigène révisé ne bloque pas d'autres fils, l'établissement du programme de fil peut être contrôlé par la machine virtuelle plutôt que le logiciel d'exploitation fondamental, et l'établissement du programme de coopérative peut être effectué.

 
Web www.patentalert.com

< (none)

< System for providing prioritized wireless communication service to wireless communication subscribers

> Walk-through human/machine interface for industrial control

> (none)

~ 00013