硬件虚拟化例子.docx
- 文档编号:26299192
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:13
- 大小:26.36KB
硬件虚拟化例子.docx
《硬件虚拟化例子.docx》由会员分享,可在线阅读,更多相关《硬件虚拟化例子.docx(13页珍藏版)》请在冰豆网上搜索。
硬件虚拟化例子
硬件虚拟化例子
【篇一:
硬件虚拟化例子】
1.资料的所有权益归上传用户所有2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途3.51cto下载中心仅提供资料交流平台,并不对任何资料负责4.本站资料中如有侵权或不适当内容,请邮件与我们联系()5.本站不保证资源的准确性、安全性和完整性,同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
【篇二:
硬件虚拟化例子】
接触过的一些搞了几年云计算的童鞋,也没明白常见的几种虚拟机技术方案的异同,比如只是记住了半虚拟要在虚拟机装驱动而全虚拟不需要,也不知道有时候为什么需要打开bios里的vt项。
本人呢,在看了各种讲解虚拟化的书籍之后,有些概念虽然不是很清晰,但对各种虚拟化技术解决方案产生的根源及实现手段还是基本能够理解。
最近要研究下qemu的源码,于是乎又看了很久以前就看过的vmware关于虚拟化技术的白皮书。
虽然本人长期阅览各种英文资料,读英文和中文几乎没有什么差别,但为加深理解决定翻译一下。
今天是周日,真是做到了一天足不出户,终于完成翻译工作,虽然这白皮书是2007年写的,但还是具有很好的参考价值,并且偶发现看过的很多书其实都参考或使用了这白皮书的图片。
要看白皮书原版的点击。
理解全虚拟、半虚拟以及硬件辅助的虚拟化
序言
1998年,vmware就琢磨着解决一度被认为不太可能完成的的x86平台的虚拟化问题,并且开创了x86平台的虚拟化市场。
解决方案就是,在允许多个虚拟机系统完全隔离地运行于一个硬件系统的处理器上,在可承受虚拟化代价的前提下,使用二进制翻译和直接指令执行相结合的方式来完成。
这项技术的扩散进而产生了成千上万的公司,这又进一步推动了从桌面到数据中心的虚拟计算技术的采用。
一些新的厂商进入到这个领域并想差异化他们的产品,在他们的宣传口号和术语中迷惑视听。
举个例子,硬件辅助虚拟化是一个很有价值的技术,它会不断成熟并增加可被硬件辅助来虚拟化的任务,半虚拟化并不是一个全新且能带来量级性能优化的技术。
这是一个复杂又不断进化的领域,通过对这些技术进行很好地解释,可帮助那些公司明白他们有哪些可选方案并选择自己的方向。
这个白皮书旨在澄清用来虚拟化x86硬件的各种不同技术,各自的优势和劣势,以及vmware如何以最佳效率利用和发展这些新兴的虚拟化技术。
图1是x86虚拟化技术时间线的一个总览,从vmware的二进制翻译到最近的内核半虚拟化和硬件辅助的虚拟化技术。
x86虚拟化概观
“虚拟化”这个术语本身就极大地表明了服务请求和底层物理交付的分离。
对于x86虚拟化,在硬件和操作系统之间,添加了一个虚拟化层,如图2。
这个虚拟化层使得多个操作系统实例可以并行地运行在一台计算机上,并动态地瓜分和共享诸如cpu、存储、内存和i/o设备等物理资源。
随着桌面和服务器处理能力持续逐年地增加,虚拟化技术被认为是一种可以简化软件开发测试、进行服务器整合、提高数据中心敏捷性和业务连续性的强大技术。
事实表明,将操作系统和应用程序完全从硬件中抽象出来然后封装成具有可移植性的虚拟机后,会带来很多虚拟化设施才具有的而单纯硬件所没有的特性。
例如,现今的服务可以24*7*365不间断地运行在配置有容错特性的虚拟设施中,数据备份和硬件维护也不需要停止服务。
vmware有一些客户,他们生产环境上的服务器已经运行了三年多没出现过服务停止现象。
对于业界标准的x86系统,虚拟化采取hosted或者hypervisor架构。
hosted架构将虚拟化层以一个应用程序的方式安装运行于操作系统之上,支持最为广泛的各种硬件配置。
hypervisor(裸金属)架构将虚拟化层直接安装到干净的x86系统上,由于它不需要通过操作系统而直接访问硬件,hypervisor架构相对于hosted架构效率更高,且具有更好的可扩展性、健壮性和性能。
vmwareplayer,ace,workstation和server使用了hosted架构的便捷性,而esxserver针对已认证的硬件采用hypervisor架构以达到数据中心级别的性能。
了解各个组件的大概背景,有助于更好的理解x86虚拟化技术。
虚拟化层是负责运行和管理所有虚拟机的软件,运行于虚拟机监控器(vmms)上。
如图3所示,虚拟化层是直接运行在硬件上的hypervisor,基于不同架构和实现方法的hypervisor所具有的功能有很大不同。
运行于hypervisor上的每个vmm实现了虚拟机的硬件抽象并负责运行虚拟机系统,每个vmm需要通过分割和共享cpu、内存和i/o设备来完成系统的虚拟化。
cpu虚拟化
x86硬件虚拟化的挑战
x86操作系统被设计成直接运行在硬件上,自然这些系统会认为它们拥有硬件的全部控制权。
如图4所示,x86架构为操作系统和应用程序提供了四个不同级别的权限来管理对硬件的访问,分别为ring0,1,2和3。
用户程序一般运行在ring3,操作系统需要直接访问内存和硬件,因此需要在ring0执行它的特权指令。
x86架构的虚拟化需要在操作系统(运行于最高权限的ring0)之下放置一个提供共享资源的虚拟化层来创建和管理虚拟机。
比较糟的是,有些敏感指令在非ring0下执行时具有不同的语义,因此不能很好地将其虚拟化。
在运行时陷入并翻译这些敏感指令和特权指令是一个艰难的挑战,这使得x86架构的虚拟化起初看起来是不可完成的任务。
vmware在1998年就攻克了这个挑战,开发了二进制翻译技术使得vmm运行在ring0以达到隔离和性能的要求,而将操作系统转移到比应用程序所在ring3权限高和比虚拟机监控器所在ring0权限低的用户级。
基于vmware20000多客户的安装使用情况以及所形成的广大合作伙伴生态系统,vmware使用二进制翻译的全虚拟化方案已经成为事实上的标准,总的来说业界还没有一个开放的标准来定义和管理虚拟化。
每个开发虚拟化解决方案的公司可以用不同的方式应对这个技术上的挑战,提供的解决方案良莠不齐。
正如以下阐述的,目前有三种技术来实现x86架构cpu敏感指令和特权指令的虚拟化,分别为:
.使用二进制翻译的全虚拟化;
.操作系统辅助或半虚拟化;
.硬件辅助的虚拟化(第一代);
技术1---使用二进制翻译的全虚拟化
使用二进制翻译和直接指令执行相结合的技术,vmware可以虚拟化任何基于x86的操作系统。
这种方法如图5所示,将内核代码翻译,以便使用一系列作用于虚拟化硬件可达到所需效果的新指令序列替换那些不可虚拟化的指令。
同时,用户级的代码直接运行在物理处理器上保证虚拟化的高性能。
虚拟机监控器为每个虚拟机提供类似于真实物理系统所具有的服务,如一个虚拟的bios,虚拟化设备和虚拟化的内存管理。
二进制翻译和直接指令执行相结合的全虚拟化使得虚拟机系统和底下的物理硬件彻底解耦。
虚拟机系统没有意识到它是被虚拟化的,因此不需要虚拟机系统做任何的修改。
全虚拟化是不需要硬件辅助或操作系统辅助来虚拟化敏感指令和特权指令的唯一方案。
hypervisor将操作系统的指令翻译并将结果缓存供之后使用,而用户级指令无需修改就运行,具有和物理机一样的执行速度。
全虚拟化为虚拟机提供最佳的隔离和安全性,使移植变得简单,因为同样的虚拟机系统可运行于虚拟化环境或真实物理硬件上。
vmware的虚拟化产品和微软的virtualserver是全虚拟化的例子。
技术2---操作系统辅助虚拟化或半虚拟化
para是源于希腊的英文词缀,意为“beside”、“with”、“alongside”。
就以“alongsidevirtualization”来说,半虚拟化指的是虚拟机系统和hypervisor通过交互来改善性能和效率。
如图6所示,半虚拟化涉及到修改操作系统内核来将不可虚拟化的指令替换为直接与虚拟化层交互的超级调用(hypercalls)。
hypervisor同样为其他关键的系统操作如内存管理、中断处理、计时等提供了超级调用接口。
半虚拟化和全虚拟化不一样,全虚拟化时未经修改的虚拟机系统不知道自身被虚拟化,系统敏感的调用陷入后再进行二进制翻译。
半虚拟化的价值在于更低的虚拟化代价,但是半虚拟化相对全虚拟化的性能优势根据不同的工作负载有很大差别。
半虚拟化不支持未经修改的操作系统(如windows2000/xp),因此它的兼容性和可移植性较差。
由于半虚拟化需要系统内核的深度修改,在生产环境中,半虚拟化在技术支持和维护上会有很大的问题。
开源的xen项目是半虚拟化的一个例子,它使用一个经过修改的linux内核来虚拟化处理器,而用另外一个定制的虚拟机系统的设备驱动来虚拟化i/o。
使用二进制翻译来实现虚拟化更复杂更困难,相对来说修改虚拟机系统较容易。
这些年来,vmware在自己的产品线中,以vmwaretools和经优化的虚拟设备驱动的方式使用了半虚拟化某些方面的技术。
vmwaretools为vmmhypervisor进行时间同步、日志服务、和关闭虚拟机等服务提供了一个后门。
vmxnet是一个半虚拟化的i/o设备驱动,它和hypervisor共享一些数据结构。
它通过利用宿主机设备的能力来获得更好的吞吐量和更低的cpu的使用量。
需要澄清的是,vmwaretools服务和vmxnet设备驱动并不是cpu半虚拟化方案,它们是小型的,非入侵式地安装在虚拟机系统中,不需要系统内核作修改。
从今往后,vmware也在帮助开发半虚拟化的linux版本,以支持概念验证和产品开发。
更多的信息见之后的页11。
技术3---硬件辅助的虚拟化
硬件厂商迅速拥抱虚拟化并开发出新的硬件特性来简化虚拟化技术。
第一代技术包括intel虚拟化技术(vt-x)和amd的amd-v,两者都针对特权指令为cpu添加了一个执行模式,vmm运行在ring0,同时在新增的根模式下。
如图7所示,特权和敏感调用自动陷入hypervisor,不再需要二进制翻译或半虚拟化。
虚拟机的状态保存在虚拟机控制结构(vmcs,vt-x)或虚拟机控制块(vmcb,amd-v)中。
带有vt和amd-v的处理器在2006年投入使用,因此新的系统才会带有这些硬件辅助特性。
由于hypervisor到虚拟机转换的高代价和僵化的编程模型,目前vmware的二进制翻译技术在很多情况下会比第一代硬性辅助的实现表现更好。
第一代硬件辅助虚拟化的实现中,僵化的编程模型使软件在管理hypervisor到虚拟机转换的频率和代价方面失去灵活性。
出于此,vmware仅使用了第一代硬件辅助的少数特性,例如在intel处理器上支持64位虚拟机。
内存虚拟化
除了cpu虚拟化之外,下一个关键的组件是内存虚拟化。
内存虚拟化涉及到对系统物理内存的共享和动态地为虚拟机分配内存。
内存虚拟化和当代操作系统对虚拟内存的支持类似。
应用程序看到的连续地址空间和底下真正的物理内存不一定是一一对应的。
操作系统保存了虚拟页号到物理页号的映射。
当前所有的x86cpu包含了一个内存管理单元(mmu)和一个旁路缓冲(tbl)以优化虚拟内存的性能。
为了在一个系统上运行多个虚拟机,还需要另外一层的内存虚拟化。
也就是说,mmu需要被虚拟化来支持虚拟机系统。
虚拟机系统还是控制着虚拟地址到虚拟机内存物理地址的映射,但虚拟机系统不能直接访问真实的机器内存。
vmm负责将虚拟机物理内存映射到真实的机器内存,并使用影子页表来加速映射过程。
如图8种标红线之处所示,vmm使用硬件中的tlb来直接映射虚拟内存到机器内存以避免每次访问时需要两级转换。
当虚拟机改变了虚拟内存到物理内存的映射时,vmm更新影子页表使得后续可以直接查找。
对于所有的虚拟化方案来说,mmu虚拟化都会带来一定的代价,这也是第二代硬件辅助虚拟化方案会改进的地方。
设备和i/o虚拟化
除了cpu和内存虚拟化之外,最后一个需要虚拟化的组件是设备和i/o虚拟化,这涉及到对虚拟设备和共享的物理设备之间的i/o请求路径的管理。
相对于直接访问(directpass-through)物理硬件的方法,基于软件的i/o虚拟化及管理具有更丰富的特性和更简化的管理方式。
以网络方面为例,虚拟网卡和虚拟交换机可以在虚拟机之间创建虚拟网络,而不需要消耗物理网络的带宽,网卡组合(nicteaming)使得多个物理网卡变成逻辑上的一块网卡,这对虚拟机来说,物理网卡的故障转移是透明的。
这样一来,虚拟机通过vmotion可以无缝地在不同系统之间迁移,并且保留已有的mac地址。
高效i/o虚拟化关键的一点就是要保留虚拟化的这些好处同时对cpu增加的消耗减到最少。
hypervisor虚拟化了物理硬件,为虚拟机呈现一系列标准的虚拟设备,如图9所示。
这些虚拟设备有效的模拟了所熟知的硬件并将虚拟机的请求翻译成对系统物理硬件的请求。
设备驱动的标准化也帮助了虚拟机的标准化并增加在不同平台间的可移植性,因为所有的虚拟机都配置成运行在虚拟硬件上,跟底下真实的系统物理硬件无关。
当前x86虚拟化技术的总结
vmware目前无论在生产环境还是开发实验室都使用了所有这些x86虚拟化技术,并在性能和功能特性之间做到最佳的平衡。
和虚拟化技术概观一节所描述的一起,图10中的对比总结有助于从更高层次去理解各种不同技术的优缺点。
二进制翻译的全虚拟化是当前最为成熟的技术
二进制翻译的全虚拟化是当前最为成熟和可靠的技术。
vmware在常见的windows和linux操作系统中的实现都具有最高的虚拟化性能、最健壮的特性集和最简易的管理方式。
除了64位的虚拟机以二进制翻译的方式运行于intelcpu上,vmware在生产环境中都支持全虚拟化和硬件辅助的虚拟化方案,可根据对性能的相对需求进行选择。
二进制翻译的全虚拟化在之后几年仍然是一项有用的技术,更新更快的硬件在性能上会继续比通过二进制翻译执行的未经修改的虚拟机系统具有更高的性能。
硬件辅助的虚拟化是虚拟化的未来,半虚拟化在性能上的优势将会减少。
硬件辅助是虚拟化的未来,它真正的优势还没发挥出来
intel和amd的第一代硬件辅助特性在2006年发布,是hypervisor可以不依赖于二进制翻译和os-assisted的处理器半虚拟化的第一步。
正如xen项目所展示的,早期的这些硬件辅助特性使得创建一个不依赖于二进制翻译和半虚拟化技术的hypervisor容易得多。
xen使用硬件辅助特性来虚拟化windows,但相较于vmware的二进制翻译和xen半虚拟化的linux,效率上打了不少折扣。
挑战在于,这些第一代硬件辅助的实现提供了一个僵化的编程模型,同时hypervisor到虚拟机的转换要付出高昂的代价,导致了硬件辅助的虚拟化比vmware的二进制翻译性能更低。
vmware跟合作伙伴intel和amd一起,为改善未来硬件的设计使得能更充分利用软件固有的灵活性来应对虚拟化挑战而努力。
第二代硬件辅助技术正在开发之中,它将对虚拟化系能有更大影响,同时降低内存的消耗代价。
amd和intel都公布了他们的开发路线图,包括硬件支持的内存虚拟化(amdnestedpagetables[npt]和intelextendedpagetables[ept]),以及硬件支持的设备和i/o虚拟化(intelvt-d,amdiommu)。
cpu密集型的工作负载在二进制翻译和直接指令执行的方式下已经可以运行得很好,但是npt/ept通过摒弃影子页表来减少对系统内存的消耗,将会获得明显的性能提升。
未来cpu的性能提升和虚拟化代价减少的期待是广泛使用硬件辅助特性的动力,但不要期待有什么革命性的改变。
随着处理器每年变得更快,每年处理器性能的提升似乎比未来硬件辅助优化对虚拟化容量和性能带来的影响更大。
随着时间的推移,可见到硬件辅助的虚拟化性能会超越处理器和内存半虚拟化的性能。
随着对cpu、内存和i/o设备进行硬件辅助开发,半虚拟化相对于硬件辅助虚拟化的性能优势将逐渐缩小。
随着硬件辅助特性的开发和成熟,hypervisorswillcommoditizeastheyincreasinglyleverageacommonsetofhardwareassistfeatures,但它们还会在性能、可管理性、功能特性上继续竞争。
xen的cpu半虚拟化带来性能提升却有维护代价
xen好像是把半虚拟化当作第二代虚拟化技术,而把vmware的全虚拟化技术当作第一代。
现实情况是,半虚拟化是一项老而有用的技术,对于某些工作负载确实提供了性能上的好处,但往往需要付出维护代价。
毫无疑问,要获得性能提升,需要在虚拟机系统安装虚拟化管理程序和设备驱动,但数据中心必须权衡减少虚拟化代价的优势和运行一个经过修改的虚拟机系统内核来使能半虚拟化所需要的支持维护成本。
性能优势还依赖于工作负载的特质。
大部分的工作负载获得很少的提升,不是所有的负载都能获得接近物理机的性能。
xen最大的挑战是处理器半虚拟化无法作用于未经修改的虚拟机系统,因此不适用于无法修改的虚拟机系统(如windows)和不需要修改的虚拟机系统(whensupportedversionsoflinuxarerequired)。
大部分的数据中心不愿意将业务应用运行在半虚拟化的第三方linux内核而这些内核又运行在开源的hypervisor上。
此外,入侵式的内核修改使得虚拟机系统和hypervisor在一些数据结构上紧耦合,阻止了修改后的虚拟机系统无法运行在其它的hypervisor或裸机上。
即使主流的linux发行版开始将半虚拟化功能捆绑到操作系统内核,部署半虚拟化的系统会增加维护成本和减少可移植性。
不少公司发现xen的linux半虚拟化方案不适合企业应用,一些新的xen系的虚拟化厂商则完全抛弃了linux半虚拟化。
例如,virtualiron宣称半虚拟化是个“穷途末路的方法(dead-endapproach2)”,而集中精力在基于硬件辅助的使用未经修改虚拟机系统的全虚拟化技术。
这给xen带来了第二个竞争挑战。
xen3.x只引入了硬件辅助使用未经修改虚拟机系统的全虚拟化支持。
vmware的二进制翻译比使用第一代硬件辅助的xen复杂很多,性能更高,xen厂商在整体的性能、可靠性、易于管理方面还无法跟vmware竞争。
那些没有完全放弃处理器半虚拟化的厂商经常迷惑试听,暗示他们的linux半虚拟化性能比基于硬件辅助虚拟化使用未经修改的虚拟机系统性能好。
需要明确的是,vmware发现处理器半虚拟化对现今的某些工作负载来说确实能很大地提升性能,但当第二代硬件辅助特性发布时,这种性能好处是否会保持则难以预测。
性能的差异或许会减少、消除甚至扩大,因为半虚拟化的接口也许会有新的改进。
这是个开放的问题。
在vmware看来,处理器半虚拟化最大的问题在于它需要修改虚拟机操作系统,这使得虚拟机系统的运行依赖于特定的hypervisor。
例如,xen接口实现的深度半虚拟化对hypervisor有很强的依赖性。
虚拟机操作系统和hypervisor实现的数据结构有强耦合。
xen的linux内核不能运行在裸机或其它的hypervisor上,这带来了不兼容性,使kernel的发布和需要维护的版本数增加了2倍。
另外,对新的开源操纵系统来说有限制,因为对虚拟机操作系统的修改需要操作系统厂商的支持。
最后,对hypervisor的强依赖性阻碍了内核的独立进化。
vmware的透明半虚拟化平衡了性能好处和维护成本
xen的半虚拟化实现对linux内核进行入侵式修改,vmware围绕标准接口来获得os辅助的半虚拟化性能上的好处同时减轻维护成本。
vmware于2005年提出透明半虚拟化接口vmi(virtualmachineinterface),作为虚拟机操作系统和hypervisor之间标准的通信机制。
如图11所示,vmi是位于hypervisor和半虚拟化虚拟机系统之间的一层。
透明半虚拟化实现中,同样的虚拟机操作系统可以运行在裸机上、在虚拟化环境中或其它任何兼容的hypervisor中。
所有的vmi调用有两种实现,一种是为裸机准备的内联原生指令,另一种是在虚拟机中间接调用到虚拟机os和hypervisor之间的vmi层。
两种实现都做到了高性能。
vmi的版本控制使得hypervisor和虚拟机系统的发展相互独立,这就获得了可维护性和可扩展性。
vmi层支持hypervisor的多样性,因为vmi-linux运行时可使用xenhypervisor中一个合适的间接层。
对可移植性,后续的一个linux版本已经被移植到vmi接口。
vmware继续和linux社区合作开发半虚拟化接口来支持不同的hypervisor。
vmware在2006年发布了vmi规范,在ottawalinuxsymposium的vmi提议促成了paravirt-ops接口在linux社区的开发。
paravirt-ops接口合并了vmi的多个概念,包括对透明半虚拟化的支持,是由一个联合小组开发,成员来自包括ibm、vmware、rethat和xensource。
使用这个接口,半虚拟化的linux操作系统可以运行在任何支持该接口的hypervisor上。
vmware发力在虚拟机系统的paravirt-ops接口开发,这些接口使用vmi接口调用hypervisor,paravirt-ops从linux内核2.6.20版本开始成为内核的一部分。
在linux2.6.22版本中,包含了用来补充paravirt-ops接口的vmibackend。
有了这个规范,linux系统发行方和isv可支持单个含有半虚拟化的内核镜像,同时获得性能好处和可管理性。
这使得处理器半虚拟化的兼容性有机会得到改善。
为获得反馈和评估,vmware在workstation6中包含了支持试验的vmi功能,即在宿主环境中支持操作系统的半虚拟化。
这个workstation发布版提供了2005年就和linux社区讨论的透明半虚拟化接口。
你可以下载一个功能齐全的支持半虚拟化接口的vmwareplayer虚拟机监控器,和一个流行的支持半虚拟化的linux内核。
vmwareplayer和workstation中的这个试验支持目标受众是那些希望评估vmware半虚拟化技术的开发者。
由于这个试验是在宿主架构模式中,因此不宜用来评估半虚拟化的i/o性能改善,不过它可以用来评估cpu密集型工作负载的性能改善。
后续的实现将是在裸机hypervisor架构下,如vmwareesxserver,会展示半虚拟化带来的cpu和i/o系能改善。
vmware计划对半虚拟化操作系统添加支持,因为这些系统在商用的虚拟化平台设施中被采用了。
vmware正在促进虚拟化的开放标准
在过去的几年中,vmware和一些领头的技术厂商合作来定义虚拟化的开放标准。
作为最初的一步,vmware贡献了自己现有的框架和api,以中立的方式帮助开发这些业界标准。
vmware之所以提出这些开放接口和格式,是因为技术界最为成功的接口和格式是基于客户实际的部署标准。
7年多来,vmware的技术被广泛部署从而获得了很多现实世界的经验。
任何一个行业,开放接口和格式被证明是产品被广泛采用的一个保证,虚拟化也不例外。
虽然今天虚拟化的势头很猛,但它还处于早期阶段。
vmware采取这一步来带动虚拟化的增长,加速客户解决方案的交付最终形成虚拟化技术的广泛采用。
vmware采取这一步骤还因为合作伙伴和客户的需求。
使用不同虚拟化方案的产品在不断地增加,只要虚拟化解决方案兼容,客户就可以进行更大范围的访问从而受益。
开放接口和格式对业界的好处是,它促进虚拟化生态系统中厂商的合作和创新并为大家扩大了市场机会。
vmware提供了以下开放接口和格式:
.虚拟机接口---hypervisor和虚拟机之间的apis
.管理接口---针对单个虚拟机环境和高度动态的、数据中心规模的虚拟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 虚拟 例子