展开

关键词

Linux中断虚拟(一)

作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。 著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。 多年来一直从事操作系统、虚拟技术、分布式系统、大数据、云计算等相关领域的研发工作,实践经验丰富。 本文内容节选自《深度探索Linux虚拟技术》,已获得机械工业出版社华章公司授权。 所以在虚拟场景下,需要虚拟LAPIC和I/O APIC两个组件。 图4 硬件虚拟支持下的中断虚拟过程 Intel从硬件层面对虚拟进行了支持,实现了一个处于Guest模式的用于存储中断相关寄存器的virtual-APIC page。

25630

Linux中断虚拟(二)

作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。 多年来一直从事操作系统、虚拟技术、分布式系统、大数据、云计算等相关领域的研发工作,实践经验丰富。 本文内容节选自《深度探索Linux虚拟技术》,已获得机械工业出版社华章公司授权。 PIC虚拟 计算机系统有很多的外设需要服务,显然,CPU采用轮询的方式逐个询问外设是否需要服务,是非常浪费CPU的计算的,尤其是对那些并不是频繁需要服务的设备。 1 虚拟设备向PIC发送中断请求 如同物理外设请求中断时拉高与8259A连接的管脚的电压,虚拟设备请求中断的方式是通过一个API告诉虚拟的8259A芯片中断请求,以kvmtool中的virtio blk 我们看到这里是8259A主动发起中断过程,但是虚拟中断有些不同,中断的发起的时机不再是虚拟中断芯片主动发起,而是在每次准备切入Guest时,KVM查询中断芯片,如果有pending的中断,则执行中断注入

12310
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【原创】Linux虚拟KVM-Qemu分析(七)之timer虚拟

    ARMv8架构处理器提供了一个Generic Timer,与GIC类似,Generic Timer在硬件上也支持了虚拟,减少了软件模拟带来的overhead。 本文将围绕着ARMv8的timer虚拟来展开。 2. ARMv8 Timer虚拟 2.1 Generic Timer 看一下ARMv8架构下的CPU内部图: 1771657-20201205235155674-1601941220.png Generic Generic Timer的虚拟如下图: 1771657-20201205235216413-90333420.png 虚拟的timer,同样也有一个count值,计算关系:Virtual Count 流程分析 3.1 初始 先简单看一下数据结构吧: 1771657-20201205235240939-617714506.png 在ARMv8虚拟中,使用struct arch_timer_cpu

    10720

    linux time和kvm time虚拟综述

    linux time linux对时间有两种需求: 第一就是获取当前时间,就像人想知道时间时看墙上挂的时钟一样,简称clock,如time()/ftime()/gettimeofday()/data() 看x86代码,linux初始这些硬件设备,注册中断,中断处理中都调用到event_handler,简单理解为tick模块注册的函数,调用到tick的这个函数,它负责处理软件定时器,进行进程时间片计算等 guest写timer的超时时间就会导致exit出来,exit出来后kvm给一个软件定时器设置超时时间,等这个软件定时器超后,kvm生成一个时间虚拟中断,把这个中断注入给虚拟机。 看这台虚拟机,模拟rtc和pit,没有hpet。 总结 虚拟中时间问题太复杂,有些问题还没想明白,后面再对tsc虚拟pv timer一一分解,这个算是综述,全当抛砖引玉。

    29900

    linux time和kvm time虚拟综述

    linux time linux对时间有两种需求: 第一就是获取当前时间,就像人想知道时间时看墙上挂的时钟一样,简称clock,如time()/ftime()/gettimeofday()/data() 看x86代码,linux初始这些硬件设备,注册中断,中断处理中都调用到event_handler,简单理解为tick模块注册的函数,调用到tick的这个函数,它负责处理软件定时器,进行进程时间片计算等 guest写timer的超时时间就会导致exit出来,exit出来后kvm给一个软件定时器设置超时时间,等这个软件定时器超后,kvm生成一个时间虚拟中断,把这个中断注入给虚拟机。 看这台虚拟机,模拟rtc和pit,没有hpet。 总结 虚拟中时间问题太复杂,有些问题还没想明白,后面再对tsc虚拟pv timer一一分解,这个算是综述,全当抛砖引玉。

    6930

    KVM虚拟linux系统模版制作步骤

    安装 安装虚拟机设置: CPU 内存大小(MB) 硬盘方式、大小(G) 网卡方式 Centos 5.x 系列 2个 2048 virtio、20G、qcow2 virtio Centos 6.x 系列 时钟设置 因为虚拟机的时间会发生漂移,为了尽量修正虚拟机时间,需要做以下两项设置: 给虚拟机设置一个NTP服务器,目前统一设置成公司的NTP服务器61.172.254.29。 Red Hat Enterprise Linux version Additional guest kernel parameters 6.0 AMD64/Intel 64 with the para-virtualized –f rm /etc/sysconfig/network-scripts/ifcfg-eth1 –f shutdown –h now 注意:如果因为需要重新开启了虚拟机镜像

    30820

    虚拟技术(2)——存储虚拟

    根据在I/O路径中实现虚拟的位置不同,虚拟存储可以分为主机的虚拟存储、网络的虚拟存储、存储设备的虚拟存储。根据控制路径和数据路径的不同,虚拟存储分为对称虚拟与不对称虚拟。 通过存储虚拟,应用程序就不会再与某个物理性的存储程序相联系了。 存储虚拟可能帮助帮助存储容量扩增自动。不需要手动的配置,存储虚拟能够运用策略,分配更多的存储容量给所需的应用。 三层模型 根据云存储系统的构成和特点,可将虚拟存储的模型分为三层:物理设备虚拟层、存储节点虚拟层、存储区域网络虚拟层。 这个虚拟层由虚拟存储管理模块在虚拟存储管理服务器上实现,以带外虚拟方式管理虚拟存储系统的资源分配,为虚拟磁盘管理提供地址映射、查询等服务。 利用虚拟技术,可以在统一的虚拟基础架构中,实现跨数据中心的虚拟管理。 政府信息系统:政府数据存储系统的建设正受到前所未有的重视。

    2.1K60

    虚拟

    目前为止还没有连载完. 2021年10月10日 1 虚拟技术简介 1.1 虚拟概念 顾名思义,虚拟是指计算元件在虚拟的基础而不是在真实的基础上运行。 ,只需在虚拟层上运行操作系统和应用软件,和物理平台无关 在家用计算机的上安装常规软件属于非虚拟,而在办公计算机上安装虚拟软件就属于虚拟应用了,典型的非虚拟虚拟的物理架构如图1-1 所示 )  可以移植 通过相应工具可以实现原物理机到虚拟机的转换  部署灵活 虚拟机以文件的形式,可以在不同的服务器之间灵活部署服务器虚拟主要有以下两种架构:  完全虚拟 在完全虚拟架构中,操作系统处于隔离的环境中  硬件辅助虚拟 在硬件辅助虚拟中,使用Hypervisor(虚拟管理系统)作为服务器宿主系统,虚拟机通过标准驱动访问硬件,这需要IT 技术(Intel VT/AMD-V)的支持,如图1-5 所示 图2-1 对于完全虚拟来说,也就是在常规的虚拟应用来说,一般通过本机的显卡和显示器以及外设来直接操作虚拟机;而对于硬件辅助虚拟而言,由于在服务器上同时开启了多个虚拟机,每个虚拟机可以应用于不同的场合

    16420

    虚拟

    yum install -y docker* docker pull nignx docker pull centos docker version ...

    27920

    虚拟

    虚拟 發佈於 2021-08-16 今天给公司搭建虚拟平台,对其中用到的一些知识进行整理。 虚拟平台 ---- 我们常说的虚拟可以分为两种类型: TYPE I 和 TYPE II。 我们常见的 VMWare Workstation、VirtualBox、Parallels Desktop、Hyper-V 等均属于二型虚拟软件,他们需要运行于宿主操作系统。 而企业级虚拟平台例如 VMWare vSphere、KVM、Hyper-V server 等则属于一型虚拟,他们直接运行于裸金属服务器。 公司虚拟平台 ---- 公司新买的 DELL 服务器今天到了,要搭建虚拟平台,由于自己对 ESXi 比较熟悉,因此决定采用该软件进行平台搭建。 创建虚拟机 创建虚拟机前,我们要先在存储中上载对应操作系统的镜像文件,创建虚拟机过程非常简单,在此不再赘述。

    13650

    Linux虚拟技术—CentOS7.4下KVM虚拟一 安装配置及基本操作

    Linux虚拟技术—CentOS7.4下KVM虚拟一 安装配置及基本操作 ? KVM的安装配置与基本操作 目录 第一部分 实验环境 第二部分 安装图形界面 第三部分 配置KVM虚拟 第四部分 创建桥接网卡 第五部分 KVM虚拟环境中安装系统 第六部分 克隆 第七部分 其它命令 第一部分 实验环境 Linux服务器一台 IP地址:192.168.80.40(kvm01) ? //图形界面安装完成 第三部分 配置KVM虚拟 安装插件及工具 [root@kvm01 ~]# yum install -y \ qemu-kvm.x86_64 \ qemu-kvm-tools.x86 ,处理器开启虚拟功能: ?

    1.3K40

    Linux虚拟技术—CentOS7.4下KVM虚拟一 安装配置及基本操作

    第一部分 实验环境 Linux服务器一台 IP地址:192.168.80.40(kvm01) ? [root@kvm01 ~]# init 5 //切换到图形界面 以下在控制台操作 依次输入1-2-q-yes-登录-设置 ? ? ? ? ? ? ? ? ? ? //图形界面安装完成 第三部分 配置KVM虚拟 安装插件及工具 [root@kvm01 ~]# yum install -y \ qemu-kvm.x86_64 \ qemu-kvm-tools.x86 ,处理器开启虚拟功能: ? list --all virt-clone -o 源虚拟机名称 -n 克隆后的虚拟机名称 -f 克隆后的虚拟机磁盘镜像路径 virsh start 克隆后的虚拟机名称 ©著作权归作者所有:来自51CTO

    34920

    RHEL下KVM虚拟部署-安装虚拟

    XEN),可替代早先的XEN产品 –需要Inter VT 或AMD V处理器技术支持 –支持windows/Unix/Linux客户机 2.客户机系统分类 –Host OS(物理机运行的操作系统) 3.4 路由模式(默认) 由Host充当路由器,开启转发(需要额外设置外网与Guest之间互访的路由) 二、安装KVM 1.安装KVM虚拟相关包组 [root@svr5 桌面]# yum groupinstall virtualization Client” “virtualization Platform” 注意:如果操作系统语言是中文的话,需要使用中文.例如↓: [root@svr5 桌面]# yum groupinstall 虚拟 虚拟平台 虚拟化工具 虚拟客户端 2.启动服务/设置服务为开机启动 [root@svr5 桌面]# /etc/init.d/libvirtd restart [root@svr5 桌面]# chkconfig 2.新建并安装一台虚拟机 ? ? ? ? ? ? ? 至此,一台新的KVM虚拟机就创建完成了。

    45030

    CPU 虚拟

    前面 虚拟技术总览 中从虚拟平台 VMM 的角度,将虚拟化分为 Hypervisor 模型和宿主模型,如果根据虚拟的对象(资源类型)来划分,虚拟又可以分为计算虚拟、存储虚拟和网络虚拟,再细一些 ,又有中断虚拟,内存虚拟,字符/块设备虚拟,网络功能虚拟等。 CPU 软件虚拟 基于软件的 CPU 虚拟,故名思议,就是通过软件的形式来模拟每一条指令。通过前面的文章我们知道常用的软件虚拟技术有两种:优先级压缩和二进制代码翻译。 CPU 硬件虚拟 上面的这种截获再模拟的纯软件的虚拟方式,势必是性能非常低的。 从本质上看,一个 KVM 虚拟机对应 Host 上的一个 qemu-kvm 进程,它和其他 Linux 进程一样被调度,而 qemu-kvm 进程中的一个线程就对应虚拟机的虚拟 CPU (vCPU),虚拟机中的任务线程就被

    88360

    内存虚拟

    内存虚拟 除了 CPU 虚拟,另一个关键是内存虚拟,通过内存虚拟共享物理系统内存,动态分配给虚拟机。 虚拟机的内存虚拟很象现在的操作系统支持的虚拟内存方式,应用程序看到邻近的内存地址空间,这个地址空间无需和下面的物理机器内存直接对应,操作系统保持着虚拟页到物理页的映射。 ? VMM 内存虚拟的实现方式: 软件方式:通过软件实现内存地址的翻译,比如 Shadow page table (影子页表)技术 硬件实现:基于 CPU 的辅助虚拟功能,比如 AMD 的 NPT 和 除了降低各部虚拟机器在切换时所造成的效能损耗外,硬体指令集也比虚拟软体处理来得可靠与稳定。 因此,在多个进程中,Linux将内核相似的内存页合并成一个内存页。这个特性,被KVM用来减少多个相似的虚拟机的内存占用,提高内存的使用效率。由于内存是共享的,所以多个虚拟机使用的内存减少了。

    96020

    内存虚拟

    这种机制正是虚拟软件做的事,也就是 MMU 内存管理单元。 ? 本文要说的不是这种虚拟内存,而是基于虚拟机的内存虚拟,它们本质上是一样的,通过对虚拟内存的理解,再去理解内存虚拟就比较容易了。 结合前面的文章,我们知道,虚拟化分为软件虚拟和硬件虚拟,而且遵循 intercept 和 virtualize 的规律。 内存虚拟也分为基于软件的内存虚拟和硬件辅助的内存虚拟,其中,常用的基于软件的内存虚拟技术为「影子页表」技术,硬件辅助内存虚拟技术为 Intel 的 EPT(Extend Page Table, 常规软件内存虚拟 虚拟机本质上是 Host 机上的一个进程,按理说应该可以使用 Host 机的虚拟地址空间,但由于在虚拟模式下,虚拟机处于非 Root 模式,无法直接访问 Root 模式下的 Host 总结 内存虚拟经历从虚拟内存,到传统软件辅助虚拟,影子页表,再到硬件辅助虚拟,EPT 技术的进化,效率越来越高。

    55981

    CPU虚拟

    前言: 这里作者再次自不量力了,以一点微末的道行分析一下KVM的CPU虚拟部分的代码。 kvm_create_vm函数主要用来创建并初始kvm数据结构,包括lock,memslot,mmu notifier等,并把数据结构加入到vm_list(双链表,用来保存本机上KVM创建的的所有vm intel架构下,会使用linux-4.0.4/arch/x86/kvm/vmx.c中的vmx_create_vcpu函数。 ->vcpu_enter_guest->vmx_vcpu_run(linux-4.0.4/arch/x86/kvm/vmx.c) cpu进入到了vm模式,就在跑虚拟机中的代码。 在虚拟机中,这就是一个cpu。

    1.3K70

    proxmox虚拟

    Proxmox VE是一个完整的企业虚拟化开源平台。 创建虚拟机 -> 初始 -> 转换成模板 proxmoxer模块 pip install proxmoxer requests paramiko import pprint from proxmoxer

    1K20

    网络虚拟

    前言 网络虚拟相对计算、存储虚拟来说是比较抽象的,以我们在学校书本上学的那点网络知识来理解网络虚拟可能是不够的。 带着这样一种思路去理解网络虚拟可能会感觉云里雾里——这样一个庞大的网络如何实现虚拟Linux 下网络设备虚拟的几种形式 为了完成虚拟机在同主机和跨主机之间的通信,需要借助某种“桥梁”来完成用户态到内核态(Guest 到 Host)的数据传输,这种桥梁的角色就是由虚拟的网络设备来完成 但 Linux 本身由于虚拟技术的演进,也集成了一些虚拟网络设备的解决方案,主要有以下几种: (1)TAP/TUN/VETH TAP/TUN 是 Linux 内核实现的一对虚拟网络设备,TAP 工作在二层 总结 传统网络架构到虚拟的网络架构,可以看作是宏观网络到微观网络的过渡 TAP/TUN/VETH、Bridge 这些虚拟的网络设备是 Linux 为了实现网络虚拟而实现的网络设备模块,很多的云开源项目的网络功能都是基于这些技术做的

    1K80

    相关产品

    • 数字文博采集与建模

      数字文博采集与建模

      数字文博采集与建模(DMAM ),基于人工智能视觉识别技术,能快速准确采集实景,自动生成数字3D场景,以微米级精度实现文物三维互动。通过三维数字化技术,能实现720°VR实景漫游、虚拟漫游,为您提供如临现场的空间漫游体验。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券