So, you've got Linux and Windows with dual boot on the same machine. To switch between them you need to take the time to shutdown one, reboot, then fire up the other...But what if that were not the case? What if you could press a key and, instantly, your computer switiches operating systems? This is the question I'm posing to the well endowed minds of the HTS forums; would it be(at least theoretically) possible to run two operating systems (or more) simultaneously on one machine?

I suppose there would need to be an arbiter; a system in control of which operating system is active at any one time (I presume that if simultaneous OS's were possible, the two operating systems would need to take turns and not run truly simultaenously). Also, the operating systems themselves should not be aware of any change. Perhaps the arbiter would put one OS into suspend mode to switch to the other? Lastly, there's the problem of the process of booting, whilst having another operating system running, would it be possible to switch out of that, and boot up another?!

I apologise if this all sounds ridiculous, but it's a question I've been pondering and it'd be damn exciting if it were possible! ...if it has been done before feel free to call me a cretin and direct me to some information about it

I'm not too familiar with the nuts and bolts, but it seems like it would be at least technically possible. After all, hibernation works by dumping RAM and resuming. You would obviously need to set aside one partition for each OS, an area for RAM, and implement a hardware "switcher" process.

In the end though, I think this would still count as virtualization. That third "switcher" process would be like the host OS, and the others would be like the "guests"

I'm not too familiar with the nuts and bolts, but it seems like it would be at least technically possible. After all, hibernation works by dumping RAM and resuming. You would obviously need to set aside one partition for each OS, an area for RAM, and implement a hardware "switcher" process.

In the end though, I think this would still count as virtualization. That third "switcher" process would be like the host OS, and the others would be like the "guests"

Mhm yeah I agree with it possibly still counting as virtualization; the switcher would be almost like a hypervisor. Something I just thought of then would be that it would be different from a host OS in that, once the switching process is over, all resources are handed over to a guest OS, rather than running through virtualization...but then I guess that would require the guest OS to be aware of the switcher and be able to hand power back over to the switcher for switching...which probably complicates things by a few factors of 10!

I dunno, I wouldn't feel safe knowing that there are two active OS's running, especially because of the idea of two varying operating systems sending signals between my hardware. The switcher idea is pretty much the only way this can happen, but unless you're running a very high end system, or running some very low-spec Operating systems, I don't think it's worth it.

It's not who votes that counts, it's who counts the votesinsomaniacal.blog.com

Goatboy essentially described to a lesser extent what a hypervisor does. However, it's the hardware abstraction that would upset things.

A hypervisor itself is a light weight OS. It has a kernel, a scheduler, hardware drivers and it provides API that hook guest OSs so they can use the hypervisor as if it were the hardware. The end result is you get a shit ton of more contextual switches ( http://en.wikipedia.org/wiki/Context_switch ) which is less the ideal for performance. Switching the context of execution from 1 process to another is a heavy task for a CPU to do and for the system scheduler to coordinate in an organized manner (made slightly more complicated with SMP). The end result is that virtualization is a fairly resource intensive task.

Virtualization is great for multi-purposing hardware via secure partitioning, but in terms of getting full performance out of the hardware you may often find (and ironically so) that you'll at times have over utilized CPUs that are running underutilized VCPUs.

Also when running multiple instances of the same OS, you incur a memory overhead in terms of redundancy as you have multiple exact copies of kernels and countless process all running and all of them fighting for time on the CPU.

In conclusion, don't get caught up in hype and never loose sight of what your product/end goal is.

"If art interprets our dreams, the computer executes them in the guise of programs!" - SICP

“If at first, the idea is not absurd, then there is no hope for it” - Albert Einstein