Qemu fonctionne un peu moins connement que ça, heureusement.
Le code de qemu est composé de fonction C qui émule en effet chaque instruction de chaque CPU. Ces fonctions sont compilés avec un compilateur C. Ensuite, le header et le trailer de chaque fonction est enlevé. Lors de l'arrivé d'un code executable dans Qemu, chaque instruction est traduite par copie du coeur de la fonction de chaque instruction. Dans le cas d'instruction système, cela peut être gros. Dans le cas d'une traduction x86 vers x86, cela donne exactement la même instruction. La seul perte est donc dans la création à la volé du binaire correspondant, mais une fois dans une boucle, la vitesse est la même que la vitesse native.
C'est l'utilisation un peu détourné de gcc qui rendu difficile le passage de gcc 3.x à gcc 4.x.
[^] # Re: quelques remarques
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comparaison des performances de machines virtuelles. Évalué à 2.
Qemu fonctionne un peu moins connement que ça, heureusement.
Le code de qemu est composé de fonction C qui émule en effet chaque instruction de chaque CPU. Ces fonctions sont compilés avec un compilateur C. Ensuite, le header et le trailer de chaque fonction est enlevé. Lors de l'arrivé d'un code executable dans Qemu, chaque instruction est traduite par copie du coeur de la fonction de chaque instruction. Dans le cas d'instruction système, cela peut être gros. Dans le cas d'une traduction x86 vers x86, cela donne exactement la même instruction. La seul perte est donc dans la création à la volé du binaire correspondant, mais une fois dans une boucle, la vitesse est la même que la vitesse native.
C'est l'utilisation un peu détourné de gcc qui rendu difficile le passage de gcc 3.x à gcc 4.x.
"La première sécurité est la liberté"