I've been thinking (not necessarily a good thing)...
Intel and AMD have both released full details of their virtualization support - "LaGrande" and "Pacifica" respectively.
Microsoft have announced their intentions of building a hypervisor into a "stripped down" version of Windows (possibly released as a service pack for Longhorn). IMHO this will lead to full featured versions of Windows with the ability to run other OSs under the inbuilt hypervisor. Then there's traditional emulators - Bochs, Qemu, VirtualPC, VMWare, etc.
Now, my OS is intended to (eventually) be ported to other platforms so that a cluster can consist of a variety of architectures. The things above make me wonder if it'd be best to build an "emulation API" into the OS design, where the user (or OS) could start up an emulation of any other supported architecture in order to run another OS in a window, or an application designed for my OS on a different architecture than what it was compiled for.
That way the "emulation API" would be able to make use of virtualization hardware if present while using traditional emulation if it's not. My normal "thread is an object" approach would be used to split the emulation into many modules, so that the "core" of the emulator could be changed (e.g. from Bochs/Qemu style to hardware supported hypervisor style) without effecting the other modules (virtual devices, etc).
I'd be able to write the code for the "virtual devices" at the same time (or soon after) writing the device drivers for my OS - reducing the amount of research required to get it all working. I'd also be able to build emulation support into the device drivers themselves, so that real devices could be assigned to the emulator instead of being used by the host OS (e.g. the guest OS would be able to use real hardware).
IMHO there's 3 types of projects that are absolutely huge - OSs, compilers and emulators. I've always intended to tackle each of these one at a time, but I'm not sure if tackling 2 at once is a good idea. While I'd find it a bit overwhelming, the more I think about it the more I think it'd be easier to do the emulator/hypervisor and OS at the same time.
Now for the questions

Has anyone else considered this approach?
Should I do it (or more realistically, should I attempt it)?
Any other comments, queries or suggestions?
Thanks,
Brendan