Lassen Sie mich das "Warum" ansprechen.
Einer der Gründe für ein modernes Betriebssystem besteht darin, dass mehrere Programme (Prozesse) gleichzeitig auf einem System ausgeführt werden können. Wenn Sie dies sicher tun möchten, muss Folgendes geschehen:
Wahrscheinlich möchten Sie (sofern Sie keine besonderen Anforderungen haben) den Arbeitsspeicher im System nicht fest aufteilen - z. B. 256 MB fest pro Prozess -, sondern lediglich auf 8 Prozesse in einem 2-GB-System. Sie möchten, dass jeder Prozess nach Speicher "fragt" und ihn zurückgibt, wenn er fertig ist.
Sie möchten auch I / O-Geräte nicht fest auf Geräte verteilen. In der Regel möchten Sie, dass einige oder die gesamte Hardware, wie z. B. der Arbeitsspeicher, eine gemeinsam genutzte Ressource ist oder zumindest zeitweise nur bestimmten Prozessen zu bestimmten Zeiten vorbehalten ist. Dies setzt voraus, dass alle Prozesse nicht versuchen, die E / A selbst durchzuführen, sondern etwas "durchlaufen", um die E / A zu planen und zu koordinieren. Die Zeitplanung ist wichtig, da die meisten E / A-Vorgänge viel langsamer sind als die CPU, sodass Sie die CPU für andere Prozesse verwenden können, während sie auf die E / A-Vorgänge wartet, selbst auf einem Single-Core-System.
Um das oben Genannte richtig zu machen, muss man mehrere CPU-Hardwarefunktionen nutzen. Eine davon ist die MMU, die andere der geschützte Modus. Können zwei Betriebssysteme diese Hardwarefunktionen gemeinsam nutzen, um zwei oder mehr Betriebssysteme auszuführen?
Sicher, aber es gibt nichts in der Hardware, das ein Betriebssystem daran hindert, den gesamten Speicher des anderen Betriebssystems zu durchsuchen. Befindet sich die CPU im Kernel-Modus (es gibt nur einen Kernel-Modus), kann jeder Code alles tun. Code von einem Betriebssystem kann zu 100% über den Code oder die Daten des anderen Betriebssystems ausgeführt werden. Und wir wissen, dass Betriebssysteme in der Vergangenheit Sicherheitslücken hatten und in Zukunft noch mehr haben werden. Das ist also sehr schlecht für die Sicherheit.
Wäre es nicht cool, wenn Sie eine weitere "Ebene" darüber legen könnten und die Hardware-Unterstützung für mehrere Betriebssysteme benötigen würde? Genau das tun die Hardwarevirtualisierungsfunktionen. Sie stellen eine Hardware-Barriere zwischen mehreren laufenden Betriebssystemen dar, und es gibt eine "Schnittstelle" der obersten Ebene, einen sogenannten Hypervisor. Sie können nur einen Hypervisor haben. Und ja, Prozesse, die unter einem der beiden Betriebssysteme ausgeführt werden, müssen drei Ebenen durchlaufen, um E / A auszuführen (Prozess - lokaler Kernel - Hypervisor).