Biarkan saya membahas bagian "mengapa".
Salah satu alasan untuk OS modern adalah untuk memungkinkan beberapa program (proses) untuk berjalan pada saat yang sama pada suatu sistem. Jika Anda ingin melakukan ini dengan aman, hal-hal berikut perlu terjadi:
Anda mungkin (kecuali jika Anda memiliki kebutuhan khusus) tidak ingin membagi RAM dalam sistem dengan cara yang tetap - misalnya 256MB diperbaiki per proses - membatasi Anda untuk 8 proses dalam sistem 2GB. Anda ingin setiap proses untuk dapat "meminta" memori dan mengembalikannya setelah selesai.
Anda juga tidak ingin membagi perangkat I / O secara tetap di antara perangkat. Biasanya Anda ingin sebagian atau semua perangkat keras, seperti memori menjadi sumber daya bersama, atau setidaknya hanya sementara untuk proses tertentu pada waktu tertentu. Ini mensyaratkan bahwa semua proses tidak mencoba melakukan I / O sendiri, tetapi "melewati" sesuatu untuk menjadwalkan dan mengoordinasikan I / O. Penjadwalan ini penting karena sebagian besar I / O jauh lebih lambat daripada CPU, sehingga Anda dapat membuat CPU berfungsi untuk proses lain saat menunggu pada I / O bahkan pada sistem single-core.
Untuk melakukan hal di atas, Anda perlu memanfaatkan beberapa fitur perangkat keras CPU. Salah satunya adalah MMU, yang lainnya adalah mode terproteksi. Bisakah dua OS berbagi fitur perangkat keras ini secara kooperatif untuk menjalankan dua atau lebih OS?
Tentu, tetapi tidak ada dalam perangkat keras yang dapat menghentikan satu OS dari menginjak seluruh memori OS lainnya. Jika CPU dalam mode kernel (hanya memiliki satu mode kernel), kode apa pun dapat melakukan apa saja. Ini 100% memungkinkan untuk kode dari satu OS untuk menjalankan kode atau data dari OS lain. Dan kita tahu sistem operasi memiliki kerentanan di masa lalu dan akan memiliki lebih banyak di masa depan. Jadi sangat buruk untuk keamanan.
Sekarang, bukankah itu keren jika Anda bisa meletakkan "lapisan" lain di atasnya dan memerlukan dukungan perangkat keras untuk banyak OS? Itulah tepatnya yang dilakukan fitur virtualisasi perangkat keras, mereka menempatkan penghalang perangkat keras antara beberapa OS yang berjalan, dan ada "antarmuka" tingkat atas bagi mereka yang disebut hypervisor. Anda hanya dapat memiliki satu hypervisor. Dan ya, proses yang berjalan di bawah salah satu OS harus melalui tiga lapisan untuk melakukan I / O (proses - kernel lokal - hypervisor)