virtualbox/vmware虛擬化技術中暫停虛擬系統是怎麼做到的?
12-27
RT
簡單來說,跟windows把一個不怎麼跑的進程扔出內存的道理差不多。
首先停止vCPU,並記錄所有cpu寄存器狀態。然後,把虛擬機的全部物理內存內容copy到硬碟上。
下次想繼續用,直接恢復vCPU狀態,由於內存里的東西還在硬碟上,繼續運行會產生大量page fault,此時,hypervisor介入,把東西再一點點的copy回來。
以上。
你是指掛起嗎?如果是掛起的話 就會直接丟出內存,放在外存,如果看資源管理器就能看到大量的內存佔用數 在掛起後 降低。
對於計算機而言,只要能把CPU寄存器的值(狀態),內存的值,設備的狀態保存下來,即可在某個時刻通過將剛才的值載入進指定位置來實現場景的復現。對於虛擬化軟體而言,通過將客戶機CPU寄存器的值,內存的值,設備的狀態保存在外設(如硬碟上)來實現暫停虛擬系統。在需要恢復的時候,將設備的狀態進行載入,內存的值進行載入,再載入保存的CPU狀態即可實現系統的恢復運行
暫停時,將內存、寄存器,緩存等全部狀態保存到硬碟
恢復時,將保存下來的數據讀取回去,所以就能按原來的狀態運行了
推薦閱讀:
※怎樣用 VMWare vSphere、XenServer 等虛擬化技術為整個實驗室提供電腦?
※用4K屏幕的筆記本跑虛擬機vmware如何放大字體?
※如何評價 Christoph Hellwig 起訴 VMware 的案件?
※到底選openstack還是vmware?
※hyper-v 和 vmware 不兼容,是技術的原因?還是商業原因?