Virtualize all cpu cores on a guest with a virtual single core - virtualization

Suppose that we have a guest OS that allows support only for a single core.
We have an host with N=2^K cores with a virtualization solution that allows to provide all such cores to our guest.
The guest will see only one core while using most of the computational resources of host's N cores.
Is it possible, with actual technologies, to have such a transparent allocation of CPU cores to guest?
Regards,
Giovanni
P.S. Found an old answer to this question on serverfault

No. Such technology does not exist ATM. If it did, everyone would be using it.

Related

Virtualisation Classification

I have been reading virtualisation where i came across many types of virtualisation technique
Now i am confused about the types
Here is my understanding of classifying virtualisation
Type 1(bare metal virtualisation)
1.1 Full virtualisation
1.2 para virtualisation
1.3 hardware assisted virtualisation
Type 2(host based virtualisation)
Am i correct??
I have searched internet but was not able to find satisfactory answers
Virtualization is a very broad term. There can be many components in IT world which can be virtualized. Most common types of virtualization are:
OS Virtualization
Application Virtualization
Network Virtualization
Hardware Virtualization
Storage Virtualization
The terms you have mentioned (Type 1 and Type 2) are type of Hypervisors. Hypervisor can be thought of as an intermediate entity between a physical machine and virtual machine. Simply put hypervisor is the Virtualization enabler.
Hypervisor can virtualize physical resources using different techniques:
It can be done by making hypervisor part of Kernel which is called
Full virtualization
Modifying the guest OS which can leverage hypervisor to intercept the calls made by VM to the physical resources. This is called paravirtualization.
Hardware itself can be modified like AMD-V or Inter VT-x processors to enable virtualization. In such case it is hardware assisted virtualization.
I hope it clarifies your doubt.

Do MPI library need an OS for heterogeneous multicore system?

I am new to multicore. As a beginner my question maybe basic,my question is can MPI library be supported in baremetal heterogeneous systems ? or do we need an OS (like RTOS) to support the MPI library ? It will be useful if anyone can provide links of any implemented MPI on a heterogenous system with or without OS. Anything will be useful for understanding. Thanks in advance.
EDIT : I would also like to know the general requirements of a system for MPI , if not specific.
I am not too sure what you mean with a baremetal heterogeneous system.
You need to have an operating system
We tried to perform a simulation distributed into serveral processes. Some processes were calculated on a Linux (RedHat6) and some on Windows7 machine.
We used intel mpi. The pmi_proxy needs to be accessible on all machines.
Since the machines were connected with a normal gigabit lan connection, the performance was rather poor. MPI really benefits form a quick connection like infiniband.
The general requirement is that you need to have a connecting network between the machines. They even turn several raspberry pis into a supercomputer (I would perhaps say cluster).
This is a quite similar question.
Problems like this may occur.

Micro-kernel architecture based operating system for desktop users?

Can we have Operating system with micro-kernel architecture targeted on desktop users? I have read here on this website that older micro-kernel can be 50% slower than Monolithic kernel, while later version like L4 were only 2% or 4% slower than the Monolithic kernel. L4 kernel is very famous for its performance.
Why don't we have an operating system based on micro-kernel architecture targeted on desktop users? Can we have such operating systems in future?
Existing OSes like Windows, Linux have a huge ecosystem thus most resources go into them. However, there are projects to micro kernel base system and there's a huge use in special use cases. It takes time and work to create a general purpose OS - and the practical benefit is quite low for most user, as then wont ever notice what OS core they are actually using.
You may give this a try: https://genode.org
Or watch this: https://de.wikipedia.org/wiki/Google_Fuchsia

Understanding Virtualization

I want to know about Virtualization in detail. But start from basics, like what is virtualization, with real world examples and scenarios. When ever I search, i got Virtualization technologies, but I want to learn and in fact know what exactly is virtualization, its types and all...
Please help me in getting practical details of term "Virtualization"
Virtualization is a big topic, but very roughly speaking there are three main levels of virtualization:
OS virtualization with a type 1 hypervisor
Virtual machine that run on an existing hardware/OS, e.g. VMWare
High-level virtual machines, e.g. JVM
I would recommend this book: Virtual Machines, by J. E. Smith and R. Nair.
It covers pretty much all virtual execution environments: process virtualization, high level virtual machines, system virtual machines, multiprocessor virtualization, etc.
Note that depending on the level which you are interested in, it gets pretty much related to system administration / hardware, so you might also ask the question on serverfault.com.
The question is pretty generic so it can lead to different replies, but I think that you first need to define and understand what is an actual hypervisor and why it is used:
The hypervisor is used to do the abstraction between the physical and the virtual resources. In other words, it is responsible to create a virtualized layer and share the hardware components (CPU, RAM, NIC, storage) to the virtual machines that will be used. Therefore, it is a lot simpler to centralize and manage multiple sources of heterogeneous elements. It is possible to deploy two types of hypervisors:
Type 1 Hypervisor: There is no actual operating system installed on the bare metal server except the software used to deploy the hypervisor. It is especially used in an enterprise context considering that you maximize the resources to share (you do not have the limitation of running an underlying operating system), but it also possible to deploy one in a home lab if you have the required hardware. A classic example is a VMWare ESXi host.
Type 2 Hypervisor: It consists of installing the hypervisor on top of the actual operating system (Windows, Linux, MacOS). It is used especially for testing, deploying simple services and to extend your software capabilities (you can run multiple different operating systems simultaneously). A classic example is Oracle’s Virtual Box.
In your case, I think that the best choice to actually learn about virtualization would be to download a type 2 Hypervisor (Virtual Box or VMWare Workstation Player for instance) in order to deploy a few multiple virtual machines and gain your first hands-on experience.
Specifically, try to explore the different virtual network and storage configurations that are available to differentiate every component.

What kind of kernel does MS Windows have?

I saw a question on Linux Kernel. While reading that I had this doubt.
The Windows NT branch of windows has a Hybrid Kernel. It's neither a monolithic kernel where all services run in kernel mode or a Micro kernel where everything runs in user space. This provides a balance between the protection gained from a microkernel and the performance that can be seen in a monolithis kernel (as there are fewer user/kernel mode context switches).
As an example, device drivers and the Hardware Abstraction layer run in kernel node but the Workstation service runs in user mode. The wikipedia article on Hybrid Kernels has a good overview.
The Windows Internals book gives an explanation for the hybrid approach
... The Carnegie Mellon University Mach
operating system, a contemporary
example of a microkernel architecture,
implements a minimal kernel that
comprises thread scheduling, message
passing, virtual memory, and device
drivers. Everything else, including
various APIs, file systems, and
networking, runs in user mode.
However, commercial implementations of
the Mach microkernel operating system
typically run at least all file system,
networking, and memory management
code in kernel mode. The reason is
simple: the pure microkernel design is
commercially impractical because it’s
too inefficient.
According to Wikipedia it's a Hybrid kernel. Which may or may not be just marketing speak for about the same as a monolithic one. The graphic on the latter page does make some things clearer, though.
Most importantly, almost no program on Windows uses the kernel API directly. And the complete Windows API subsystem resides in user space which is a rather large part of the OS as we see it. And in more recent versions Microsoft began to pull more and more device drivers from kernel space into user space (which is especially a good idea with certain drivers, such as for video cards which are probably as complex as an operating system on their own).
hyru hybrid kernel is the name of the Kernel that Windows systems after Windows 98, before that it was a GUI overlaid on DOS using a monolithic Kernel.