Skip to content

Latest commit

 

History

History
22 lines (18 loc) · 1.93 KB

Virtualization.md

File metadata and controls

22 lines (18 loc) · 1.93 KB

Virtualization

  • What are Virtualization Extensions about? For example: VT-x on Intel CPUs, AMD-V on AMD CPUs.

  • What are the differences between VT-x, VT-d, GVT-d -g and -s and IOMMU, and AMD-Vi?

  • What is the difference between bytecode of Virtual machine (e.g. Java virtual machine (JVM) of Java, Zend engine of PHP, Common Language Runtime (CLR) of Common Language Infrastructure (CLI) languages like C#, etc.) and machine code?
    Bytecode is a "temporary code" made for the virtual machine to understand. This "temporary code" is being called .class files (or simply Java ARchive (JAR) package containing .class files plus some extra files like text, images, etc.) for JVM, opcodes for Zend engine, CIL code for CLR, etc. A running virtual mashine executes bytecode by translating it on the fly into machine code that its host will understand, a process called just-in-time compilation. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes. Ultimately, programs and so bytecode must be translated into instructions that a CPU will understand, and the CPU doesn’t care which programming language you use to produce those instructions. And just like how a CPU doesn’t care which programming language you use to generate machine instructions, the virtual machine doesn’t care how you create bytecode. It doesn’t care if you use Scala, JRuby, Clojure, or even Java to create the bytecode for, for example JVM.
    Read more:
    https://www.braveclojure.com/java/
    https://stackoverflow.com/questions/3380581/does-php-have-a-virtual-machine-like-java
    https://en.wikipedia.org/wiki/List_of_CLI_languages
    https://en.wikipedia.org/wiki/Common_Language_Runtime
    https://en.wikipedia.org/wiki/Java_class_file
    https://en.wikipedia.org/wiki/JAR_(file_format)
    http://php.net/manual/en/internals2.opcodes.php