CN101416161A - 在分区环境中显露设备特征 - Google Patents
在分区环境中显露设备特征 Download PDFInfo
- Publication number
- CN101416161A CN101416161A CNA2007800121095A CN200780012109A CN101416161A CN 101416161 A CN101416161 A CN 101416161A CN A2007800121095 A CNA2007800121095 A CN A2007800121095A CN 200780012109 A CN200780012109 A CN 200780012109A CN 101416161 A CN101416161 A CN 101416161A
- Authority
- CN
- China
- Prior art keywords
- manager
- equipment
- ioctl
- affairs
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明的一个实施例是用于处理输入/输出(I/O)事务的技术。访客分区中的仿真设备驱动器在处理输入/输出(I/O)事务时经由操作系统(OS)来代表应用与虚拟机(VM)管理器交互。I/O事务是应用与设备之间的事务。以通信方式耦合到仿真设备驱动器的服务分区中的设备仿真器在处理I/O事务时经由OS来代表设备特有驱动器与VM管理器交互。设备特有驱动器与设备接口。
Description
技术领域
本发明的实施例涉及分区技术领域,更具体地说,涉及分区环境中的设备驱动器。
背景技术
在分区环境(如虚拟化环境)中,可以创建访客操作环境的许多实例。这些访客环境或分区可以相互独立地运行。通常,诸如管理程序的软件层直接在系统硬件上运行,并将虚拟平台显露给访客分区。在这种方案下,可以将设备或硬件元件作为具有一些通用特性的模型显露给访客分区。
软件层将基本的设备特征提炼成类似设备共有的通用模型。这种提炼的一个问题是,可能不能完全利用设备的特定或唯一特征。在许多应用中,可能需要访问设备特有功能性以便利用设备提供的增值或唯一特征。
附图说明
通过参照以下描述和用于说明本发明的实施例的附图可以最好地理解本发明的实施例。图中:
图1A是示出可以在其中实现本发明的一个实施例的网络系统的图;
图1B是示出根据本发明的一个实施例的处理系统的图;
图2是示出根据本发明的一个实施例的分区环境的图;
图3是示出根据本发明的一个实施例的设备接口过程的流程图;
图4是示出根据本发明的一个实施例的用于处理本地事务的过程的流程图;
图5A是示出根据本发明的一个实施例的从应用到设备的输入/输出控制调用操作的第一部分的流程的图;
图5B是示出根据本发明的一个实施例的从应用到设备的输入/输出控制调用操作的第二部分的流程的图;
图6A是示出根据本发明的一个实施例的从设备到应用的状态改变通知操作的第一部分的流程的图;
图6B是示出根据本发明的一个实施例的从设备到应用的状态改变通知操作的第二部分的流程的图。
具体实施方式
本发明的一个实施例是用于处理输入/输出(I/O)事务的技术。访客分区中的仿真设备驱动器(driver)在处理I/O事务时经由操作系统(OS)来代表应用与虚拟机(VM)管理器交互。I/O事务是应用与设备之间的事务。以通信方式耦合到仿真设备驱动器的服务分区中的设备仿真器在处理I/O事务时经由OS来代表设备特有驱动器与VM管理器交互。设备特有驱动器与设备接口(interface to the device)。
在以下描述中,阐述了众多具体细节。但是,应了解,在没有这些具体细节的情况下,也可以实现本发明的实施例。在其它情况中,没有示出熟知的电路、结构和技术,以免混淆对本描述的理解。
本发明的一个实施例可以作为过程来描述,该过程通常描绘成流程图、操作程序图、结构图或框图。尽管流程图可以将操作作为连续过程来描述,但是其中许多操作可以并行或同时执行。流程图中的循环或迭代可以通过单个迭代来描述。应了解,维护一个或多个循环索引或计数器以便更新关联的计数器或指针。此外,操作的顺序可以重新排列。过程在其操作完成时终止。过程可以对应于方法、程序、步骤等。框图可以包含描述元件、项、组件、设备、单元、子单元、结构、方法、进程、功能、操作、功能性或任务等的方框或模块。功能性或操作可以自动或手动地执行。
本发明的一个实施例是用于在分区环境中处理应用与I/O设备之间的I/O事务的技术。该技术允许通用仿真设备显露和服务于对于真实设备的驱动器和硬件来说唯一或特殊的功能性。这可以通过代理从访客分区到拥有或控制真实设备硬件的服务分区的标准驱动器I/O控制接口来执行。通过I/O控制代理,将来自应用的用于执行某个动作的所有查询直接传递给标准设备驱动器,而不管这些查询是标准的还是定制的。这些查询对于为表示真实硬件而创建的模型来说是不透明的。然后,可以通过设备特有驱动器来实践(hornor)设备特有的任何定制命令。该技术不限于严格虚拟化的环境。它可以扩展到其中一个分区拥有或控制真实设备硬件并将同类仿真设备呈现给其它分区的任何环境。可以采用任何分区环境,而不管是利用虚拟化还是利用任何其它类型的技术创建的。
图1A是示出可以在其中实现本发明的一个实施例的系统10的图。系统10表示利用10千兆位以太网的局域网(LAN)应用。系统10包括两个校园20和50以及链路25。
每个校园20和50表示利用网络互连来链接个人计算机(PC)、工作站和服务器的企业。他们可以具有聚集成10千兆位以太网下行链路的多个1000BASE-X或1000BASE-T段。链路25可以是长距离(如40km)连接两个校园20和50的单模光纤链路。
校园20和50在基础设施方面可以类似。每个校园中的网络可以包括建筑物、数据中心或计算机室。校园20可以包括交换机/路由器(如交换机/路由器30和交换机/路由器35)和LAN 42。校园50可以包括交换机/路由器(如交换机/路由器60和交换机/路由器65)和LAN
72。交换机/路由器30和60通常设置在对应校园的边缘。它们通过链路25连接在一起。交换机/路由器30和35以高达10千兆位/秒(Gbps)的速度在短距离(如30-80米)内经由多模光纤链路32连接。交换机/路由器35连接到LAN 42。类似地,交换机/路由器60和65以高达10千兆位/秒(Gbps)的速度在短距离(如30-80米)内通过多模光纤链路62连接。交换机/路由器65连接到LAN 72。
LAN 42提供到服务器、PC或工作站(如服务器40和个人计算机(PC)/工作站45)的连接。类似地,LAN 72提供到服务器、PC或工作站(如服务器70和PC/工作站75)的网络连接。服务器40或70提供特定操作以支持该计算环境。它们可以是:连接到各种打印机的打印服务器,连接到诸如磁带驱动器、廉价磁盘冗余阵列(RAID)的大容量存储设备的存储服务器,用于提供诸如视频、音频或图形的多媒体服务的媒体服务器,或具有特定功能的任何服务器。每个服务器通常包括一个或多个具有到对应LAN的网络连接的网络接口卡(NIC)。PC/工作站45或75可以是运行虚拟化平台环境的处理系统。
图1B是示出可以在其中实现本发明的一个实施例的处理系统45/75的图。系统45/75包括处理器单元110、存储器控制器(MC)120、主存储器130、图形处理器125、输入/输出控制器(IOC)140、互连145、大容量存储设备接口150、输入/输出(I/O)设备1471-147K和网络接口卡(NIC)160。
处理器单元110表示具有任何类型的体系结构的中央处理单元,如利用超线程、安全性、网络、数字媒体技术的处理器、单核处理器、多核处理器、嵌入式处理器、移动处理器、微控制器、数字信号处理器、超标量计算机、向量处理器、单指令多数据(SIMD)计算机、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超长指令字(VLIW)或混合体系结构。
MC 120提供对诸如主存储器130和IOC 140的存储器和输入/输出设备的控制和配置。MC 120可以集成到芯片组中,该芯片组集成了多种功能性,如图形、媒体、隔离执行模式、主机-外围总线接口、存储器控制、功率管理等。MC 120或MC 120中的存储器控制器功能性可以集成在处理器单元110中。在一些实施例中,位于处理器单元110内部或外部的存储器控制器可以为处理器单元110中的所有核或处理器工作。在其它实施例中,它可以包括可以分别为处理器单元110中的不同核或处理器工作的不同部分。
主存储器130用于存储系统代码和数据。主存储器130通常用动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、或任何其它类型的存储器(包括那些无需刷新的存储器)来实现。主存储器130可以包括诸如DRAM的存储器设备的多个通道。DRAM可以包括具有8.5千兆位/秒(GB/s)带宽的双倍数据速率(DDR2)设备。在一个实施例中,存储器130包括分区环境135。分区环境135可以支持应用与设备之间的I/O事务,这些I/O事务将设备的附加或唯一特征显露给(expose to)应用。分区环境135提供可以相互独立操作的多个VM的创建。
图形处理器125是提供图形功能性的任何处理器。图形处理器125也可以集成到MC 120中以形成图形和存储器控制器(GMC)。图形处理器125可以是经由诸如加速图形端口(AGP)的图形端口或外围组件互连(PCI)Express互连与MC 120接口的图形卡,如图形性能加速(AGP)卡。图形处理器125提供到显示监视器127的接口,该显示监视器127例如为标准顺序扫描监视器、电视(TV)输出设备和最小化传输差分信号(TMDS)控制器。显示监视器127可以是任何显示设备,如阴极射线管(CRT)监视器、电视机、液晶显示器(LCD)、平板显示器、和数字CRT。
IOC 140具有设计成用于支持I/O功能的多种功能性。IOC 140也可以与MC 120一起或与MC 120分离地集成到芯片组中以执行I/O功能。IOC 140可以包括多个接口和I/O功能,如外围组件互连(PCI)总线接口、处理器接口、中断控制器、直接存储器存取(DMA)控制器、功率管理逻辑、计时器、系统管理总线(SMBus)、通用串行总线(USB)接口、大容量存储设备接口、低引脚计数(LPC)接口、无线互连、直接媒体接口(DMI)等。
互连145提供到外围设备的接口。互连145可以点对点或连接到多个设备。为清楚起见,没有示出所有互连。预期互连145可以包括任何互连或总线,如外围组件互连(PCI)、PCI Express、通用串行总线(USB)、小型计算机系统接口(SCSI)、串行SCSI和直接媒体接口(DMI)等。
大容量存储设备接口150与用于存储诸如代码、程序、文件、数据和应用的文档信息的大容量存储设备接口。大容量存储设备接口可以包括SCSI、串行SCSI、高级技术附件(ATA)(并行和/或串行)、集成驱动电子装置(IDE)、增强IDE、ATA分组接口(ATAPI)等。大容量存储设备可以包括致密盘(CD)只读存储器(ROM)152、数字视频/多功能盘(DVD)153、软盘驱动器154和硬盘驱动器155、磁带驱动器156以及任何其它磁或光存储设备。大容量存储设备提供用于读取机器可访问介质的机构。
I/O设备1471-147K可以包括用于执行I/O功能的任何I/O设备。I/O设备1471-147K的实例包括输入设备控制器(如键盘、鼠标、跟踪球、定位设备)、媒体卡(如音频、视频、图形)、网络卡、和任何其它外围控制器。
NIC 160提供到服务器40/70的网络连接。在一个实施例中,NIC160与32位和64位外围组件互连(PCI)总线标准二者兼容。它通常符合PIC局部总线修订版2.2、PCI-X局部总线修订版1.0或PCI-Express标准。处理系统中可以有多于一个NIC 160。通常,NIC 160支持标准以太网最小和最大帧大小(64-1518字节)、帧格式、以及电子和电气工程师协会(IEEE)802.2逻辑链路控制(LLC)规范。它也可以支持全双工千兆位以太网接口、基于帧的流控制、以及定义有线以太网的物理层和数据链路层的其它标准。它可以支持由IEEE802.3ab定义的铜千兆位以太网或由IEEE 802.3z定义的光纤千兆位以太网。NIC 160可以是无线网络适配器。它可以符合PCI总线和通用串行BUS(USB)标准。它可以覆盖IEEE 802.11g标准的高达1000%覆盖区和范围。
NIC 160也可以是主机总线适配器(HBA),如小系统小接口(SCSI)主机适配器或光纤通道(FC)主机适配器。SCSI主机适配器可以包含用于执行SCSI事务的板上硬件和固件、或用于从SCSI设备引导或配置SCSI主机适配器的适配器基本输入/输出系统(BIOS)。FC主机适配器可用于与光纤通道总线接口。它可以与1Gbps光纤通道存储区域网(SAN)自动协商速度而以高速(如2Gbps)操作。它可以由合适的固件或软件来支持以便在带内FC或带外互联网协议(IP)支持下提供本地和远程HBA的发现、报告和管理。它可以在硬件奇偶校验和循环冗余码(CRC)支持下具有帧级多路复用和乱序帧重组、用于构造支持的板上上下文高速缓存、和端对端数据保护。
图2是示出根据本发明的一个实施例的如图1所示的分区环境135的图。分区环境135包括访客分区210、VM管理器265和服务分区220。可以利用虚拟化来进行分区。分区环境135中的任何一个组件都可以通过软件、固件、硬件或其任意组合来实现。
访客分区210可以是在平台或处理系统45/75上创建的用于在物理硬件组件上操作的虚拟分区的一个实例。它可以包括标准设备应用230、定制设备应用235、操作系统(OS)层240、和仿真设备驱动器260。标准设备应用(application)230可以是使用标准设备的应用。标准设备是可以建模成具有某个最少特征子集的通用设备的设备。定制设备应用235可以是使用定制接口设备的应用。定制接口设备可以是具有唯一或特殊的附加特征的设备。这些特征对于应用有用。因此,需要能够访问这些唯一或特殊的特征而不是如标准设备中的通用或最少特征。OS层240可以包括支持访客分区210的OS组件。它可以包括标准应用编程接口(API)函数调用。仿真设备驱动器260可以利用这些标准API调用来与应用230或235通信。
仿真设备驱动器260是设备接口250的一部分。设备接口250耦合到VM管理器265以便服务于设备290。它可以通过软件、固件、硬件或其任意组合来实现。设备接口250提供用于保留或显露设备290的唯一或特殊特征的机制。这些唯一或特殊特征不会被传统技术掩盖住,而是显露给应用235。设备接口250可以通用以便与同一类中的不同设备一起工作。设备可以形成为具有不同特性和/或功能性的类。例如,网络类可以包括所有网络适配器;存储类可以包括所有存储设备,等等。仿真设备驱动器260在处理I/O事务时经由OS 240来代表应用230或235与VM管理器265交互。I/O事务是应用230或235与设备290之间的事务。
VM管理器265管理着在平台上创建的VM。它们包括访客分区210和服务分区220。VM管理器265用作用于在访客分区210与服务分区220之间传送信息的管道。它管理着VM接口任务,包括向设备接口250发送通知。
服务分区220可以包括设备仿真器270、OS层275、和设备特有驱动器280。设备仿真器270是设备接口250的一部分。它以通信方式耦合到仿真设备驱动器260,并在处理I/O事务时经由OS 275来代表设备特有驱动器280与VM管理器265交互。OS 275可以包含与服务分区220中的设备驱动器有关的OS组件。它可以与OS 240相同。它可以包括标准应用编程接口(API)函数调用。设备仿真器270可以利用这些标准API调用来与设备特有驱动器280通信。
设备特有驱动器280与设备290接口,并具有用于控制或配置设备290的固件或软件形式的特定程序或例行程序。设备290可以是具有对于应用235有用的附加或特殊特征的任何I/O设备。它可以是如图1所示的NIC 160。
图3是示出根据本发明的一个实施例的设备接口过程300的流程图。
一旦开始,过程300在处理I/O事务时从访客分区经由操作系统(OS)来代表应用与VM管理器交互(方框310)。I/O事务是应用与I/O设备之间的事务。I/O事务可以由应用发起,如I/O控制(IOCTL)函数调用。此类IOCTL调用的一个实例可以是向无线网络适配器发出的返回位于适配器可见范围内的所有接入点的列表的请求。I/O事务也可以由I/O设备发起,如主动通知。此类主动通知的一个实例可以是状态改变(如电缆断开、下行链路状态)。从访客分区与VM管理器的交互将在图5A和6B中进一步说明。
接着,过程300在处理I/O事务时从服务分区经由OS来代表设备特有驱动器与VM管理器交互(方框320)。设备特有驱动器与设备接口。它可以包含设置、配置或控制设备的特定函数或程序。从服务器分区与VM管理器的交互将在图5B和6A中进一步说明。然后,过程300终止。
图4是示出根据本发明的一个实施例的用于处理本地事务的过程400的流程图。
一旦开始,过程400从应用接收I/O事务请求(方框410)。I/O请求可以由直接与应用接口的OS组件截取。接着,过程400确定I/O事务请求是否可以在本地处理(方框420)。当之前已经执行过该处理并且已经将结果缓存(如存储在高速缓存中)时,可以在本地处理I/O事务。例如,可以缓存设备名称或链路状态。通过缓存I/O事务的值或结果,可以高效且快速地执行处理。
如果确定可以在本地处理I/O事务请求,则过程400将状态返回给OS(方框430)。该状态可以指示无需等待该操作,因为它可以在某个预定的时间段内完成。接着,过程400在本地处理I/O事务(方框440)。例如,可以从高速缓存检索设备名称,并将设备名称返回给请求的应用。然后,过程400终止。
如果确定不能在本地处理I/O事务请求,则过程400转到以远程模式处理I/O事务(方框450)。以远程模式的处理由设备接口250(图2)来执行,这将在图5A、5B、6A和6B中更全面地说明。然后,过程400终止。
图5A是示出根据本发明的一个实施例的从应用到设备的输入/输出控制调用操作的第一部分的流程500A的图。流程500A涉及如图2所示的包括OS 240和仿真设备驱动器(emulated device driver)260的访客分区210、以及VM管理器265。仿真设备驱动器260在处理I/O事务时从访客分区210与VM管理器265交互。
当访客分区210中的OS 240从应用接收到远程I/O事务请求(如IOCTL调用)(方框510)时,流程500A开始。应用可以是标准设备应用230或定制设备应用235(图2)。然后,OS 240将调用传递给仿真设备驱动器260。仿真设备驱动器260将IOCTL调用置于由访客分区210与服务分区220共享的存储器中(方框515)。这可以涉及获得调用信息(如命令、变元)并准备正确格式的调用信息用于检索。然后,仿真设备驱动器260将IOCTL调用转发给(proxy to)VM管理器265(方框520)。这可以涉及向VM管理器265发出呼叫以通知其该请求。然后,仿真设备驱动器260将未决状态返回给OS 240以指示I/O事务未决(方框525)。这是为了确保该过程符合OS 240的某个时限规定。然后,OS 240等待未决状态清零(方框530)。
一旦从仿真设备驱动器260接收到通知,VM管理器265通知服务分区220该未决I/O事务(如IOCTL调用)(方框535)。这可以通过在发送软件中断之后进行恢复操作、或通过给服务分区220的任何其它通知来执行。然后,服务分区220继续如图5B所示的处理。随后,VM管理器265从服务分区220接收I/O事务完成的通知。接着,它通知访客分区I/O事务的结果(方框540)。这可以通过在发送软件中断之后进行恢复操作、或给仿真设备驱动器260的任何其它通知来执行。
一旦从VM管理器265接收到通知,仿真设备驱动器260从共享存储器获得结果(方框545)。然后,它通知OS 240结果可用并将未决状态清零(clear)(方框550)。一旦接收到清零后的未决状态,OS 240获得结果并将结果返回给应用(方框555)。
图5B是示出根据本发明的一个实施例的从应用到设备的输入/输出控制调用操作的第二部分的流程500B的图。流程500B涉及如图2所示的包括OS 275和设备仿真器270的服务分区220、以及VM管理器265。设备仿真器270在处理I/O事务时从服务分区220与VM管理器265交互。
当设备仿真器270从VM管理器265接收到通知时,流程500B开始。设备仿真器270从共享存储器获得IOCTL调用信息(方框560)。接着,它利用对OS 275的标准API调用来执行IOCTL调用(方框565)。OS 275将IOCTL调用传递给设备特有驱动器280(图2),设备特有驱动器280执行该命令或将该命令发送给设备290。因为设备特有驱动器280是设备特有的,所以它能够访问设备的唯一或附加特征。因此,这些唯一特征可以变成可用或显露给请求的应用。然后,设备290执行所请求的I/O事务。取决于I/O事务的特定性质,可以将结果返回给设备特有驱动器280或更新它在状态寄存器内的状态。接着,设备特有驱动器280相应地获得结果。然后,OS 275从设备特有驱动器280获得I/O事务的结果(方框570)。接着,它将结果置于由服务分区220与访客分区210共享的存储器中(方框575),并通知设备仿真器270。这可以是存储I/O事务信息的相同的共享存储器或是不同的共享存储器。接着,设备仿真器270通知VM管理器265该结果(方框580)。然后,如图5A中的方框540所示,VM管理器265通知访客分区210。
图6A是示出根据本发明的一个实施例的从设备到应用的状态改变通知操作的第一部分的流程600A的图。流程600A涉及包括OS 275和设备仿真器270的服务分区220、以及VM管理器265。设备仿真器270在处理I/O事务时从服务分区220与VM管理器265交互。
当OS 275从设备特有驱动器280(图2)接收状态改变的通知(方框610)时,流程600A开始。状态改变可以是需要注意的设备状态的任何改变。它可以由诸如电缆断开、下行链路状态等任何事件引起。接着,OS 275通知设备仿真器270该状态改变(方框615)。一旦接收到通知,设备仿真器270将状态改变信息置于由服务分区220与访客分区210共享的存储器中(方框620)。接着,它将状态改变通知转发给VM管理器265(方框625)。一旦接收到通知,VM管理器265通知访客分区210该状态改变(方框630)。这可以通过在软件中断之后进行恢复操作、或任何其它通知技术来执行。
图6B是示出根据本发明的一个实施例的从设备到应用的状态改变通知操作的第二部分的流程600B的图。流程600B涉及如图2所示的包括OS 240和仿真设备驱动器260的访客分区210、以及VM管理器265。仿真设备驱动器260在处理I/O事务时从访客分区210与VM管理器265交互。
一旦从VM管理器265接收到通知,仿真设备驱动器260从共享存储器中获得状态改变信息(方框635)。接着,它利用对OS 240的标准API调用来向OS 240公布状态改变(方框640)。状态改变现在可供应用使用和/或访问(方框645)。
本发明的实施例的元件可以通过硬件、固件、软件或其任意组合来实现。术语硬件一般是指具有物理结构的元件,如电子、电磁、光、电-光、机械、电-机零件、组件或设备等。术语软件一般是指逻辑结构、方法、过程、程序、例行程序、进程、算法、公式、函数、表达式等。术语固件一般是指在硬件结构(如闪速存储器)中实现或实施的逻辑结构、方法、过程、程序、例行程序、进程、算法、公式、函数、表达式等。固件的实例可以包括微代码、可写控制存储、微编程结构。当在软件或固件中实现时,本发明的一个实施例的元件本质上是用于执行必需任务的代码段。软件/固件可以包括用于执行在本发明的一个实施例中描述的操作的实际代码、或仿效或模拟这些操作的代码。程序或代码段可以存储在处理器或机器可访问介质中,或通过传输介质由以载波实施的计算机数据信号、或经载波调制的信号来传送。“处理器可读或可访问介质”或“机器可读或可访问介质”可以包括可存储、传送或转移信息的任何介质。处理器可读或机器可访问介质的实例包括电子电路、半导体存储器设备、只读存储器(ROM)、闪速存储器、可擦除ROM(EROM)、可擦除可编程ROM(EPROM)、软盘、致密盘(CD)ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括通过诸如电子网络通道、光纤、空气、电磁、RF链路等传输介质传播的任何信号。代码段可以经由诸如互联网、内联网等计算机网络下载。机器可访问介质可以在制造品中实施。机器可访问介质可以包括在被机器访问时使机器执行上文描述的操作的数据。机器可访问介质还可包括嵌在其中的程序代码。程序代码可以包括用于执行上文描述的操作的机器可读代码。术语“数据”在这里是指出于机器可读的目的而编码的任何类型的信息。因此,它可包括程序、代码、数据、文件等。
本发明的实施例的所有或一部分可以通过硬件、软件、或固件、或其任意组合来实现。硬件、软件、或固件元件可以具有数个相互耦合的元件。硬件模块通过机、电、光、电磁或任何物理连接耦合到另一个模块。软件模块通过函数、过程、方法、子程序、或子例行程序调用、跳转、链路、参数、变量、和变元传递、函数返回等耦合到另一个模块。软件模块耦合到另一个模块以接收变量、参数、变元、指针等,和/或生成或传递结果、更新后的变量、指针等。固件模块通过以上硬件和软件耦合方法的任意组合耦合到另一个模块。硬件、软件或固件模块可以耦合到另一个硬件、软件、或固件模块中的任意一个模块。模块也可以是用于与在平台上运行的操作系统交互的软件驱动器或接口。模块还可以是用于配置、设置、初始化硬件设备、向硬件设备发送数据和从硬件设备接收数据的硬件驱动器。一种装置可以包括硬件、软件和固件模块的任意组合。
尽管就几个实施例描述了本发明,但本领域的技术人员将意识到,本发明不限于所描述的实施例,而是在实施时可以具有在随附权利要求的精神和范围内的修改和变更。因此,应将本描述视为是说明性而不是限制性的。
Claims (30)
1.一种装置,包括:
位于访客分区中的仿真设备驱动器,用于在处理输入/输出(I/O)事务时经由操作系统(OS)来代表应用与虚拟机(VM)管理器交互,所述I/O事务是所述应用与设备之间的事务;以及
位于服务分区中以通信方式耦合到所述仿真设备驱动器的设备仿真器,用于在处理所述I/O事务时经由所述OS来代表设备特有驱动器与所述VM管理器交互,所述设备特有驱动器与所述设备接口。
2.如权利要求1所述的装置,其中所述仿真设备驱动器将源自所述应用的输入/输出控制(IOCTL)调用转发给所述VM管理器,所述VM管理器通知所述设备仿真器所述IOCTL调用。
3.如权利要求2所述的装置,其中所述仿真设备驱动器将IOCTL调用信息置于在所述访客分区与所述服务分区之间共享的存储器中,并将未决状态返回给所述OS。
4.如权利要求3所述的装置,其中所述设备仿真器一旦从所述VM管理器接收到通知便从所述共享存储器获得所述IOCTL调用信息,并利用标准应用编程接口(API)来对所述OS执行所述IOCTL调用。
5.如权利要求4所述的装置,其中所述设备仿真器通知所述VM管理器所述IOCTL调用的结果,所述OS将所述结果置于所述共享存储器中。
6.如权利要求5所述的装置,其中所述仿真设备驱动器从所述共享存储器获得所述结果,并通知所述OS所述结果以便将所述未决状态清零,所述OS将所述结果返回给所述应用。
7.如权利要求1所述的装置,其中所述设备仿真器将源自所述设备特有驱动器的状态改变转发给所述VM管理器,并将所述状态改变置于在所述访客分区与所述服务分区之间共享的存储器中,所述VM管理器通知所述仿真设备驱动器所述状态改变。
8.如权利要求7所述的装置,其中所述仿真设备驱动器一旦从所述VM管理器接收到通知便从所述共享存储器获得所述状态改变,并利用标准应用编程接口(API)来向所述OS公布所述状态改变,所述状态改变可供所述应用访问。
9.一种方法,包括:
在处理输入/输出(I/O)事务时从访客分区经由操作系统(OS)来代表应用与虚拟机(VM)管理器交互,所述I/O事务是所述应用与设备之间的事务;以及
在处理所述I/O事务时从服务分区经由所述OS来代表设备特有驱动器与所述VM管理器交互,所述设备特有驱动器与所述设备接口。
10.如权利要求9所述的方法,其中从所述访客分区的交互包括:
将源自所述应用的输入/输出控制(IOCTL)调用转发给所述VM管理器,所述VM管理器通知所述设备仿真器所述IOCTL调用。
11.如权利要求10所述的方法,其中从所述访客分区的交互还包括:
将IOCTL调用信息置于在所述访客分区与所述服务分区之间共享的存储器中;以及
将未决状态返回给所述OS。
12.如权利要求11所述的方法,其中从所述服务分区的交互包括:
一旦从所述VM管理器接收到通知便从所述共享存储器获得所述IOCTL调用信息;以及
利用标准应用编程接口(API)来对所述OS执行所述IOCTL调用。
13.如权利要求12所述的方法,其中从所述服务分区的交互还包括:
通知所述VM管理器所述IOCTL调用的结果,所述OS将所述结果置于所述共享存储器中。
14.如权利要求13所述的方法,其中从所述访客分区的交互还包括:
从所述共享存储器获得所述结果;以及
通知所述OS所述结果以便将所述未决状态清零,所述OS将所述结果返回给所述应用。
15.如权利要求9所述的方法,其中从所述服务分区的交互包括:
将源自所述设备特有驱动器的状态改变转发给所述VM管理器;以及
将所述状态改变置于在所述访客分区与所述服务分区之间共享的存储器中,所述VM管理器通知所述仿真设备驱动器所述状态改变。
16.如权利要求15所述的方法,其中从所述访客分区的交互包括:
一旦从所述VM管理器接收到通知便从所述共享存储器获得所述状态改变;以及
利用标准应用编程接口(API)来向所述OS公布所述状态改变,所述状态改变可供所述应用访问。
17.一种系统,包括:
连接到网络以接收和发送分组的网络接口卡(NIC),所述NIC支持全双工千兆位以太网接口;
用于管理虚拟机(VM)接口任务的VM管理器;以及
耦合到所述VM管理器以服务于所述NIC的设备接口,所述设备接口包括:
位于访客分区中的仿真设备驱动器,用于在处理输入/输出(I/O)事务时经由操作系统(OS)来代表应用与所述VM管理器交互,所述I/O事务是所述应用与设备之间的事务;以及
位于服务分区中以通信方式耦合到所述仿真设备驱动器的设备仿真器,用于在处理所述I/O事务时经由所述OS来代表设备特有驱动器与所述VM管理器交互,所述设备特有驱动器与所述设备接口。
18.如权利要求17所述的系统,其中所述仿真设备驱动器将源自所述应用的输入/输出控制(IOCTL)调用转发给所述VM管理器,所述VM管理器通知所述设备仿真器所述IOCTL调用。
19.如权利要求18所述的系统,其中所述仿真设备驱动器将IOCTL调用信息置于在所述访客分区与所述服务分区之间共享的存储器中,并将未决状态返回给所述OS。
20.如权利要求19所述的系统,其中所述设备仿真器一旦从所述VM管理器接收到通知便从所述共享存储器获得所述IOCTL调用信息,并利用标准应用编程接口(API)来对所述OS执行所述IOCTL调用。
21.如权利要求20所述的系统,其中所述设备仿真器通知所述VM管理器所述IOCTL调用的结果,所述OS将所述结果置于所述共享存储器中。
22.如权利要求21所述的系统,其中所述仿真设备驱动器从所述共享存储器获得所述结果,并通知所述OS所述结果以便将所述未决状态清零,所述OS将所述结果返回给所述应用。
23.如权利要求17所述的系统,其中所述设备仿真器将源自所述设备特有驱动器的状态改变转发给所述VM管理器,并将所述状态改变置于在所述访客分区与所述服务分区之间共享的存储器中,所述VM管理器通知所述仿真设备驱动器所述状态改变。
24.如权利要求23所述的系统,其中所述仿真设备驱动器一旦从所述VM管理器接收到通知便从所述共享存储器获得所述状态改变,并利用标准应用编程接口(API)来向所述OS公布所述状态改变,所述状态改变可供所述应用访问。
25.一种制造品,包括:
包括数据的机器可访问介质,所述数据在由机器访问时使所述机器执行包括以下步骤的操作:
在处理输入/输出(I/O)事务时从访客分区经由操作系统(OS)来代表应用与虚拟机(VM)管理器交互,所述I/O事务是所述应用与设备之间的事务;以及
在处理所述I/O事务时从服务分区经由所述OS来代表设备特有驱动器与所述VM管理器交互,所述设备特有驱动器与所述设备接口。
26.如权利要求25所述的制造品,其中使所述机器执行从所述访客分区的交互的数据包括在由机器访问时使所述机器执行包括以下步骤的操作的数据:
将源自所述应用的输入/输出控制(IOCTL)调用转发给所述VM管理器,所述VM管理器通知所述设备仿真器所述IOCTL调用。
27.如权利要求26所述的制造品,其中使所述机器执行从所述访客分区的交互的数据包括在由机器访问时使所述机器执行包括以下步骤的操作的数据:
将IOCTL调用信息置于在所述访客分区与所述服务分区之间共享的存储器中;以及
将未决状态返回给所述OS。
28.如权利要求27所述的制造品,其中使所述机器执行从所述服务分区的交互的数据还包括在由机器访问时使所述机器执行包括以下步骤的操作的数据:
一旦从所述VM管理器接收到通知便从所述共享存储器获得所述IOCTL调用信息;以及
利用标准应用编程接口(API)来对所述OS执行所述IOCTL调用。
29.如权利要求28所述的制造品,其中使所述机器执行从所述服务分区的交互的数据还包括在由机器访问时使所述机器执行包括以下步骤的操作的数据:
通知所述VM管理器所述IOCTL调用的结果,所述OS将所述结果置于所述共享存储器中。
30.如权利要求29所述的制造品,其中使所述机器执行从所述访客分区的交互的数据还包括在由机器访问时使所述机器执行包括以下步骤的操作的数据:
从所述共享存储器获得所述结果;以及
通知所述OS所述结果以便将所述未决状态清零,所述OS将所述结果返回给所述应用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/395,822 US8249853B2 (en) | 2006-03-31 | 2006-03-31 | Exposing device features in partitioned environment |
US11/395,822 | 2006-03-31 | ||
PCT/US2007/008006 WO2007114894A2 (en) | 2006-03-31 | 2007-03-30 | Exposing device features in partitioned environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101416161A true CN101416161A (zh) | 2009-04-22 |
CN101416161B CN101416161B (zh) | 2012-06-06 |
Family
ID=38560686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800121095A Expired - Fee Related CN101416161B (zh) | 2006-03-31 | 2007-03-30 | 在分区环境中显露设备特征 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8249853B2 (zh) |
EP (1) | EP2013726B1 (zh) |
CN (1) | CN101416161B (zh) |
WO (1) | WO2007114894A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621458B2 (en) * | 2004-12-21 | 2013-12-31 | Microsoft Corporation | Systems and methods for exposing processor topology for virtual machines |
US20070074226A1 (en) * | 2005-09-28 | 2007-03-29 | Zimmer Vincent J | Systems and methods for device driver isolation |
US7406407B2 (en) * | 2006-06-01 | 2008-07-29 | Microsoft Corporation | Virtual machine for operating N-core application on M-core processor |
US8689224B2 (en) * | 2007-09-26 | 2014-04-01 | The Boeing Company | Methods and systems for preserving certified software through virtualization |
US9208003B2 (en) * | 2008-06-09 | 2015-12-08 | International Business Machines Corporation | Hypervisor to I/O stack conduit in virtual real memory |
US8302094B2 (en) * | 2009-06-26 | 2012-10-30 | Vmware, Inc. | Routing a physical device request using transformer stack to an equivalent physical device in a virtualized mobile device |
US8769391B2 (en) * | 2009-08-24 | 2014-07-01 | Adobe Systems Incorporated | Application broker |
US10496608B2 (en) * | 2009-10-28 | 2019-12-03 | Sandisk Il Ltd. | Synchronizing changes in a file system which are initiated by a storage device and a host device |
AU2011217727B2 (en) | 2010-02-19 | 2016-06-30 | Commonwealth Scientific And Industrial Research Organisation | Co-design of a testbench and driver of a device |
US8966478B2 (en) | 2011-06-28 | 2015-02-24 | The Boeing Company | Methods and systems for executing software applications using hardware abstraction |
US20140129695A1 (en) * | 2012-11-02 | 2014-05-08 | Gface Gmbh | Connected devices |
US10528627B1 (en) * | 2015-09-11 | 2020-01-07 | Amazon Technologies, Inc. | Universal search service for multi-region and multi-service cloud computing resources |
US10191864B1 (en) * | 2015-11-12 | 2019-01-29 | Amazon Technologies, Inc. | Standardized interface for storage using an input/output (I/O) adapter device |
US10353727B2 (en) | 2016-05-26 | 2019-07-16 | International Business Machines Corporation | Extending trusted hypervisor functions with existing device drivers |
US10572246B2 (en) | 2018-04-27 | 2020-02-25 | Ati Technologies Ulc | Live update of a kernel device module |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6633916B2 (en) | 1998-06-10 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for virtual resource handling in a multi-processor computer system |
US6496847B1 (en) | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6247109B1 (en) | 1998-06-10 | 2001-06-12 | Compaq Computer Corp. | Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space |
US7272831B2 (en) | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
US6670425B2 (en) * | 2001-06-05 | 2003-12-30 | Brewer Science, Inc. | Anti-reflective coating of polymer with epoxide rings reacted with light attenuating compound and unreacted epoxide rings |
US20030088710A1 (en) | 2001-07-05 | 2003-05-08 | Sukhwinder Sandhu | Simulation environment software |
US6865738B2 (en) | 2002-10-08 | 2005-03-08 | Sun Microsystems, Inc. | Method and apparatus for managing independent asynchronous I/O operations within a virtual machine |
US7558723B2 (en) | 2003-12-12 | 2009-07-07 | Microsoft Corporation | Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices |
US7383555B2 (en) * | 2004-03-11 | 2008-06-03 | International Business Machines Corporation | Apparatus and method for sharing a network I/O adapter between logical partitions |
US20050246453A1 (en) * | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Providing direct access to hardware from a virtual environment |
US7580826B2 (en) * | 2004-06-30 | 2009-08-25 | Microsoft Corporation | Systems and methods for development of emulated devices in a virtual machine environment |
US7689800B2 (en) * | 2005-05-12 | 2010-03-30 | Microsoft Corporation | Partition bus |
-
2006
- 2006-03-31 US US11/395,822 patent/US8249853B2/en not_active Expired - Fee Related
-
2007
- 2007-03-30 EP EP07774324.3A patent/EP2013726B1/en not_active Not-in-force
- 2007-03-30 CN CN2007800121095A patent/CN101416161B/zh not_active Expired - Fee Related
- 2007-03-30 WO PCT/US2007/008006 patent/WO2007114894A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2007114894A8 (en) | 2008-04-17 |
EP2013726A2 (en) | 2009-01-14 |
EP2013726B1 (en) | 2013-06-26 |
EP2013726A4 (en) | 2012-06-13 |
CN101416161B (zh) | 2012-06-06 |
WO2007114894A2 (en) | 2007-10-11 |
US20070233775A1 (en) | 2007-10-04 |
WO2007114894A3 (en) | 2008-01-17 |
US8249853B2 (en) | 2012-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101416161B (zh) | 在分区环境中显露设备特征 | |
CN101268445B (zh) | 用于向多核环境中的应用程序提供实时线程服务的方法、装置 | |
US10498645B2 (en) | Live migration of virtual machines using virtual bridges in a multi-root input-output virtualization blade chassis | |
CN101290609B (zh) | 平衡快速外围组件互连带宽的系统和方法 | |
CN102341786B (zh) | 改变对网络访问的方法和设备 | |
CN102098171A (zh) | 用于管理网络环境中虚拟机的远程部署的方法和系统 | |
CN107122168A (zh) | 多操作系统 | |
CN102292698A (zh) | 用于在云计算环境中自动管理虚拟资源的系统和方法 | |
CN106933753B (zh) | 智能接口卡的控制方法及装置 | |
WO2015060833A1 (en) | Sandboxed application data redirection to datacenters | |
US8819663B2 (en) | Acceleration of software modifications in networked devices | |
CN105874442A (zh) | 计算机系统和计算机系统中端点设备访问的方法 | |
US9483211B2 (en) | Storage control apparatus, storage control method, and computer-readable recording medium having stored storage control program | |
CN104133718A (zh) | 带宽高效的虚拟机映像传送的方法和系统 | |
CN110048875A (zh) | 一种升级驱动的方法及设备 | |
WO2018184504A1 (zh) | 虚拟资源分配方法、nfvo和系统 | |
KR101468179B1 (ko) | 클라우드 컴퓨팅 환경에서 가상 환경을 변경하는 방법 및 이를 이용하는 단말 장치 | |
CN104077187A (zh) | 用于调度应用程序的执行的方法和系统 | |
CN102567071A (zh) | 一种虚拟串口系统及其通信方法 | |
US9354911B2 (en) | Method and system for logging into a virtual environment executing on a host | |
US11113088B2 (en) | Generating and managing groups of physical hosts associated with virtual machine managers in an information handling system | |
CN109582376A (zh) | 一种轻量级设备控制方法 | |
CN107145309B (zh) | 一种基于arm架构的分布式存储系统 | |
US11847081B2 (en) | Smart network interface controller (SmartNIC) storage non-disruptive update | |
CN115421855A (zh) | 基于云边协同的应用管理系统、方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120606 Termination date: 20210330 |