▲ | tremon 3 days ago | ||||||||||||||||||||||||||||||||||||||||||||||
"while sharing the underlying hardware resources"? At the risk of sounding too positive, my guess is that hell will freeze over before that will work reliably. Alternating access between the running kernels is probably the "easy" part (DMA and command queues solve a lot of this for free), but I'm thinking more of all the hardware that relies on state-keeping and serialization in the driver. There's no way that e.g. the average usb or bluetooth vendor has "multiple interleaved command sequences" in their test setup. I think Linux will have to move to a microkernel architecture before this can work. Once you have separate "processes" for hardware drivers, running two userlands side-by-side should be a piece of cookie (at least compared to the earlier task of converting the rest of the kernel). Will be interesting to see where this goes. I like the idea, but if I were to go in that direction, I would choose something like a Genode kernel to supervise multiple Linux kernels. | |||||||||||||||||||||||||||||||||||||||||||||||
▲ | elteto 3 days ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||
You just don't share certain devices, like Bluetooth. The "main" kernel will probably own the boot process and manage some devices exclusively. I think the real advantage is running certain applications isolated within a CPU subset, protected/contained behind a dedicated kernel. You don't have the slowdown of VMs, or have to fight against the isolation sieve that is docker. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
▲ | vlovich123 3 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||
Is there anything that says that multiple kernels will be responsible for owning the drivers for HW? It could be that one kernel owns the hardware while the rest speak to the main kernel using a communication channel. That's also presumably why KHO is a thing because you have to hand over when shutting down the kernel responsible for managing the driver. | |||||||||||||||||||||||||||||||||||||||||||||||
▲ | JackSlateur 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||
Think "cloud providers" Today, you can grab a physical NIC and create some number of virtual NICs. Same for GPUs. I guess the idea is that you have some hardware, and each kernel (read "virtual machine") will get:
Every kernel will mostly think it owns real hardware, while in fact it only deals with part of it (all of this due to virtualized hardware support that can be found in many places)This feature does not seem like a general-usage feature, which can be used in our laptop | |||||||||||||||||||||||||||||||||||||||||||||||
▲ | p_l 2 days ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||||||||
This is something that was actually implemented and used on multiple platforms, and generally requires careful development of all interacting OSes. Some resources that have to be multiplexed are handled through IPC between running kernels, otherwise resources were set to be exclusively owned. This allowed cheap "logical partitioning" of machines without actually using a hypervisor or special hardware support. |