Quindi tecnicamente non è proprio possibile "partizionare" fisicamente l'utilizzo delle risorse di sistema?
Per risponderti queste sono le cose che mi vengono in mente. ?
Un primo problema che mi viene in mente è ad esempio dovuto alla gestione delle interruzioni (interrupt hardware, così come le redirezioni) tramite APIC. Si occupa l'OS della configurazione iniziale, e non tutti i core possono prendersi in carico qualsiasi interrupt; in pratica già qui sarebbe arduo direzionare correttamente l'interruzione.
Per le configurazioni si usano ad esempio i registri
MSR, che sono quindi "fisici".
Ci sono altri registri che mantengono poi strutture "univoche": per dire GDTR è il registro che mantiene un riferimento alla base di una tabella chiamata Global Descriptor Table.
E le medesime considerazioni valgono poi sicuramente per la parte che riguarda la scheda madre, proprio come logiche/circuiti.
A parte questo anche lo scheduling dei thread sarebbe un altro problema. Come vengono scelti i thread da eseguire se un sistema operativo non conosce cosa sta facendo l'altro? Come si stabilisce anche una "parità" tra i due?
Ma potrei continuare con ad esempio la gestione della memoria. Nella pratica se coesistono due sistemi operativi in memoria sarebbe lecito riservare a loro uno spazio di indirizzi equo (e anche ridotto, quindi), quindi anche il modo in cui vengono tradotti gli indirizzi andrebbe modificato; per non parlare dei bit di controllo.
Sicuramente quelli che ho riportato sono una parte infinitesima dei problemi che si dovrebbero affrontare; lasciando poi da parte il fattore relativo alla sicurezza.