Still can't say that I understand what use virtualization would be. Ability to update the OS and OS features in the background while playing a game? I don't know if virtualization really helps in terms of multitasking. It's not something I'm all that familiar with.
Neither I am that's why I asked questions about how far the tech can be pushed. I linked a paper earlier about how to maintain Quality of Service (performances level,response time) in a virtualized environment (CPUs only I guess) without having the programmers to deal with balancing manually the different loads.
Trying to put it in a more comprehensive manner, I used a "black box" as (hardware) resources may not be presented to devs (they obviously know the underlying hardware).
One may think of it as what happen in SPURS, but with programmers not able to reach resources directly at all even if it were the ps3 the PPU.
MSFT could present a given number of queue tasks (thread to the devs, which may have nothing to do with the number of cores in use), they may set priority, affinity (like don't run this on separate cluster, assuming that the 8 cpu cores are split in 2 clusters with quiet possibly a penalty while accessing the "non local" L2, or those task can run on the same cores / you may want to run those task on the same cores). But ultimately it would be up to the hypervisor to pin a task/thread to a core, to have the physical cores to possibly steal work from one to another, etc. Make sure tasks meet there requirement wrt Quality of Service (response time, etc.).
To some extend, from the outside (programmer pov) it could be more like what an OS was doing in the single CPU (no SMT) era.
To me if that is actually doable and that's MSFT approach I think a benefit of that black box "virtualized machine" would be that you can move to any hardware likely to meet deliver the meet the standard that you presented to the developers through QoS.
You may change the number of cores of the underlying hardware, etc. the hypervisor would be pretty flexible which means that it hides minor difference in how 2 hardware performs (as long as it meet QoS standard).
I guess this would have an impact on how you handle multi-threaded code, you may want to rely on thing that can handle loose/varying timing, etc. You may want to avoid to low level optimization, I lock this because this should definitely be done in time, etc. vs non locking, less latency sensitive way of doing thing (if that makes sense but I don't think I an word it better
).
Definitely I don't know, I just wonder