首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    hypervisor kvm_docker vmware

    本文首先简要介绍虚拟化和管理程序,然后探讨几个基于 Linux 的管理程序。 2. 平台设备模拟 平台虚拟化是关于在两个或多个操作系统之间共享一个平台,以便更有效地利用资源。...当共享不可能或没有用时,外围组件互连 (PCI) 直通提供了有效使用这些资源的方法。 本章探讨了直通的概念,讨论了它在管理程序中的实现,并详细介绍了支持这一最新创新的管理程序。 2.1....5. hypervisor的组成元素 因此,虚拟机管理程序(无论类型如何)只是一个分层的应用程序,它将机器硬件从其来宾中抽象出来。 通过这种方式,每个客户看到的是一个虚拟机,而不是真正的硬件。...中断必须由管理程序唯一处理,以处理实际中断或将虚拟设备的中断路由到客户操作系统。管理程序还必须处理来宾中发生的陷阱或异常。 (毕竟,来宾中的故障应该停止来宾而不是管理程序或其他来宾。)...KVM 是作为内核模块实现的,只需加载一个模块,Linux 就可以成为管理程序。

    65510

    LINUX网络子系统中DMA机制的实现

    我们先从计算机组成原理的层面介绍DMA,再简单介绍Linux网络子系统的DMA机制是如何的实现的。 一、计算机组成原理中的DMA 以往的I/O设备和主存交换信息都要经过CPU的操作。...总之,在同样的时间内,DMA方式下CPU执行现行程序的时间最长,即CPU的效率最高。 二、Linux网络子系统中DMA机制的实现 1....下一节在数据链路层上分析具体分析网卡是如何处理数据包的。 ? 2. 数据链路层上网卡对数据包的处理 DMA 环形缓冲区建立在与处理器共享的内存中。...每一个输入数据包被放置在环形缓冲区中下一个可用缓冲区,然后发出中断。接着驱动程序将网络数据包传给内核的其它部分处理,并在环形缓冲区中放置一个新的 DMA 缓冲区。...内核模块插入函数在e1000_main.c文件中,它是加载驱动程序时调用的第一个函数。

    5.3K62

    【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介

    打断内核 : 先发出异步中断信号, 打断处理器当前操作, 打断内核操作; -- b. 查找中断 : 内核根据中断号查找中断服务程序, 调用程序的中断处理函数; -- c....中断示例 : 在编辑器中滑动鼠标滚轮, 鼠标会发出一个中断信号给内核, 鼠标的缓冲区有数据出现, 内核查找到中断来自鼠标, 调用中断处理程序, 执行想要的操作; 中断程序简介 :  -- 内核作用 :...执行哪个中断需要依靠内核来判断; -- 中断运行环境 : 中断程序在一个与进程无关的, 专门用于运行中断处理程序的空间中执行, 这样做能保证在第一时间响应中断处理请求; CPU的三个操作 : 每个 CPU...和 内存空间; 用户空间转到内核空间 : 应用程序发出一个系统调用 或者 被硬件中断挂起的时候, 会从用户空间转到内核空间; (6) 内核模块 模块特点 :  -- 注册 : 模块需要预先注册, 才能进行动态加载...Linux 与 UNIX 内核 对比 UNIX 内核运行状况 : UNIX 内核是一个 不可分割的静态可执行库, 其运行的时候 必须在一个 单独的地址空间中运行 这个可执行块; Linux UNIX 内存管理比较

    2.5K51

    Linux内核及源码简介

    当一个用户程序在操作系统之上运行时,它成为操作系统中的一个进程。 2)系统调用接口 在应用程序中,可通过系统调用来调用操作系统内核中特定的过程,以实现特定的服务。...当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际是仅等待 CPU 资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程。...2.内存管理 内存管理的代码主要在/mm,但特定结构的代码在 arch/*/mm。缺页中断处理的代码在mm/memory.c ,而内存映射和页高速缓存器的代码在 mm/filemap.c。...6.中断处理 内 核 的 中 断 处 理 代 码 是 几 乎 所 有 的 微 处 理 器 所 特 有 的 。.../pci 这是 PCI 伪驱动程序的源代码,在这里可以看到 PCI 子系统是如何被映射和初始化的。

    2.3K31

    A核与M核异构通信过程解析

    计算机中存在不同的总线标准,而 virtio 采用的是 pci 总线(当然也可以用其他总线来实现)。每一个 virtio 设备就是一个 pci 设备。...virtio前端驱动 virtio 前端驱动位于 Linux 内核中,运行在虚拟机 VM,针对不同类型的设备有不同类型的驱动程序,包括virtio-net、virtio-blk、virtio-pci等,...virtio后端驱动 virtio 后端驱动位于 qemu ,后端设备承担的主体功能分为两部分: virtio后端设备的模拟; 依据virtio协议处理来自虚拟机端发送的请求。...在 QEMU 的实现中, virtio 设备是 QEMU 为虚拟机模拟的 PCI 设备,遵循 PCI-SIG 定义的 PCI 规范,具有配置空间、中断配置等功能;virtio 后端驱动运行在宿主机中,用于实现...主处理核与协处理核数据传递流程图 (1)Core0向Core1发送数据,通过rpmsg_send函数将数据打包至Virtioavail链表区; (2)在avail链表寻找共享内存中空闲缓存,将数据置于共享内存中

    69140

    virtio 与 vhost-net 架构

    构建 Virtio 需要以下组件: KVM - Kernel-based Virtual Machine(基于内核的虚拟机),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个...暴露 virtio 设备的典型(也是最简单的)方法是通过 PCI 接口,因为 PCI 协议在 QEMU 和 Linux 驱动程序中非常成熟。...在使用 PCI 的情况下,Guest 通过向特定的内存地址写入内容,来发送可用缓冲区通知,而设备(在本例中为 QEMU )使用 vCPU 中断来发送已完成了某些缓冲区的处理。...这样,设备和驱动程序在高吞吐的场景下可以主动轮询 virtqueue 中的新缓冲区进行批处理操作。...一对文件描述符,用于程序处理 virtio 规范中定义的发送和接收通知。这些文件描述符在处理程序和 KVM 之间共享,因此它们可以直接通信,而不需要 hypervisor 的干预。

    2.5K31

    PCI Express 系列连载篇(二十五)MSI和MSI-X中断机制 II

    在PowerPC处理器系统中,MSI机制的实现过程是PCIe设备向MSIIR寄存器写入指定的数据。MPIC中断控制器发现该寄存器被写入后,将向处理器提交中断请求。...通过该组寄存器可以发现,在MPC8572处理器系统中,PCIe设备最多可以使用8个中断向量,并可以共享这些中断向量。...在MPC8572处理器中,专门设置了一个PEXCSRBAR窗口[2],进行PCI总线域到存储器域的地址转换,使用这种方法可以节省Inbound寄存器窗口,Linux PowerPC使用了这种实现方式。.../arch/powerpc/sysdev/fsl_pci.c文件中,如源代码6-1所示,这段代码来自Linux 2.6.30.5。...IMMR寄存器是PQ2处理器使用的寄存器,该寄存器在PQ3之后的处理器中升级为CCSRBAR。 [4] 该函数来自Linux 2.6.30.5内核。 ?

    1.9K20

    PCI Express 系列连载篇(二)

    PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,如处理器的Cache共享一致性和数据完整性,以及如何与处理器进行数据交换等一系列内容。...其中Cache共享一致性和数据完整性是现代处理器局部总线的设计的重点和难点。 独立的研究PCI总线并不可取,因为PCI总线仅是处理器系统的一个组成部分。...PCI规范也没有规定如何设计HOST主桥。 在PCI总线中,还有一类特殊的设备,即桥设备。桥设备包括PCI桥、PCI-to-(E)ISA桥和PCI-to-Cardbus桥。...当这些中断请求信号为低时,PCI设备将向处理器提交中断请求;当处理器执行中断服务程序清除PCI设备的中断请求后,PCI设备将该信号置高[2],结束当前中断请求。...而处理器系统需要预先知道这个规则,以便正确处理来自不同PCI设备的中断请求,这个规则也被称为中断路由表,有关中断路由表的详细描述见后续介绍。

    1.5K11

    【重识云原生】第三章云存储3.2节——SPDK方案综述

    首先,根据定义,在用户级别运行设备驱动程序代码意味着驱动程序不在内核中运行。避免内核上下文切换和中断可以节省大量的处理开销,从而可以将更多的时间花费在真实的数据存储。...在传统的I / O模型中,应用程序先提交读取或写入请求,然后休眠,在I / O完成后等待中断将其唤醒。...在QEMU中,virtio设备是QEMU为Guest操作系统模拟的PCI设备,这个设备可以是传统的PCI设备或PCIe设备,遵循PCI-SIG定义的PCI规范,可以具有配置空间、中断配置等功能。...当SCSI命令在后端的文件或块设备执行完成并返回给virtio-scsi backend模块后,QEMU会向该PCI设备发送中断通知,从而Guest基于该中断完成整个SCSI命令流程。...实际上vhost-kernel方案并没有完全模拟一个PCI设备,QEMU仍然负责对该PCI设备的模拟,只是把来自virtqueue的数据处理逻辑拿到内核空间了。

    4.8K31

    CentOS下查看电脑硬件设备属性命令

    CentOS下查看电脑硬件设备属性命令 2018年09月13日 17:48:31 乔烨 阅读数:415 如何在linux下查看电脑硬件设备属性 # uname -a               # 查看内核...设备 # lsusb -tv              # 列出所有USB设备 # lsmod                 # 列出加载的内核模块 # env                   #...:查看pci设备的信息 cat /proc/swaps :查看所有swap分区的信息 该如何才能知道系统都有什么硬件设备,有如下几种方式: 方式一: 使用lsdev命令,可以显示系统中的设备及其特征。...(IRQ):cat/proc/interrupts   查看系统体系结构:uname -a   在LINUX环境开发驱动程序,首先要探测到新硬件,接下来就是开发驱动程序。   ...主机内存信息   Version Linux内存版本信息 显示PCI设备详细信息 当前很多常用硬件都是PCI(Peripheral Component Interconnect)设备,如声卡、网卡、USB

    3.1K20

    PCI总线的桥与配置(二)

    (8) Interrupt Line寄存器 这个寄存器是系统软件对PCI设备进行配置时写入的,该寄存器记录当前PCI设备使用的中断向量号,设备驱动程序可以通过这个寄存器,判断当前PCI设备使用处理器系统中的哪个中断向量号...如果在一个处理器系统中,没有使用8259A中断控制器管理PCI设备的中断,则该寄存器中的数据并没有意义。...在多数PowerPC处理器系统中,并不使用8259A中断控制器管理PCI设备的中断请求,因此该寄存器没有意义。即使在x86处理器系统中,如果使用I/O APIC中断控制器,该寄存器保存的内容仍然无效。...目前在绝大多数处理器系统中,并没有使用该寄存器存放PCI设备使用的中断向量号。...在Linux系统中,设备驱动程序调用pci_enable_device函数,使能该寄存器的I/O和Memory Space位之后,才能访问该设备的存储器或者I/O地址空间。

    2K31

    PCI Express 系列连载篇(八)

    (8) Interrupt Line寄存器 这个寄存器是系统软件对PCI设备进行配置时写入的,该寄存器记录当前PCI设备使用的中断向量号,设备驱动程序可以通过这个寄存器,判断当前PCI设备使用处理器系统中的哪个中断向量号...如果在一个处理器系统中,没有使用8259A中断控制器管理PCI设备的中断,则该寄存器中的数据并没有意义。...在多数PowerPC处理器系统中,并不使用8259A中断控制器管理PCI设备的中断请求,因此该寄存器没有意义。即使在x86处理器系统中,如果使用I/O APIC中断控制器,该寄存器保存的内容仍然无效。...目前在绝大多数处理器系统中,并没有使用该寄存器存放PCI设备使用的中断向量号。...在Linux系统中,设备驱动程序调用pci_enable_device函数,使能该寄存器的I/O和Memory Space位之后,才能访问该设备的存储器或者I/O地址空间。

    1.4K21

    PCI Express 系列连载篇(四)

    在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。...在这类处理器系统中,可能并不含有PCI桥,因而PCI设备的中断请求信号与中断控制器的连接关系较易确定。而在这类处理器系统中,即便存在PCI桥,来自PCI桥之下的PCI设备的中断请求也较易处理。...如果在一个x86处理器系统中,PCI桥下游总线的PCI设备使用的中断映射关系与此不同,那么系统软件程序员需要改动BIOS中的中断路由表。...在一个操作系统中,即便中断处理程序没有首先读取PCI设备的寄存器,也多半不会出现问题,因为在操作系统中,一个PCI设备从提交中断到处理器开始执行设备的中断服务例程,所需要的时间较长,处理器系统基本上可以保证此时数据已经写入存储器...即便是支持MSI中断机制的PCI设备,在设备驱动程序的实现中也很少使用这种机制。首先PCI设备具有INTx#信号可以传递中断,而且这种中断传送方式在PCI总线中根深蒂固。

    1.1K20

    Linux 内核系统架构

    与外设通信的层级关系如下: ? 设备通信层级图 外部设备大多通过总线与CPU连接,系统往往不止一个总线,而是总线的集合。在很多PC设计中包含两个通过一个bridge相连的PCI总线。...在IA-32架构体系中,端口的地址空间包含了2^16个不同的8位地址,这些地址可以通过从0x0到0xFFFFH间的数唯一识别。每个端口都有一个设备分配给它,或者空闲没有使用,多个外设不能共享一个端口。...每个CPU都提供了中断线(可被不同的设备共享),每个中断由唯一的中断号识别,内核为每个使用的中断提供一个服务方法(ISR,Interrupt Service Routine,即中断发生后,CPU调用的处理函数...中断会挂起普通的系统工作。当有数据已准备好可以给内核或者间接被一个应用程序使用的时候,外设出发一个中断。使用中断确保系统只有在外设需要处理器介入的时候才会通知处理器,有效提高了效率。...不是所有的设备类型都能直接挂接在所有的总线系统上,例如硬盘挂到SCSI接口上,但显卡不可以(显卡可以挂到PCI总线上)。硬盘必须通过IDE间接挂到PCI总线上。 总线类型可分为系统总线和扩展总线。

    5.2K72

    《深入浅出DPDK》&《DPDK应用基础》读书笔记

    但如果是基于UIO的实现,该中断机制就只支持一个中断号,所有的队列共享一个中断号。 ?...在Linux系统上,可以通过命令“lscpu”来查看核ID和处理器的对应关系。 I/O虚拟化 I/O虚拟化包括管理虚拟设备和共享的物理硬件之间I/O请求的路由选择。...I/O全虚拟化 该方法可以模拟一些真实设备。一个设备的所有功能或总线结构(如设备枚举、识别、中断和DMA)都可以在宿主机中模拟。客户机所能看到的就是一组统一的I/O设备。...在全虚拟化中是所有对模拟I/O设备的访问都会造成VM-Exit,而在半虚拟化中是通过前后端驱动的协商,使数据传输中对共享内存的读写操作不会VM-Exit,这种方式由于不像模拟器那么复杂,软件处理起来不至于那么慢...在客户机里,分配两个设备,一个是PCI/PCI-e透传设备,一个是模拟设备。DPDK通过bonding技术把这两个设备设成主备模式。

    4.4K31

    【重识云原生】计算第2.4节——主流虚拟化技术之KVM

    设备通过中断控制器(IO APIC或PIC)向CPU发送中断请求; IO APIC将中断转发至目标CPU和Local APIC; 目标APIC对该中断进行处理; 在虚拟化环境中,VMM为...Guest的对该设备的IO操作与物理设备一样,不经过QEMU/KVM处理。直通设备不能共享给多个Guest使用,且不能随Guest进行动态迁移,需要通过热插拔或libvirt工具来解决。...2.3.3.2 设备共享SR-IOV标准 为了实现多个Guest可以共享同一个物理设备,PCI-SIG发布了SR-IOV(Single Root-IO Virtualization)标准...在KVM中在Guest不关机情况下支持PCI设备(如模拟、半虚拟化或直通的网卡、硬盘、USB设备)热拔插,但CPU和内存热插拔硬件平台和OS层面的限制还比较多。...KVM基本上是Linux内核中的Hypervisor(虚拟机管理程序)。它可以并行运行多个操作系统。QEMU可以在KVM中启动一个新线程以执行虚拟操作系统,然后由KVM控制执行。

    3K20

    深入理解SR-IOV和IO虚拟化

    VF是与PF关联的一种功能,是一种轻量级 PCIe 功能,可以与物理功能以及与同一物理功能关联的其他 VF 共享一个或多个物理资源。VF 仅允许拥有用于其自身行为的配置资源。...3.1.1.1 DMA物理地址重映射 (DMA Remapping ) 1)地址空间隔离 在没有iommu的时候,用户态驱动可以通过设备dma可以访问到机器的全部的地址空间,如何保护机器物理内存区对于用户态驱动框架设计带来挑战...3.1.1.2 中断重映射 以Intel VT-d为例,提出了两个机制支持中断重映射: 引入两种中断请求格式 兼容模式和重映射模式,Bit4位为0来表征为不可重映射中断,Bit4位为 1来表征为可重映射中断...Table Entry的格式如图3.1.1.2.3: 图3.1.1.2.3 IOMMU中断重映射的实质是将来自PCIe设备的中断(包括来自IOAPIC和PCIe设备的MSI/MSI-X等)拦截下来判断是否为重映射中断...) 为虚拟机创建虚拟PCIe设备 为虚拟机创建虚拟PCIe设备,虚拟PCIe设备的寄存器规划和DMA信息是物理PCIe设备在虚拟机中的映射。

    10.1K43

    DPDK之PMD原理

    其中uio模块,是内核提供的用户态驱动框架,而igb_uio是DPDK kit中拥有与uio交互,bind指定网卡的内核模块。...DPDK的应用层代码,会打开uioX设备。在函数pci_uio_alloc_resource中, ? 图5....设置中断信息 ? 图8. 注册中断 当打开uio设备时,igb_uio注册了一个中断。这时大家应该有个疑问,PMD不是用户态轮询设备吗?为什么还要申请中断,注册中断处理函数呢?...应用层uio初始化 在pci_uio_alloc_resource中,主要是打开dpdk要管理的uio设备 ? 图13. 打开ui设备 同时,DPDK还需要把PCI设备的BAR映射到应用层。...注册e1000的中断处理函数 从图11和图12的代码中,可以看出当uio设备有事件时,由eth_igb_interrupt_handler负责处理,实现了用户态的中断处理。 ?

    9.6K53
    领券