Kedalaman virtualisasi Windows (Bagian 1) — Di mana Windows Anda sebenarnya berjalan? Hypervisor dan partisi

· · Windows, Virtualisasi, Hyper-V, Hypervisor, SLAT, VMBus

Buka System Information (msinfo32) di Windows 11 dan Anda sering melihat “Running” di bidang “Virtualization-based security” — bahkan pada mesin di mana Anda tidak pernah membuat VM.

Artinya adalah fakta berikut. Di PC itu, Windows host sendiri sudah berjalan di atas hypervisor. “Virtualisasi” bukan lagi teknologi hanya untuk orang yang membuat VM di Hyper-V Manager. Di Windows 11, virtualization-based security (VBS) diaktifkan secara bawaan pada konfigurasi yang memenuhi syarat — misalnya instalasi bersih pada perangkat keras yang kompatibel1 — dan baik WSL2 maupun Windows Sandbox dibangun di atas Windows hypervisor yang sama. Di bawah Windows yang Anda pakai setiap hari, sudah ada satu lapisan perangkat lunak lagi.

Seri ini, “Kedalaman virtualisasi Windows”, mengikuti apa yang terjadi di lapisan itu, mulai dari fondasinya.

“Kedalaman virtualisasi Windows” — seluruh 3 bagian

  1. Bagian 1 (artikel ini): Hypervisor dan partisi
    Kita mengikuti ke mana Windows host berakhir berjalan ketika Anda mengaktifkan Hyper-V.
  2. Bagian 2: Memori yang bahkan kernel pun tidak bisa lihat — VBS, HVCI, dan Credential Guard
    Kita mengikuti di mana Windows menaruh rahasia yang tidak dapat dibaca administrator maupun kernel.
  3. Bagian 3: Mesin virtual yang boot dalam hitungan detik — WSL2, Windows Sandbox, dan kontainer
    Kita mengikuti, dari cara memori dan image dibagi, mengapa WSL2 dan Sandbox ringan padahal VM penuh itu berat.

Pertanyaan yang dijawab Bagian 1 hanya satu.

Ketika Anda mengaktifkan Hyper-V, ke mana Windows host berakhir berjalan?

Pembaca sasaran adalah pengembang dan operator yang memakai Hyper-V, WSL2, atau Windows Sandbox dan ingin memahami dari mekanismenya apa yang berjalan di bawahnya. Prasyarat adalah Windows 10/11 x64 atau Windows Server terkini (pembahasan ring, VT-x/AMD-V, dan EPT/RVI di artikel ini mengasumsikan x64; Arm64 memakai mekanisme berbeda seperti exception level). Latar belakang yang dibutuhkan adalah sekitar pembedaan mode kernel dan mode pengguna; Anda tidak perlu pengalaman operasi VM atau pengetahuan pengembangan hypervisor. Tingkat kesulitannya menengah. Kita membahas konsep ekstensi virtualisasi CPU, tetapi tidak masuk ke rincian instruction set.

1. Kesimpulan lebih dulu

Ketika orang mendengar Hyper-V, mereka mungkin membayangkan “perangkat lunak yang menjalankan VM yang duduk di atas Windows”. Struktur sebenarnya terbalik.

Sejak saat Anda mengaktifkan Hyper-V dan reboot, hypervisor-lah yang mengendalikan CPU fisik dan memori, dan Windows host berjalan di atasnya sebagai partisi pertama yang berhak istimewa — “root partition”.

Hypervisor adalah lapisan perangkat lunak tipis yang duduk antara perangkat keras dan OS, membuat lingkungan eksekusi terisolasi yang disebut “partisi”, dan menengahi akses ke perangkat keras.2 Tempat Windows host masuk adalah root partition; tempat VM masuk adalah child partition. Root partition diperlakukan secara khusus (ia punya akses langsung ke perangkat fisik dan menahan tumpukan manajemen), tetapi dalam arti ia tidak mengendalikan CPU fisik secara langsung, ia berdiri di posisi yang sama dengan child partition.

Struktur keseluruhan setelah Hyper-V diaktifkanHypervisor duduk langsung di atas perangkat keras fisik, dan di atasnya duduk root partition yang menahan Windows host serta child partition yang menahan VMPerangkat keras fisikHypervisorRoot partition (Windows host)Child partition (VM)Menahan tumpukan manajemen virtualisasi dan driver perangkat

Gambar 1: Hyper-V bukan “perangkat lunak VM di atas Windows” melainkan lapisan yang masuk ke bawah Windows, dan OS host sendiri berjalan di dalam root partition.

Anda mungkin berpikir, “Jika rasanya tidak berbeda setelah saya mengaktifkannya, apakah pembalikan sebesar itu benar-benar terjadi?” Sudah. Justru karena itu struktur ini biasanya tidak kentara. Di artikel ini kita membongkar diagram tunggal ini sepanjang tiga sumbu: CPU, memori, dan I/O perangkat.

2. Dari CPU — satu hak istimewa lagi di bawah ring

2.1. Rekap perlindungan ring

CPU x64 punya tingkat hak (ring), dan Windows menjalankan mode kernel di ring 0 dan mode pengguna di ring 3. Aplikasi tidak dapat menyentuh perangkat keras secara langsung karena instruksi berhak istimewa tidak dapat dieksekusi dari ring 3.

Jadi bagaimana Anda menampung dengan aman beberapa kernel OS, masing-masing berjalan di ring 0, pada CPU fisik yang sama? Setiap kernel ditulis dengan asumsi “saya mengendalikan CPU”. Beri ring 0 kepada semuanya dan mereka bertabrakan; tahan dan mereka tidak akan berjalan.

Masalah beberapa kernel OS yang menuntut ring 0Baik kernel host maupun tamu ditulis dengan asumsi wewenang penuh di ring 0, jadi tangga ring tradisional saja tidak dapat menampung mereka dengan aman pada CPU fisik yang samaKernel host (asumsi ring 0)Menuntut kendali CPU fisikKernel tamu (asumsi ring 0)Ring tradisional tidak bisa merukunkan iniPenengah di atas ring 0 dibutuhkan

Gambar 2: Tangga ring dibangun dengan asumsi satu OS, jadi menampung beberapa kernel membutuhkan satu hak istimewa lagi di atasnya.

2.2. Ekstensi virtualisasi — mode yang dicadangkan untuk hypervisor

Yang menyelesaikan masalah ini adalah ekstensi virtualisasi CPU (Intel VT-x/AMD-V). Hyper-V mensyaratkan prosesor yang punya fitur ini.2 Ekstensi virtualisasi menambahkan, pada sumbu terpisah dari ring tradisional, “mode eksekusi untuk hypervisor” dan “mode eksekusi untuk tamu”. Itu hak istimewa yang bahkan lebih kuat dari ring 0, kadang dijuluki “ring -1”.

  • Kernel tamu terus berjalan di ring 0, seperti semula. Tidak perlu penulisan ulang.
  • Ring 0 itu, namun, adalah “ring 0 di dalam mode tamu”, dan ia tidak mengendalikan CPU fisik secara keseluruhan.
  • Ketika tamu menabrak operasi tertentu yang membutuhkan campur tangan hypervisor (instruksi yang dikonfigurasi sebagai intercept, atau exception atau pelanggaran), CPU secara otomatis memindahkan kendali ke hypervisor (VM Exit). Ketika hypervisor selesai menanganinya, ia kembali ke tamu (VM Entry). Akses memori biasa lewat tanpa VM Exit, selama terjemahan SLAT berhasil.

Interrupt bekerja dengan cara yang sama. Partisi tidak menyentuh prosesor fisik secara langsung; hypervisor menerima interrupt dan mengarahkannya ke setiap partisi.2

Alur eksekusi tamu dan VM ExitKernel tamu dan aplikasi berjalan di ring 0 dan ring 3 dalam mode tamu; akses memori biasa lewat lewat terjemahan SLAT, sementara intercept dan exception yang dikonfigurasi menyebabkan VM Exit yang memindahkan kendali ke hypervisor, yang lalu kembali ke tamu lewat VM EntryTidakYaBerjalan di mode tamu (termasuk kernel ring 0)Operasi yang butuh campur tangan? (intercept/exception terkonfigurasi)Lanjut mengeksekusi apa adanyaVM Exit (CPU pindahkan kendali)Hypervisor menanganinyaKembali ke tamu lewat VM Entry

Gambar 3: OS tamu terus berjalan di ring 0 tanpa penulisan ulang, dan CPU memanggil hypervisor hanya ketika dibutuhkan.

Bolak-balik ini terlihat sangat mirip dengan alur yang kita ikuti di seri memori — “masuk ke kernel pada page fault, lalu kembali ke instruksi yang sama”. CPU mencegat kendali lewat mekanisme exception atau transisi, membiarkan pengelola tingkat lebih tinggi memutuskan, lalu kembali. Di kedalaman Windows, bentuk ini muncul berulang-ulang.

2.3. Tipe 1 dan Tipe 2 — perbedaannya adalah di mana ia duduk

Hypervisor secara luas dibagi menjadi Tipe 1 (bare-metal), yang berjalan langsung di perangkat keras, dan Tipe 2 (hosted), yang berjalan di atas OS host. Hyper-V adalah Tipe 1.3 VirtualBox dan VMware Workstation (ketika dijalankan mandiri) diklasifikasikan sebagai Tipe 2.

Mendengar Tipe 1, orang cenderung membayangkan “konfigurasi hanya-server tanpa OS host”, tetapi Hyper-V berbeda. Windows host tidak hilang — ia “pindah rumah” ke dalam root partition. Ketika Anda mengaktifkan Hyper-V dan reboot, hypervisor start lebih dulu selama boot, dan Windows host lalu muncul sebagai root partition di atasnya.

Perbedaan hypervisor Tipe 1 dan Tipe 2Di Tipe 2 OS host duduk di perangkat keras dan hypervisor serta VM duduk di OS host, sedangkan di Tipe 1 Hyper-V hypervisor duduk langsung di perangkat keras dan OS host sendiri masuk ke root partition di atasnyaTipe 1 (Hyper-V)Tipe 2 (hosted)HypervisorPerangkat kerasRoot partition (OS host)VMOS hostPerangkat kerasHypervisorVM

Gambar 4: Di Tipe 2 hypervisor duduk di OS host, sedangkan di Tipe 1 Hyper-V urutannya terbalik dan OS host sendiri duduk di lapisan satu tingkat di bawah.

Dilihat pada linimasa boot, perubahan yang terjadi ketika Anda mengaktifkannya tampak seperti ini.

Urutan boot setelah Hyper-V diaktifkanSetelah dinyalakan, hypervisor start lebih dulu selama boot, Windows host lalu muncul sebagai root partition di atasnya, dan VM, VBS, serta sejenisnya start setelah ituNyala dan boot mulaiHypervisor start lebih duluWindows host start sebagai root partitionVM, VBS, WSL2, dan sebagainya start di atas ituPengalaman pengguna tidak berubah

Gambar 5: Pembalikan urutan sudah selesai sebelum layar logon muncul, dan OS host muncul di hypervisor sejak awal.

3. Partisi — satuan isolasi

3.1. Peran yang hanya dimiliki root partition

Partisi adalah satuan logis isolasi yang disediakan hypervisor.2 Tidak setiap partisi setara, walaupun. Ada hal yang hanya dimiliki root partition.

  • Akses langsung ke perangkat fisik. Driver perangkat untuk disk, NIC, GPU, dan sejenisnya tinggal di Windows di dalam root partition, bukan di hypervisor. Hyper-V di Windows Server memang punya konfigurasi yang menugaskan perangkat PCIe tertentu langsung ke child partition (Discrete Device Assignment); dalam kasus itu root melepaskan perangkat itu (ini tidak tersedia di Windows klien).4
  • Tumpukan manajemen virtualisasi. VMMS (Virtual Machine Management Service), yang mengatur membuat, start, dan menghentikan VM, serta proses worker per-VM (vmwp.exe) berjalan di mode pengguna di root partition.5 Ini adalah bagian dari fitur manajemen VM Hyper-V, jadi mereka mungkin absen pada host di mana hanya hypervisor yang berjalan untuk VBS atau WSL2.
  • Hak membuat child partition. Root partition membuat child partition lewat hypercall API (antarmuka pemanggilan ke hypervisor).2

Desain ini punya alasan. Jika Anda menaruh setiap driver perangkat ke dalam hypervisor sendiri, hypervisor menjadi raksasa dan jumlah bug serta pintu masuk serangan tumbuh. Hypervisor membatasi diri pada pekerjaan minimal menengahi CPU dan memori, dan menyerahkan perawatan perangkat kepada Windows di root partition. Pembagian peran ini yang menjaga Hyper-V tetap tipis.

Pembagian peran antara root partition dan child partitionRoot partition menahan tumpukan manajemen virtualisasi dan driver perangkat fisik serta membuat child partition lewat hypercall; child partition biasanya hanya melihat perangkat virtual, dan di bawah Discrete Device Assignment di Windows Server ia mengakses perangkat yang ditugaskan secara langsungRoot partitionBuat dan kelola lewat hypercallChild partitionOS tamuDi konfigurasi biasa, hanya perangkat virtual yang terlihatVMMS dan proses workerDriver perangkat fisikHypervisor (membatasi diri menengahi CPU dan memori)

Gambar 6: Menaruh driver perangkat dan tumpukan manajemen di sisi root partition-lah yang menjaga hypervisor sendiri tetap tipis.

3.2. Dunia seperti yang dilihat dari child partition

OS tamu di child partition tidak dapat melihat perangkat keras fisik secara langsung dalam konfigurasi perangkat virtual biasa (satu-satunya pengecualian adalah perangkat yang ditugaskan lewat Discrete Device Assignment di Windows Server, seperti dijelaskan di bagian sebelumnya). Yang dapat dilihatnya adalah prosesor virtual, ruang memori yang tampak miliknya, dan perangkat virtual. Permintaan ke perangkat virtual diteruskan ke root partition lewat VMBus atau hypervisor.2 Alokasi waktu CPU dan terjemahan memori lewat SLAT, di sisi lain, ditangani langsung oleh hypervisor tanpa melalui root. Yang ditengahi root adalah I/O perangkat, bukan setiap sumber daya fisik.

Dunia seperti yang dilihat dari child partitionYang dilihat OS tamu adalah prosesor virtual, ruang memori privat partisi, dan perangkat virtual; permintaan ke perangkat virtual diteruskan ke root partition lewat VMBus dan sejenisnya, waktu CPU dan terjemahan memori ditangani langsung oleh hypervisor, dan dalam konfigurasi Discrete Device Assignment di Windows Server hanya perangkat yang ditugaskan yang diakses langsungOS tamu(child)Prosesor virtualMemori atau perangkat?Ruang memori privatPerangkat virtualDiteruskan ke rootLewat VMBus dan sejenisnyaCPU fisik, RAM, perangkatTidak terlihat langsungDDA: perangkat yang ditugaskanWindows Server

Gambar 7: Dalam konfigurasi perangkat virtual biasa segala yang dilihat tamu adalah jendela virtual dan jalur ke fisik melalui penengah; hanya perangkat yang ditugaskan lewat DDA di Windows Server yang menjadi pengecualian.

Yang penting di sini adalah bahwa bagi aplikasi yang berjalan di Windows host, struktur ini hampir transparan. Panggilan Win32 API dan penanganan page fault tetap diproses oleh kernel Windows di dalam root partition, seperti semula. Hypervisor campur tangan hanya ketika intercept atau exception yang dikonfigurasi ditabrak.

4. Dari memori — terjemahan alamat mendapat satu tingkat lagi

4.1. Tiga jenis alamat

Di Bagian 1 seri memori kita mengikuti alur di mana alamat virtual diterjemahkan lewat page table menjadi alamat fisik (“Saat alamat virtual menjadi RAM fisik”). Di lingkungan tervirtualisasi satu tingkat lagi ditambahkan di bawah terjemahan itu, dan ada tiga jenis alamat.

Alamat Singkatan Siapa yang mengelolanya
Alamat virtual tamu GVA Page table OS tamu
Alamat fisik tamu GPA Alamat yang OS tamu yakini “fisik”
Alamat fisik sistem SPA Hypervisor (lokasi sungguhan di RAM)

OS tamu menerjemahkan GVA ke GPA dengan page table sendiri. GPA yang dilihat tamu, namun, bukan alamat fisik sungguhan; itu ruang memori privat yang dikhususkan untuk setiap partisi.2 Memetakan GPA ke lokasi sungguhan di RAM (SPA) adalah pekerjaan hypervisor.

4.2. SLAT — terjemahan dua tingkat di perangkat keras

Jika Anda melakukan terjemahan tingkat kedua ini di perangkat lunak saja, hypervisor harus mengikuti setiap pembaruan page table tamu satu per satu, yang tidak realistis dari sudut performa. Jadi CPU menyediakan mekanisme yang menelusuri tabel terjemahan tingkat kedua di perangkat keras. Itu SLAT (Second Level Address Translation); Intel EPT (Extended Page Tables) dan AMD RVI adalah implementasinya. Hyper-V terkini mensyaratkan prosesor 64-bit yang mampu SLAT.4

Terjemahan alamat dua tingkat lewat SLATAlamat virtual tamu diterjemahkan ke alamat fisik tamu oleh page table OS tamu, lalu diterjemahkan lebih lanjut ke alamat fisik sistem oleh SLAT, yang dikelola hypervisor, dan sampai ke RAM sungguhanPage table OS tamuSLAT (tabel terjemahan EPT/RVI)Alamat virtual tamu (GVA)Alamat fisik tamu (GPA)Alamat fisik sistem (SPA)RAM fisikLapisan yang tamu hanya yakini fisik

Gambar 8: Tabel terjemahan lain, yang dikelola hypervisor, duduk di bawah page table tamu, dan CPU menelusuri keduanya di perangkat keras.

SLAT bukan fitur yang ada hanya untuk efisiensi eksekusi VM. VBS yang akan kita lihat di Bagian 2 memakai sifat bahwa “Anda dapat punya tabel terjemahan SLAT yang berbeda per tingkat hak” sebagai bahan untuk batas keamanan. Alasan Anda dapat membuat memori yang bahkan kernel pun tidak dapat lihat adalah bahwa hypervisor menahan terjemahan tingkat kedua ini. Ini menjadi benang merah seluruh seri, jadi ingat saja satu poin: “pemilik tabel terjemahan adalah hypervisor”.

5. Dari I/O perangkat — VMBus dan dua jenis perangkat

5.1. Batas perangkat teremulasi

Cara klasik menunjukkan perangkat ke child partition adalah meniru sepenuhnya perangkat keras sungguhan (misalnya pengendali IDE lama) di perangkat lunak. Kompatibilitasnya tinggi karena driver inbox OS tamu bekerja apa adanya, tetapi VM Exit terjadi setiap kali tamu menabrak port I/O, dan performa tidak menskala.

Mengapa I/O ke perangkat teremulasi lambatSetiap kali tamu mengoperasikan port I/O, kendali pindah ke sisi hypervisor lewat VM Exit, perangkat ditiru di perangkat lunak, dan tamu dikembalikan, sehingga bolak-balik berulang dan lambatBerulang pada operasi port berikutnyaTamu operasikan port I/OVM Exit terjadiPerangkat diemulasi di perangkat lunakKembali ke tamu lewat VM Entry

Gambar 9: Bolak-balik ini berjalan berkali-kali di balik satu akses disk, dan harga kompatibilitas dibayar dengan performa.

5.2. VMBus dan VSP/VSC — jalur cepat yang dirancang untuk virtualisasi

Jadi Hyper-V punya mekanisme “perangkat sintetis” yang dirancang dengan asumsi virtualisasi. Ada tiga tokoh.2

  • VMBus: saluran komunikasi logis antarpartisi. Ia menyediakan komunikasi antarpartisi berkecepatan tinggi yang memakai memori bersama.3
  • VSP (Virtualization Service Provider): layanan yang tinggal di sisi root partition, menerima permintaan perangkat dari child, dan menjembataninya ke tumpukan perangkat/backend di sisi root. Permintaan dapat sampai ke perangkat fisik, atau ditangani oleh backend sisi host seperti disk virtual atau virtual switch.
  • VSC (Virtualization Service Consumer): driver perangkat sintetis yang masuk ke OS tamu di sisi child partition. Ia mengirim permintaan ke VSP lewat VMBus.

Mengambil permintaan penyimpanan OS tamu sebagai contoh, alurnya tampak seperti ini. WriteFile aplikasi tamu turun tumpukan I/O kernel tamu dan, di bawah, sampai ke VSC (alih-alih perangkat keras sungguhan). VSC menaruh permintaan di VMBus dan menyerahkannya ke VSP di root partition, dan VSP mengalirkan permintaan ke tumpukan I/O sisi root. Dalam konfigurasi disk virtual (VHDX), penulisan ini ditangani sebagai penulisan ke berkas VHDX di host dan akhirnya sampai ke disk fisik. Pendekatan ini disebut Enlightened I/O (I/O yang sadar virtualisasi), dan ia menaikkan efisiensi dengan melewati lapisan emulasi perangkat.2

Jalur I/O untuk perangkat sintetisPermintaan I/O dari aplikasi di child partition sampai ke VSC lewat kernel tamu, menyeberang VMBus ke VSP di root partition, dan pada tumpukan I/O sisi root yang dijembatani VSP ia dapat sampai ke perangkat sungguhan lewat driver perangkat fisik, atau ditangani backend sisi host seperti disk virtual atau virtual switchVMBusAplikasi di child partitionTumpukan I/O kernel tamuVSC (driver perangkat sintetis)VSP (sisi root partition)Tumpukan I/O sisi rootDriver perangkat fisikBackend sisi host (disk virtual, virtual switch, dan sebagainya)Perangkat fisik

Gambar 10: Dengan perangkat sintetis, I/O tamu menyeberang ke root partition lewat VMBus dan, melalui tumpukan sisi root, sampai ke perangkat sungguhan atau backend sisi host.

Dengan kata lain, apakah I/O disk atau jaringan VM cepat bergantung tidak hanya pada sisi tamu tetapi juga pada keadaan tumpukan I/O dan driver perangkat di sisi root partition. Alasan observasi sisi host sangat diperlukan ketika Anda menyelidiki masalah performa VM adalah bahwa jalurnya benar-benar melalui host.

Perangkat teremulasi versus perangkat sintetisPerangkat teremulasi meniru perangkat keras sungguhan agar driver inbox tamu bekerja tetapi lambat; perangkat sintetis adalah driver tujuan-khusus yang mengasumsikan VMBus dan cepatPerangkat yang ditunjukkan ke child partitionPerangkat teremulasiPerangkat sintetisMengemulasi perangkat keras sungguhan; kompatibilitas duluButuh campur tangan di setiap I/O; lambatDirancang di sekitar VMBus; cepatMensyaratkan driver yang cocok di tamu

Gambar 11: Dari dua jenis perangkat virtual, perangkat teremulasi membawa kompatibilitas tepat setelah instalasi OS, dan perangkat sintetis membawa performa dalam pemakaian sehari-hari.

6. Mengapa ini bukan urusan orang lain, bahkan jika Anda tidak pernah memakai VM

Struktur sejauh ini mungkin tampak seperti “cerita untuk orang yang mendirikan VM”. Seperti pembukaan katakan, walaupun, di Windows terkini hypervisor adalah bagian dari kehidupan sehari-hari.

  • Virtualization-based security (VBS). Ia memakai Windows hypervisor untuk membuat lingkungan terisolasi dan menampung fitur keamanan di sana. Di Windows 11 ia diaktifkan secara bawaan ketika syarat seperti instalasi bersih pada perangkat keras yang kompatibel terpenuhi.1 Rinciannya di Bagian 2.
  • WSL2. Ia menjalankan kernel Linux sungguhan di dalam utility VM yang ringan.6
  • Windows Sandbox. Lingkungan Windows sekali pakai yang diisolasi oleh hypervisor.7 Keduanya dibahas di Bagian 3.
Fitur sehari-hari yang duduk di hypervisor yang samaBukan hanya VM Hyper-V tetapi juga VBS, yang diaktifkan secara bawaan pada perangkat yang memenuhi syarat seperti instalasi bersih, plus WSL2 dan Windows Sandbox, semuanya dibangun di atas Windows hypervisor yang samaWindows hypervisorVM Hyper-VVBS (bawaan pada instalasi bersih dan sejenis)WSL2Windows SandboxMengapa ia berjalan bahkan di PC yang tidak pernah memakai VM

Gambar 12: Fondasinya satu, dan gambar ini adalah tempat asumsi “virtualisasi adalah cerita untuk orang yang memakai VM” runtuh.

Satu hal lagi yang sering dilangkahi orang dalam praktik adalah hidup berdampingan dengan perangkat lunak virtualisasi pihak ketiga. Karena hypervisor memakai ekstensi virtualisasi CPU secara eksklusif, di lingkungan di mana Windows hypervisor berjalan, VirtualBox dan sejenisnya tidak dapat berjalan dengan cara tradisional (cara yang memakai ekstensi virtualisasi CPU sendiri). Untuk ini, API publik yang disebut Windows Hypervisor Platform disediakan, dan tumpukan virtualisasi pihak ketiga dapat berjalan dengan duduk di atas Windows hypervisor.8 VirtualBox/VMware terkini dapat hidup berdampingan dengan WSL2 berkat mekanisme ini, tetapi perbedaan performa dan fitur yang datang bersama pergantian mode kadang diamati sebagai “setelah saya mengaktifkan Hyper-V (atau VBS), perangkat lunak virtualisasi mulai berperilaku berbeda”.

Siapa pemilik ekstensi virtualisasi CPU, dan jalur untuk perangkat lunak virtualisasi pihak ketigaSementara Windows hypervisor berjalan ia secara eksklusif memiliki ekstensi virtualisasi CPU; perangkat lunak virtualisasi pihak ketiga yang mendukung WHP berjalan di atasnya lewat Windows Hypervisor Platform, sementara implementasi yang tidak mendukung WHP tidak dapat berjalan atau dibatasi fiturnyaTidakYaEkstensi virtualisasi CPU (VT-x/AMD-V)Windows hypervisor berjalan?Perangkat lunak pihak ketiga dapat memakainya langsungHypervisor memakai secara eksklusifWindows Hypervisor PlatformPerangkat lunak pihak ketiga yang mampu WHP berjalan di atasnyaImplementasi yang tidak mampu tidak dapat berjalan, atau terbatas

Gambar 13: Ada satu pemilik ekstensi virtualisasi, dan satu-satunya perangkat lunak pihak ketiga yang dapat hidup berdampingan sementara hypervisor berjalan adalah perangkat lunak yang mendukung API publik (WHP).

7. Lihat sendiri

Anda dapat mengonfirmasi di mesin sendiri apakah hypervisor sedang berjalan.

Pertama, pemeriksaan yang dapat dijalankan tanpa hak administrator.

# Whether we are running on top of a hypervisor
(Get-CimInstance Win32_ComputerSystem).HypervisorPresent

# VBS status (same source as "Virtualization-based security" in msinfo32)
Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard `
    -ClassName Win32_DeviceGuard |
    Select-Object VirtualizationBasedSecurityStatus

VirtualizationBasedSecurityStatus mengembalikan keadaan berjalan VBS sebagai angka (2 adalah “Running”).9

Satu peringatan. Semua yang HypervisorPresent katakan kepada Anda adalah “apakah kita berjalan di atas hypervisor”; ia tidak membedakan root dari child. Jika Anda menjalankannya di Windows di dalam VM, ia tetap mengembalikan True, sebagai child partition. Jika True di Windows pada PC fisik, Windows itu berada di dalam root partition — Anda membacanya bersama lingkungan eksekusi.

Berikutnya, yang klasik dari Command Prompt.

systeminfo

Lihat “Hyper-V Requirements” di akhir keluaran. Pada mesin di mana hypervisor belum berjalan, syarat individual — dukungan SLAT, apakah ekstensi virtualisasi diaktifkan, dan sebagainya — tercantum. Pada mesin di mana hypervisor sudah berjalan, alih-alih syarat Anda mendapat satu baris: “A hypervisor has been detected. Features required for Hyper-V will not be displayed.”4 Satu baris itu karena itu pernyataan bahwa Windows Anda berjalan di atas suatu hypervisor. Seperti HypervisorPresent, Anda perlu membacanya sebagai “di dalam root partition” pada PC fisik, atau “sebagai child partition” di dalam VM.

Bahkan jika setiap syarat systeminfo adalah “Yes”, itu hanya berarti sisi perangkat keras siap. Fitur Hyper-V sendiri tersedia di edisi Pro, Enterprise, dan Education, dan tidak di Home.10

Di GUI, periksa baris “Virtualization-based security” di bawah “System Summary” di msinfo32. Perhatikan bahwa “Virtualization: Enabled” di panel CPU Task Manager hanya menunjukkan apakah ekstensi virtualisasi diaktifkan di firmware, yang merupakan informasi terpisah dari apakah hypervisor berjalan.

Cara memeriksa apakah hypervisor berjalanJika systeminfo mengatakan hypervisor telah terdeteksi Anda berjalan di hypervisor (di dalam root partition pada PC fisik); jika daftar Hyper-V Requirements muncul ia belum berjalan jadi Anda memeriksa setiap syarat seperti SLAT, VM Monitor Mode Extensions, dan DEP, tetapi semua Yes hanya berarti sisi perangkat keras siap dan fitur Hyper-V juga punya syarat edisiDetectedListedSemua YesAda yang NoJalankan systeminfoBidang Requirements?Hypervisor sedang berjalanDi dalam rootpada PC fisikBelum berjalanSemua syarat Yes?Sisi perangkat keras siapButuh Pro / Ent / EduPeriksa item UEFI/BIOS

Gambar 14: Bidang “Hyper-V Requirements” di systeminfo berfungsi ganda sebagai pemeriksaan keadaan berjalan dan pemeriksaan prasyarat.

8. Tiga salah baca yang harus dihindari dalam praktik

8.1. “Kami belum mengaktifkan Hyper-V, jadi virtualisasi tidak ada hubungannya dengan PC kami”

Bahkan jika Anda belum mengaktifkan fitur Hyper-V (alat manajemen dan lingkungan eksekusi VM), Windows hypervisor berjalan jika VBS diaktifkan. Ketika Anda menyelidiki masalah kompatibilitas driver, uji performa, atau gangguan dengan perangkat lunak virtualisasi pihak ketiga, periksa HypervisorPresent dan keadaan berjalan VBS — bukan apakah fiturnya diaktifkan.

8.2. “Task Manager bilang ‘Virtualization: Enabled’, jadi Hyper-V sedang berjalan”

Tampilan itu tentang pengaturan firmware (apakah VT-x/AMD-V tersedia). Nilai keadaan berjalan hypervisor dari “A hypervisor has been detected” di systeminfo. Sebaliknya, jika Task Manager bilang “Disabled”, Anda tidak dapat mengaktifkan Hyper-V atau WSL2 juga, jadi periksa pengaturan UEFI/BIOS lebih dulu.

Tiga pemeriksaan yang mudah dikacaukanBidang Virtualization Task Manager menunjukkan pengaturan firmware, daftar Windows Features menunjukkan keadaan instalasi, dan systeminfo atau HypervisorPresent menunjukkan keadaan berjalan; masing-masing menjawab pertanyaan yang berbedaPertanyaan yang mana?Firmware atau Windows?Hypervisor berjalan?Ekstensi firmware?Fitur Hyper-V nyala?Panel CPU Task ManagerUI Windows FeaturessysteminfoHypervisorPresent

Gambar 15: Ini tiga pertanyaan independen, dan menyimpulkan dua lainnya dari satu tampilan adalah salah baca.

8.3. “Jika VM lambat, itu masalah OS tamu”

I/O perangkat sintetis menyeberang VMBus ke VSP di root partition dan melalui tumpukan perangkat/backend sisi root (driver fisik, plus pemrosesan virtual switch dan disk virtual). Jika Anda hanya menonton penghitung di dalam tamu, Anda tidak akan menemukan bottleneck yang duduk di penyimpanan sisi host atau NIC. Prinsip untuk masalah performa VM adalah mengamati dari kedua sisi: tamu dan host (root partition).

9. Ringkasan

  • Ketika Anda mengaktifkan Hyper-V, hypervisor berjalan langsung di perangkat keras dan Windows host berjalan sebagai root partition.2
  • Kernel OS tamu terus berjalan di ring 0, dan hanya operasi yang dikonfigurasi sebagai intercept, plus exception, yang diserahkan ke hypervisor lewat VM Exit. Akses memori biasa lewat lewat terjemahan SLAT.
  • Hanya root partition yang menahan driver perangkat fisik dan tumpukan manajemen virtualisasi, dan ia membuat child partition lewat hypercall.2
  • Memori menjadi terjemahan dua tingkat GVA→GPA→SPA, dan tingkat kedua ditangani di perangkat keras oleh SLAT (EPT/RVI). Hyper-V terkini mensyaratkan SLAT.4
  • I/O perangkat didominasi oleh jalur perangkat sintetis VSC→VMBus→VSP, dan performa juga bergantung pada tumpukan I/O sisi host.2
  • Di Windows 11, karena VBS diaktifkan secara bawaan pada perangkat yang memenuhi syarat seperti instalasi bersih, tidak aneh hypervisor berjalan bahkan di PC yang tidak pernah memakai VM.1 Anda dapat mengonfirmasi keadaan berjalan dengan HypervisorPresent dan systeminfo.

Gambaran besar Bagian 1 memadat ke diagram satu ini.

Gambaran besar Bagian 1Hypervisor duduk di bawah root partition dan child partition; CPU dialokasikan dengan menjadwalkan prosesor virtual (VM Exit hanya pada intercept dan exception yang dikonfigurasi), memori ditengahi terjemahan SLAT dua tingkat, I/O perangkat sintetis diteruskan lewat VMBus dan ditangani VSP root partition, dan perangkat teremulasi serta Discrete Device Assignment punya jalur lainRoot + child partitionHypervisorCPU: jadwalkan VPMemori: SLATVM Exit pada interceptTerjemahan dua tingkatPerangkat: I/O VMBusVSP sisi root menanganiTeremulasi / DDA: lain

Gambar 16: Penjadwalan CPU dan terjemahan memori ditangani langsung oleh hypervisor (VM Exit hanya pada campur tangan), dan I/O perangkat sintetis ditengahi root partition (VSP) di seberang VMBus.

Bersambung di Bagian 2, “Memori yang bahkan kernel pun tidak bisa lihat — VBS, HVCI, dan Credential Guard.

Kita mengambil benang merah artikel ini — bahwa hypervisor menahan tabel terjemahan SLAT — dan mengikuti bagaimana Windows membuat “memori yang tidak dapat dibaca administrator maupun kernel”.

Artikel terkait

Area konsultasi terkait

KomuraSoft LLC menangani desain lingkungan validasi untuk aplikasi Windows, investigasi performa di lingkungan tervirtualisasi, dan analisis masalah kompatibilitas driver serta periferal.

Tautan referensi

  1. Microsoft Learn, Silicon assisted security. Tentang VBS yang memakai virtualisasi perangkat keras untuk mengisolasi Secure Kernel dari OS biasa, dan tentang VBS serta HVCI yang diaktifkan secara bawaan pada perangkat yang memenuhi prasyarat pada instalasi baru Windows 11.  2 3

  2. Microsoft Learn, Hyper-V Architecture. Tentang hypervisor yang menyediakan partisi sebagai satuan isolasi; root partition yang membuat child partition lewat hypercall API; partisi yang berjalan di ruang memori virtual privat tanpa akses langsung ke prosesor fisik; peran VMBus, VSP, VSC, dan Enlightened I/O; serta ekstensi virtualisasi perangkat keras (Intel VT/AMD-V) yang disyaratkan.  2 3 4 5 6 7 8 9 10 11 12

  3. Microsoft Learn, Hyper-V architecture (Performance Tuning). Tentang Hyper-V sebagai hypervisor Tipe 1, root partition yang memiliki perangkat I/O fisik, dan VMBus yang menyediakan komunikasi antarpartisi berkinerja tinggi yang memakai memori bersama.  2

  4. Microsoft Learn, System requirements for Hyper-V on Windows and Windows Server. Tentang prosesor 64-bit yang mampu SLAT dan VM Monitor Mode Extensions yang disyaratkan; kemampuan mengonfirmasi bahwa syarat terpenuhi di bidang “Hyper-V Requirements” systeminfo; “A hypervisor has been detected” yang ditampilkan sementara hypervisor berjalan; dan Discrete Device Assignment yang dapat menugaskan perangkat tertentu langsung ke child partition.  2 3 4

  5. Microsoft Learn, Appendix B: Hyper-V Architecture and Feature Overview. Tentang VMMS (Virtual Machine Management Service) yang mengelola keadaan VM di child partition, dan proses worker (VMWP) yang start di mode pengguna di root partition untuk setiap VM. 

  6. Microsoft Learn, Comparing WSL Versions. Tentang WSL2 yang menjalankan kernel Linux sungguhan di dalam utility VM yang ringan, dan tentang peringatan memakainya bersama VMware dan VirtualBox terkini. 

  7. Microsoft Learn, Windows Sandbox architecture. Tentang Windows Sandbox sebagai lingkungan Windows ringan yang menggabungkan teknologi kontainer dengan isolasi oleh hypervisor. 

  8. Microsoft Learn, Windows Hypervisor Platform. Tentang API mode pengguna yang disediakan agar tumpukan virtualisasi pihak ketiga dapat membuat dan mengelola partisi di atas Windows hypervisor. 

  9. Microsoft Learn, Enable Hotpatch for Azure Arc-enabled servers. Tentang dapat mengonfirmasi keadaan berjalan VBS (virtual secure mode) lewat VirtualizationBasedSecurityStatus pada kelas Win32_DeviceGuard. 

  10. Microsoft Learn, Install Hyper-V. Tentang Hyper-V yang dapat diaktifkan di Windows 10/11 Pro atau Enterprise dan sejenisnya, dan tidak dapat diinstal di edisi Home. 

Artikel terbaru dengan tag yang sama untuk mendalami topik-topik terdekat.

Halaman-halaman ini menempatkan topik dalam konteks layanan dan keputusan yang lebih luas.

Artikel ini berkaitan langsung dengan layanan berikut.

Pertanyaan yang sering diajukan

Pertanyaan yang sering muncul dalam konsultasi tentang topik artikel ini.

Ketika Anda mengaktifkan Hyper-V, di mana Windows host sebenarnya berjalan?
Hypervisor mengambil kendali langsung atas cara CPU fisik dan memori dialokasikan, dan Windows host berjalan di dalam partisi khusus yang disebut root partition. Kendali perangkat fisik biasanya ditangani oleh driver di sisi root partition. Root partition menahan driver perangkat dan tumpukan manajemen virtualisasi, tetapi kepemilikan CPU fisik milik hypervisor.
Apakah "Virtualization: Enabled" di Task Manager berarti Hyper-V sedang berjalan?
Tidak. Tampilan itu menunjukkan apakah ekstensi virtualisasi CPU (Intel VT-x/AMD-V) diaktifkan di firmware. Untuk melihat apakah hypervisor benar-benar berjalan, cari "A hypervisor has been detected" di systeminfo, atau periksa Win32_ComputerSystem.HypervisorPresent.
Mengapa hypervisor berjalan padahal saya tidak pernah membuat VM?
Di Windows 11, virtualization-based security (VBS) diaktifkan secara bawaan pada perangkat yang memenuhi syarat — misalnya instalasi bersih pada perangkat keras yang kompatibel — dan VBS dibangun di atas Windows hypervisor. Hal yang sama berlaku jika Anda memakai WSL2 atau Windows Sandbox. Tidak aneh hypervisor berjalan tanpa hubungan dengan siapa pun yang memakai VM.
Apa itu SLAT, dan mengapa ia wajib untuk Hyper-V?
SLAT (Second Level Address Translation) adalah mekanisme yang dipakai CPU untuk menerjemahkan alamat fisik tamu menjadi alamat fisik sungguhan; Intel EPT dan AMD RVI adalah implementasinya. Tanpanya hypervisor harus merawat tabel terjemahan di perangkat lunak, yang tidak realistis dari sudut performa, jadi Hyper-V terkini memperlakukannya sebagai syarat keras.
Jika saya mengaktifkan Hyper-V, apakah VirtualBox dan VMware berhenti bekerja?
Karena hypervisor memakai ekstensi virtualisasi CPU secara eksklusif, hypervisor pihak ketiga tidak dapat berjalan dengan cara tradisional. VirtualBox dan VMware terkini, namun, punya mode yang berjalan di atas Windows hypervisor (lewat Windows Hypervisor Platform), jadi versi terbaru masing-masing dapat hidup berdampingan.

Profil penulis

Halaman perkenalan penulis artikel.

Go Komura

Direktur KomuraSoft LLC

Berspesialisasi dalam pengembangan perangkat lunak Windows, konsultasi teknis, dan investigasi bug, terutama pada proyek dengan sistem yang sudah ada dan bug yang sulit direproduksi.

Kembali ke blog