当前位置: 首页 > 软件库 > 其他开源 > Linux内核 >

Virtio

针对Linux的I/O虚拟化框架
授权协议 未知
开发语言 C/C++
所属分类 其他开源、 Linux内核
软件类型 开源软件
地区 不详
投 递 者 濮阳研
操作系统 Linux
开源组织
适用人群 未知
 软件概览

Virtio 是半虚拟化 hypervisor 中位于设备之上的抽象层。virtio 由 Rusty Russell 开发,他当时的目的是支持自己的虚拟化解决方案 lguest

virtio 是对半虚拟化 hypervisor 中的一组通用模拟设备的抽象。该设置还允许 hypervisor 导出一组通用的模拟设备,并通过一个通用的应用编程接口(API)让它们变得可用。下图展示了为什么这很重要。有了半虚拟化 hypervisor 之后,来宾操作系统能够实现一组通用的接口,在一组后端驱动程序之后采用特定的设备模拟。后端驱动程序不需要是通用的,因为它们只实现前端所需的行为。

 

除了前端驱动程序(在来宾操作系统中实现)和后端驱动程序(在 hypervisor 中实现)之外,virtio 还定义了两个层来支持来宾操作系统到 hypervisor 的通信。在顶级(称为 virtio)的是虚拟队列接口,它在概念上将前 端驱动程序附加到后端驱动程序。驱动程序可以使用 0 个或多个队列,具体数量取决于需求。例如,virtio 网络驱动程序使用两个虚拟队列(一个用于接收,另一个用于发送),而 virtio 块驱动程序仅使用一个虚拟队列。虚拟队列实际上被实现为跨越来宾操作系统和 hypervisor 的衔接点。但这可以通过任意方式实现,前提是来宾操作系统和 hypervisor 以相同的方式实现它。

  • 背景: 显卡的提升在虚拟化场景下一直是一个难以解决的问题。目前qemu中提供的显卡有2种  一种是cirrus显卡,一种是vga显卡。这两种显卡都是通过qemu来进行模拟的,也仅仅达到了能够让虚拟机使用的功能。  而对于游戏需要的3D加速能力等,还不能很好的模拟。 显卡本身需要强大的计算能力,这里qemu纯用cpu来模拟gpu的功能明显有些力不从心。 新的功能virtio-gpu的出现给虚拟化的显

  • Introduction This document describes the specifications of the “virtio” family of devices. These devices are found in virtual environments, yet by design they look like physical devices to the guest w

  • Direct downloads are available for the .iso, .vfd, and qemu-ga installers. Stable virtio-win iso: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso Stable v

 相关资料
  • 问题内容: 我的Web服务器使用通常的Java I/O和每个连接机制的线程。如今,随着用户的增加(长时间的轮询连接),他们开始屈服。但是,连接大部分处于空闲状态。尽管可以通过添加更多的Web服务器来解决此问题,但我一直在尝试对NIO实现进行一些研究。 我对此有好感。我已经阅读了基准测试,其中使用Linux中新的NPTL库的常规I / O 优于NIO。 通过Java I / O配置和使用最新的NPT

  • 虚拟化 [PV_OPS] noreplace-paravirt 禁止使用内核通用的半虚拟化接口paravirt_ops,主要用于解决某些在Virtual PC上安装或运行Linux的故障。 [VMMIO] virtio_mmio.device=size@baseaddr:irq[:id] 实例化virtio-mmio设备(CONFIG_VIRTIO_MMIO)。可以多次使用以实例化多个设备。 si

  • 问题内容: 使用winsock,可以将套接字配置或将单独的I / O操作配置为“重叠”。这意味着将立即返回执行I / O的调用,而实际的操作则由单独的工作线程异步完成。 Winsock还提供“完成端口”。据我了解,完成端口充当句柄(套接字)的多路复用器。如果一个句柄不在I / O操作的中间,即它的所有I / O操作都已 完成 ,则可以对其进行多路分解。 那么,关于我的问题… Linux是否支持完成

  • I/O

    注:本节未经校验,如有问题欢迎提issue 介绍 akka.io包是由Akka和spray.io团队协作开发的。它的设计结合了spray-io模块的经验,并共同进行了改进,使其适应基于actor服务的更加普遍的消费需求。 该 I/O 实现的指导设计目标是要达到极端的可扩展性,要毫不妥协地提供一个API正确匹配底层传输机制,并且是完全的事件驱动、无阻塞和异步。该API命中注定是网络协议实现和构建更高

  • I/O

    目标 了解 java.io.File 类的主要用途 了解如何使用字节流和字符流 了解如何从文件读取数据和向其中写入数据 处理外部数据 您在 Java 程序中使用的数据通常来自外部数据来源,比如数据库、通过套接字直接传输的字节或文件存储。大部分收集和处理外部数据的 Java 工具都包含在 java.io 包中。 文件 在所有可用于 Java 应用程序的数据来源中,文件是最常见的,通常也是最方便的。如

  • 80386的I/O指令使得处理器可以访问I/O端口,以便从外设输入数据,或者向外设发送数据。这些指令有一个指定I/O空间端口地址的操作数。有两类的I/O指令: 1、 在寄存器指定的地址传送一个数据(字节、字、双字)。 2、 传送指定内存中的一串数据(字节串、字串、双字串)。这些被称作为“串 I/O指令”或者说“块I/O指令”。 8.2.1 寄存器I/O指令(Register I/O Instruc

  • 80386 允许以以下的两种方式操作输入、输出: 通过独立的I/O地址空间(使用特定的I/O指令) 通过内存映射I/O(使用一般的指令操作数)

  • 问题内容: 我读到,据说可以通过写入/ sys / block / [disk] / queue / scheduler来更改正在运行的内核上特定设备的I / O调度程序。例如,我可以在系统上看到: 默认值是完全公平的队列调度程序。我想知道的是,在自定义内核中包括所有四个调度程序是否有用。除非内核足够聪明地为正确的硬件选择正确的调度程序,特别是基于闪存的驱动器的“ noop”调度程序,以及针对传统