kvm中到底是怎么模拟的CPU和内存?

收到了大量的

这里有一个裸的调用kvm接口的实例,超赞:

使用kvm的API来实现Emulator Demo,同样赞:

//-----2017.12.17  打开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_INTERRUPT rip 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_INTERRUPT rip 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_INTERRUPT rip 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_INTERRUPT rip 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_WRITE rip 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])
3824e kvm_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事件,

kvm搭建完成了,那么问题来了,到底是什么原理的更多相关文章

  1. kvm 搭建

    一,准备环境   物理机 虚拟机 操作系统 CentOS 6.8 x64 CentOS 6.8 x64 CPU/内存 10核超线程x2/64G 2核/4G 外网IP -- 内网IP eth1_192. ...

  2. Centos7利用kvm搭建Windows虚拟机

    这几天玩了一下kvm虚拟化,真的很有意思,我把这几天踩的坑,还有收获,都记录下来,作为以后的复习和检查. 首先说一下我的基本逻辑,我有一台win7的笔记本,我的底层虚拟化是使用VMWare构建的Cen ...

  3. Liunx之KVM搭建图形化的WEB

    作者:邓聪聪 我们常在Windowns下使用VMware,当然在Liunx中也有这样的软件供我们使用.生产环境的KVM宿主机越来越多,需要对宿主机的状态进行调控.这里用webvirtmgr进行管理.图 ...

  4. kvm搭建

    今日做公司项目时恰好是这个,然后就做一个博客,希望可以帮助到你们 1.把虚拟机zmedu63内存调成6G以上,因为我们要在VMware虚拟中安装KVM,然后在KVM中再安装虚拟机,需要内存大一些.zm ...

  5. 基于C语言的Socket网络编程搭建简易的Web服务器(socket实现的内部原理)

    首先编写我们服务器上需要的c文件WebServer.c 涉及到的函数API: int copy(FILE *read_f, FILE * write_f) ----- 文件内容复制的方法 int Do ...

  6. ubuntu配置kvm服务

    虚拟化第一弹,lei了lei了~ 首先,简单介绍一下KVM服务. KVM 全称是 Kernel-Based Virtual Machine,它是一种常用的虚拟化工具.是基于linux内核所开发的虚拟平 ...

  7. 【日记】搭建一个node本地服务器

    用node搭建一个本地http服务器.首先了解htpp服务器原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型 ...

  8. KVM 介绍(1):简介及安装

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  9. 搭建PHP建站环境

    PHP是一种网站后端脚本语言,通常在web开发中使用apache+PHP+MYSQL这种黄金搭档来建立支持PHP的站点,PHP运行环境或者说任何技术的运行环境都不是简单的加法,即使是安装有apache ...

随机推荐

  1. Swiper插件

    中文官网:Swiper中文网 英文:英文网 此插件功能比较强大,网页端.手机端都可以使用的插件.这里记录一下在微信h5页面里面滑动获取数据. 先下载css和js,引用到项目中 这里有6个节点,没划一个 ...

  2. data-ng-repeat 指令

    data-ng-repeat指令对于集合中的每一项会克隆一次HTML元素.

  3. WebSeal单点登陆

    WebSeal单点登陆 作为学习整理,部分内容来自网络和官方文档. LDAP LDAP可以看作一种数据库,分为客户端和服务端.服务端是用来存放资源,客户端用来操作资源.它是一种树形存储结构,遍历起来会 ...

  4. PHP CodeIgniter框架实现读写分离

    一.目标 当前服务器只做了主从,未配置读写分离,读写分离的功能就只有交给程序来实现,本文主要谈谈Codeigniter怎么实现读写分离,并且需要满足以下两点: 1.读写分离对开发应该透明. 网上有方案 ...

  5. python-无参函数

    #!/usr/local/bin/python3 # -*- coding:utf-8 -*- ''' #-----------定义函数---------- def func1(): "te ...

  6. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  7. C++继承权限

    牢记两句话: 1.三种继承方式不影响子类对父类的访问权限,子类对父类的访问权限取决于父类的访问控制权. 2.三种继承方式是为了控制子类的调用方对父类的访问权限.比如private继承,对于子类的调用方 ...

  8. 17-比赛1 F - 较小元素 Weak in the Middle (set)

    Seg-El has last chance to make the final changes in order to prevent the destruction of Krypton. He ...

  9. 8,Linux系统基础优化及常用命令

    Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...

  10. 11.1,nginx集群概念

    集群介绍 为什么要用集群