kvm搭建完成了,那麼問題來了,到底是什麼原理

2022-04-13 22:07:29 字數 4493 閱讀 9999

kvm中到底是怎麼模擬的cpu和記憶體?

收到了大量的

這裡有乙個裸的呼叫kvm介面的例項,超讚:

使用kvm的api來實現emulator demo,同樣贊:

開啟tracepoint,這是研究kvm的好方法:

qemu-system-x86-10102 [001] d... 13485.390144: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] .n..13485.393300: kvm_exit: reason external_interruptrip 0x4009b2 info 0 800000ef

qemu-system-x86-10102 [001] d... 13485.393301: kvm_fpu: unload

qemu-system-x86-10102 [001] .... 13485.401393: kvm_ple_window: vcpu 0: ple_window 4096 (shrink 4096)

qemu-system-x86-10102 [001] .... 13485.401398: kvm_fpu: load

qemu-system-x86-10102 [001] .... 13485.401399: kvm_apic_accept_irq: apicid 0 vec 239 (fixed|edge)

qemu-system-x86-10102 [001] .... 13485.401400: kvm_inj_virq: irq 239

qemu-system-x86-10102 [001] d... 13485.401401: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] .... 13485.401419: kvm_eoi: apicid 0 vector 239

qemu-system-x86-10102 [001] .... 13485.401419: kvm_pv_eoi: apicid 0 vector 239

qemu-system-x86-10102 [001] .... 13485.401420: kvm_exit: reason msr_write rip 0xffffffff81064508 info 0 0

qemu-system-x86-10102 [001] .... 13485.401421: kvm_apic: apic_write apic_tmict = 0xafd2

qemu-system-x86-10102 [001] .... 13485.401422: kvm_msr: msr_write 838 = 0xafd2

qemu-system-x86-10102 [001] d... 13485.401422: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] ....13485.402142: kvm_exit: reason external_interruptrip 0x4009b2 info 0 800000ef

qemu-system-x86-10102 [001] .... 13485.402142: kvm_apic_accept_irq: apicid 0 vec 239 (fixed|edge)

qemu-system-x86-10102 [001] .... 13485.402143: kvm_inj_virq: irq 239

qemu-system-x86-10102 [001] d... 13485.402143: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] .... 13485.402146: kvm_eoi: apicid 0 vector 239

qemu-system-x86-10102 [001] .... 13485.402146: kvm_pv_eoi: apicid 0 vector 239

qemu-system-x86-10102 [001] .... 13485.402146: kvm_exit: reason msr_write rip 0xffffffff81064508 info 0 0

qemu-system-x86-10102 [001] .... 13485.402146: kvm_apic: apic_write apic_tmict = 0x3cee0

qemu-system-x86-10102 [001] .... 13485.402146: kvm_msr: msr_write 838 = 0x3cee0

qemu-system-x86-10102 [001] d... 13485.402147: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] .n..13485.403339: kvm_exit: reason external_interruptrip 0x4009b2 info 0 800000ef

qemu-system-x86-10102 [001] d... 13485.403341: kvm_fpu: unload

qemu-system-x86-10102 [001] .... 13485.403521: kvm_ple_window: vcpu 0: ple_window 4096 (shrink 4096)

qemu-system-x86-10102 [001] .... 13485.403523: kvm_fpu: load

qemu-system-x86-10102 [001] d... 13485.403523: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] .n..13485.404571: kvm_exit: reason external_interruptrip 0x4009b2 info 0 800000ef

qemu-system-x86-10102 [001] d... 13485.404573: kvm_fpu: unload

qemu-system-x86-10102 [001] .... 13485.406671: kvm_ple_window: vcpu 0: ple_window 4096 (shrink 4096)

qemu-system-x86-10102 [001] .... 13485.406676: kvm_fpu: load

qemu-system-x86-10102 [001] .... 13485.406677: kvm_apic_accept_irq: apicid 0 vec 239 (fixed|edge)

qemu-system-x86-10102 [001] .... 13485.406679: kvm_inj_virq: irq 239

qemu-system-x86-10102 [001] d... 13485.406680: kvm_entry: vcpu 0

qemu-system-x86-10102 [001] .... 13485.406702: kvm_eoi: apicid 0 vector 239

qemu-system-x86-10102 [001] .... 13485.406703: kvm_pv_eoi: apicid 0 vector 239

qemu-system-x86-10102 [001] ....13485.406704: kvm_exit: reason msr_writerip 0xffffffff81064508 info 0 0

qemu-system-x86-10102 [001] .... 13485.406706: kvm_apic: apic_write apic_tmict = 0x34720

qemu-sys

神秘的kvm,伺服器端直接執行在,guest按理說也是要有中斷的:

39839 __apic_accept_irq ([kvm])

3aa20 kvm_apic_local_deliver ([kvm])

3ac7d kvm_inject_apic_timer_irqs ([kvm])

3824ekvm_inject_pending_timer_irqs([kvm])

1ebfe kvm_arch_vcpu_ioctl_run ([kvm])

610d kvm_vcpu_ioctl ([kvm])

4200ff do_vfs_ioctl ([kernel.kallsyms])

420369 sys_ioctl ([kernel.kallsyms])

a244f2 entry_syscall_64_fastpath ([kernel.kallsyms])

關鍵函式是

kvm是如何模擬時鐘中斷的?

kvm_create_pit   create_pit_timer

kvm_create_

有專門的一章,是討論中斷的虛擬化;

還要個超有意思的函式是:kvm_msr事件,

XQuery 我們完成了嗎?

原文 xquery are we done yet 我注意到,現今xquery,xpath2.0和xslt2.0已經被完全記錄在案了。儘管,我所選擇的範圍並不支援xquery,但我卻是它的乙個忠實粉絲。祝賀大家,是你們的努力使得這一切發生。我真的在思考,對於xml標準來說,是否是時候讓其封存不用,正...

XQuery 我們完成了嗎?

原文 xquery are we done yet 我注意到,現今xquery,xpath2.0和xslt2.0已經被完全記錄在案了。儘管,我所選擇的範圍並不支援xquery,但我卻是它的乙個忠實粉絲。祝賀大家,是你們的努力使得這一切發生。我真的在思考,對於xml標準來說,是否是時候讓其封存不用,正...

XQuery 我們完成了嗎?

原文 xquery are we done yet 我注意到,現今xquery,xpath2.0和xslt2.0已經被完全記錄在案了。儘管,我所選擇的範圍並不支援xquery,但我卻是它的乙個忠實粉絲。祝賀大家,是你們的努力使得這一切發生。我真的在思考,對於xml標準來說,是否是時候讓其封存不用,正...