![]() To keep things simple, we will use interchangeably the terms QEMU, KVM or QEMU/KVM to refer to this use (either virtualized, or emulated).Įmulation is slower, but it allows using CPU architectures different from the local one (you can run ARM code on a x86 machine). The Unikraft core is comprised of several components: Using (para)virtualisation, aka hardware acceleration, greater speed is achieved and more hardware components are visible to Unikraft. This defines behaviours and hardware interactions specific to the target architecture (x86_64, ARM, RISC-V).įor example, for the x86_64 architecture, this component defines the usable registers, data types sizes and how Thread-Local Storage should happen. This defines interaction with the underlying hardware, depending on whether a hypervisor is present or not, and which hypervisor is present.įor example, if the KVM hypervisor is present, Unikraft will behave almost as if it runs bare-metal, needing to initialize the hardware components according to the manufacturer specifications. The difference from bare-metal is made only at the entry, where some information, like the memory layout, the available console, are supplied by the bootloader (Multiboot) and there’s no need to interact with the BIOS or UEFI. In the case of Xen, many of the hardware-related operations must be done through hypercalls, thus reducing the direct interaction of Unikraft with the hardware. These define behaviour independent of the hardware, like scheduling, networking, memory allocation, basic file systems. These libraries are the same for every platform or architecture, and rely on the platform code and the architecture code to perform the needed actions. The internal libraries differ from the external ones in the implemented functionalities. The internal ones define parts of the kernel, while the external ones define user-space level functionalities.įor example, uknetdev and lwip are 2 libraries that define networking components.
0 Comments
Leave a Reply. |