您好,登錄后才能下訂單哦!
這篇文章主要講解了“KVM虛擬化的原理是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“KVM虛擬化的原理是什么”吧!
kvm這個結構體包含了vCPU,內存,APIC,IRQ,MMU,Event事件管理等信息。該結構體中的信息主要在kvm虛擬機內部使用,用于跟蹤虛擬機的狀態。
對于一個kvm,就對應一個線程。
Kvm完全利用了硬件虛擬化技術,通過cat /proc/cpuinfo 查看信息,如果是intel處理器,那么就加載kvm-intel.ko
用戶態創建一個虛擬機就是通過ioctl向/dev/kvm字符設備進行設置和管理kvm的。
struct kvm {
spinlock_t mmu_lock;
spinlock_t requests_lock;
struct rw_semaphore slots_lock;
struct mm_struct *mm; /* userspace tied to this vm */
int nmemslots;
struct kvm_memory_slot memslots[KVM_MEMORY_SLOTS +
KVM_PRIVATE_MEM_SLOTS];
#ifdef CONFIG_KVM_APIC_ARCHITECTURE
u32 bsp_vcpu_id;
struct kvm_vcpu *bsp_vcpu;
#endif
struct kvm_vcpu *vcpus[KVM_MAX_VCPUS];
atomic_t online_vcpus;
struct list_head vm_list;
struct mutex lock;
struct kvm_io_bus mmio_bus;
struct kvm_io_bus pio_bus;
#ifdef CONFIG_HAVE_KVM_EVENTFD
struct {
spinlock_t lock;
struct list_head items;
} irqfds;
struct list_head ioeventfds;
#endif
struct kvm_vm_stat stat;
struct kvm_arch arch;
atomic_t users_count;
#ifdef KVM_COALESCED_MMIO_PAGE_OFFSET
struct kvm_coalesced_mmio_dev *coalesced_mmio_dev;
struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
#endif
struct mutex irq_lock;
#ifdef CONFIG_HAVE_KVM_IRQCHIP
struct list_head irq_routing; /* of kvm_kernel_irq_routing_entry */
struct hlist_head mask_notifier_list;
#endif
#ifdef KVM_ARCH_WANT_MMU_NOTIFIER
struct mmu_notifier mmu_notifier;
unsigned long mmu_notifier_seq;
long mmu_notifier_count;
#endif
};
struct kvm_vm_stat stat;就是KVM虛擬機中的頁表、MMU等運行時狀態信息。
kvm_x86_ops 結構體中的所有成員都是函數指針,在kvm-intel.ko 和 kvm-amd.ko這兩個不同的模塊中,針對各自體系做不同的函數。KVM子系統代碼將通過該結構體函數進行實際的硬件操作。
針對kvm的fd,通過KVM_CREATE_VCPU指令字可以創建KVM的vCPU,并且獲得該vcpu_fd,vcpu_fd的操作主要包含在kvm_vcpu_fops中,kvm_vcpu_fops的實現方法如下:
static struct file_operations kvm_vcpu_fops = {
.release = kvm_vcpu_release,
.unlocked_ioctl = kvm_vcpu_ioctl,
.compat_ioctl = kvm_vcpu_ioctl,
.mmap = kvm_vcpu_mmap,
};
感謝各位的閱讀,以上就是“KVM虛擬化的原理是什么”的內容了,經過本文的學習后,相信大家對KVM虛擬化的原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。