虚拟机平台(精选十篇)
虚拟机平台 篇1
近年来,随着消费类电子产业的高速发展,日益增长的嵌入式技术已经不能满足人们对嵌入式产品功能和性能的需求[1]。虚拟机技术的产生加速了嵌入式应用领域的发展。嵌入式系统虚拟机可以在单芯片的硬件平台上模拟多芯片的运行,允许一个平台同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响,从而显著地提高设备的工作效率,缩短应用软件的开发周期,并且减少系统工作的芯片数量和企业的开发成本[2,3]。
随着硬件平台性能的不断提升,虚拟机被广泛地引入到嵌入式系统中。通过构建嵌入式系统虚拟机,可以保证通用操作系统和实时操作系统的并行运行。虚拟机可以看成一个虚拟的硬件系统,该系统将一个真实的嵌入式CPU虚拟成两个虚拟的CPU,两个虚拟CPU上可以分别运行一个分时操作系统和一个(硬)实时操作系统(如图1)[4]。
系统虚拟机的目的是在物理硬件和操作系统之间建立一层硬件抽象层,它将底层的物理硬件结构进行封装,在操作系统移植过程中,操作系统就不需要了解底层物理信息,直接调用相应的软件接口就可以完成相应的服务请求或设备配置[5]。
本文提出了一种基于Hopen虚拟机在Android手机平台上实现双操作系统之间数据交互的解决方案——虚拟管道(Virtual Pipe,Vpipe)以及NVM参数存取。
2 虚拟管道
虚拟管道指在Android手机虚拟机平台中实现基带子系统(RTOS)和应用子系统(Linux)之间数据交互的通道(如图2)。主要功能是:读写数据(包括命令、状态、控制数据等),在单CPU上完成双操作系统间的信息传递等。
虚拟机提供32个双向虚拟管道来实现双操作系统的通信。每个虚拟管道都有对应的ID号,并且都可以分别指定各个方向缓存的大小。所有Vpipe共享一个Vpipe中断,使用中断状态位来快速判断哪一个Vpipe有中断产生。
Vpipe包括输入缓存和输出缓存两种缓存机制,并且必须在管道启动前写入相应的寄存器中。需要对Vpipe进行数据操作时,先将数据的地址写入到地址寄存器中,然后将字节数和操作指令写入到指令寄存器中。
每个Vpipe工作的3种数据传输方式:
1)字节流管道:管道中传输的是字节流,不区分数据包的边界。发送方一次发送的数据可能被接收方分若干次取出,发送方多次发送的数据也可能被合并,从而被接收方一次取出。
2)定长数据包管道:管道中传输的是固定长度的数据包。发送方每次只能发送一个数据包,接收方每次只能接收一个数据包。
3)指针管道:管道中传输的是指针而不是数据内容。发送方每次只能发送一个指针,接收方每次只能接收一个指针。
2.1 通信机制
目前只实现了往Vpipe里面读写数据的功能,管道通过Buffer来进行数据的存储,分为Vpipe_Outbuf和Vpipe_Inbuf。在上下行数据传输的过程中尽量减少数据的拷贝:基带到Android只有一次拷贝,Android到基带没有数据拷贝。
虚拟管道中参数:Command(命令);Status(状态);Data(参数)。
通信过程中,Linux组装好数据(主要包括AT指令、PSCS数据、URC、NV参数等)发送到Vpipe,并一直查询,等待状态完成。
RTOS从Vpipe中获取Linux发送过来的数据并进行处理,处理完成后,需要先更新Status(操作成功,返回Success;否则,返回Fail);再根据命令的类型,有必要时也要更新Data;之后再更新Command;最后,通过Vpipe向Linux返回数据。
2.2 多通道并发功能
以前的通信过程是:Android通过Vpipe发送AT指令到基带,Vpipe接收到AT指令后通过区分不同的数据类型进行函数封装,然后给Android返回“OK”,Android收到“OK”后才能进行下一条AT指令的发送。
现在需要解决的问题:当Android给基带发送AT指令后,还没有收到“OK”响应又发送了一条或者多条AT指令,这样从基带返回的“OK”就有多个,Android如何区分返回的“OK”具体对应于哪条AT指令。解决方案:通过在AT指令前面增加一个byte的AT标识来区分不同的AT指令。
AT指令格式如图3所示。
Android和基带之间AT指令的传输方式主要有并行传输和串行传输。并行传输:采用MUX标准协议,但是上下层目前都还没有实现,所以不考虑这种方式。串行传输:适用于AT指令的数据量较小且传输不是很频繁的情况。由于目前应用层采用的是串行传输方式,所以选择串行传输方式。
Android读写AT指令的方式主要有同步读写和异步读写。异步读写:要在请求函数中实现状态机,并且需要修改当前应用子系统的超时机制,改动较大。同步读写:当前应用层是通过线程信号来同步读写,为了实现并发,要根据上层可能发起的业务类型创建多个请求线程,同时往AT命令管道写数据,当线程收到AT的返回后,根据自定义数据中的标志返回给对应的请求线程。
综上两方面的考虑,采用串行传输AT指令、多请求线程、同步读写AT指令的方式来实现并发。
3 Android手机VM平台NVM参数存取方案
在Android手机方案中,NVM参数仅在基带内部使用,即虚拟机中的RTOS侧使用,Linux不需要NVM参数。但NVM参数存放在Flash中,而Flash硬件的控制权又放于Linux中。所以,要实现基带对NVM数据的存取,又不违背Flash硬件由Linux控制的原则,必须设计一套方案来实现基带通过与Linux进行必要的交互,完成NVM数据的存取。
3.1 NVM数据存储方案
NVM数据分为两块,一块为Static参数(7 k),主要记录产品固定参数,出厂后不会再修改,但调试阶段需要通过工程模式进行修改;一块为Dynamic参数(2 k),用于记录设备工作过程中必须记录的信息,如当前小区相关信息,需要能够在设备运行过程中进行动态保存。
该方案直接使用Android的Flash Yaffs文件系统,将其值保存到两个特定文件中。这样带来的好处为:Android将数据维护交给Yaffs文件系统,不用担心坏块处理;NV文件更新方便,不需要使用工具烧写,直接通过Android的文件系统通道就可以进行NV文件更换。两个系统之间的数据交换使用Share Memory的方法,通知机制使用Vpipe。Init Process在启动基带之前就将NV文件中的数据读出写入到Share Memory中,在正常工作过程中,Init Process接收到Driver的Uevent后将Share Memory数据写入到文件系统对应文件中。具体流程如图4所示。
3.2 模块交互流程
模块之间的交互流程如图5所示。在Android系统启动以后,首先启动Init Process,通过Android侧的Vpipe Driver将Share Memory映射到用户空间;然后将读取文件系统中的NV文件数据写入Share Memory;接着Android系统启动基带软件。
当基带侧的NV Daemon Task需要将数据存入Flash时,通过RTOS侧的Vpipe发送Request,携带信息需要指明更新Static NV还是Dynamic NV;Linux侧的Vpipe Driver收到数据后发送Uevent到Init Process,根据请求读取Share Memory数据写入文件系统;完成后再通过Vpipe反馈ACK到基带,NVM Daemon Task就完成一次写操作。
3.3 NVM Share Memory
将DDR中一段区域(2 k+7 k,但要保证是4 k的整数倍,即必须分配12 k)固定指定为NV Share Memory,考虑到NV的数据交互不会很频繁,可以使该区域不开启Dchache,所以将其地址空间类型指定为设备空间,虚实地址映射固定,从而方便两侧直接使用。
共享内存必须考虑冲突的情况。在开机NV Daemon Thread第一次向Share Memory写数据时,此时基带还没有加载,那么此时Memory一定是独占的,这时没有冲突。在接下来的流程中,Linux侧只会去读Memory,RTOS侧只会去写Memory。当RTOS在任务中写Share Memory时,由于VM虚拟机保证RTOS任务的优先级高于Linux进程,所以整个过程都不会发生Daemon Thread读动作,因此RTOS的写流程一定是安全的。但当Linux在读取时,RTOS可以打断这个流程发起新的写入Memory过程,导致最后Linux读取前后不一致的数据写入到了NV文件中。所以,这里必须有机制进行保护。
本方案提出的方法是:RTOS NVM Daemon Task向Linux侧通过Vpipe发送请求以后,还必须关注响应,任务不需要等待,只需一次向Memory写入,可以放弃CPU,等待一段时间再判断。NV写入对实时性要求不高,此处的延时可以接受。
3.4 NV文件备份
为了应对Linux系统中对NV文件写入过程掉电导致Flash上的文件损坏的情况,在Android文件系统内部维护4个NV bin文件,其中Static_nv_bak.bin与Dynamic_nv_bak.bin用于存放默认配置,这两个文件永不写入;Static_nv.bin与Dynamic_nv.bin用于实时记录。在NV数据的结构体中用一个U16的字段来记录数据的CRC校验值,当读取NV文件发现该校验值不对时,读取备份的NV文件并提供给基带。同时,在基带内部也有一套默认配置(与Android文件系统中的备份文件内容一致),当基带从Android获取的数据校验不正确时,基带使用自己的默认NV参数。
4 测试分析及结果
本方案的提出,解决了AT命令并发和NVM参数的存储带来的问题。采用串行传输和同步读写,提高了AT命令的处理效率,并且减少了时延。NVM数据存储方案的提出,提高了NVM的读写速率,直接通过文件系统就可以快速地进行NV文件的更换。
AT并行处理流程的调试结果:Android组装AT命令(0x06:AT标志;0x41542B4353510D:AT指令)并写入到Vpipe(如图6);通过中断的方式触发基带Vpipe驱动去读取AT指令,在MCD适配层进行记录AT标志并且去AT标志,然后发送到协议栈(如图7);协议栈收到AT指令后,返回“OK”,发送到MCD,再由MCD进行AT标志的填充,发送给Vpipe,最后发送到Android。
NVM数据存储方案的调试结果(如图8):基带通过与Android交互实现对NVM参数的存取,此过程是通过Vpipe完成对Share Memory的操作。
5 小结
本文通过引入虚拟管道技术,提出了高效的NV参数存取方案。虚拟管道技术,实现了Android和Nucleus的信息交互,包括AT指令、PSCS数据、URC数据等,完成了基带和应用之间的一系列数据的交互。NV参数存取方案的提出,实现了基带对NVM数据的存取,实现了基带通过与Linux进行必要的交互,完成NVM数据的存取。
该方案的提出为实现单芯片上运行双操作系统的嵌入式系统提供了很好的解决方案,具有很好的应用价值。
摘要:论述了Android手机虚拟机平台上双操作系统之间通过虚拟管道(Vpipe)实现通信的过程。为了满足用户对高性能移动终端的需求,提出了一种可靠性强、效率高的虚拟管道以实现移动终端上双操作系统通信功能的技术方案。该方案的难点在于NV数据的存储、管道的设计以及采用多通道的方式,保证操作系统之间数据的正确交互。
关键词:Android,虚拟机,虚拟管道,NV数据,多通道
参考文献
[1]英特尔开源软件技术中心,复旦大学并行处理研究所.系统虚拟化原理与实现[M].北京:清华大学出版社,2009.
[2]张易知,徐国治.基于微内核架构的嵌入式系统虚拟化技术[J].电子产品世界,2009(4):47-49.
[3]MARTIN A,FLAKE J.嵌入式系统软件调试跟踪技术的发展趋势[J].电子设计应用,2005(7):16-18.
[4]崔烨.基于Linux平台的智能手机软件设计与实现[D].成都:电子科技大学,2007.
物理机连接虚拟机数据库 篇2
虚拟机ip
现在物理机和虚拟机应该就能相互通信了
第二步:加载配置文件找到虚拟机数据库配置文件tnsnames.ora..oracleproduct10.1.0Db_1NETWORKADMIN
复制里面的配置文件加到物理机的数据库连接配置文件,
物理机连接虚拟机数据库
,
具体操作如下:打开plsql,help ->support info
复制这个目录在计算机打开,把虚拟机的数据库配置文件加进去。
虚拟机平台 篇3
关键词:虚拟机 CPU C++
中图分类号:G4 文献标识码:A 文章编号:1673-9795(2013)02(b)-0181-01
虚拟机发展到今天已经有几十年的历史了,在很长一段时间内虚拟机技术完全没有引起人们的足够重视,但最近几年在计算机工程应用领域范围内,随着计算机性能的不断增强,计算机能力的不断增加,人们对传统的虚拟机技术的研究重新成为计算机领域的热点。
1 小型虚拟机软件系统ICU的基本环境设置
1.1 64位CPU平臺设计
本文将要设计的虚拟CPU环境包括23个64位寄存器和5个32位寄存器。将其分为以下几大类:
3个段寄存器($CC、$DD、$VV);
3个指针寄存器($SS、$PS、$JS);
12个通用型整数寄存器($T1-$T12);
5个双精度IEEE754浮点寄存器($S1-$S5);
5个单精度IEEE754浮点寄存器($D1-$D5);
以下是用C++语言描述的小型虚拟机软件系统ICU的CPU环境的内部结构:
Public://定义一个共有类型变量
Struct ICUprocessor{
ICU_W BB;//定义一个累加器BB
ICU_W SI;//定义一个堆栈指针SI
ICU_W CC;//定义一个保存代码段开始的段寄存器CC
ICU_W DD;//定义一个保存数据堆段开始地址的段寄存器DD
ICU_W VV;// 定义一个保存堆栈段开始地址的段寄存器VV
ICU_W ZZ;//定义一个变址寄存器ZZ
ICU_W IR;//定义一个指令寄存器IR
ICU_W PC;//定义一个程序计数器PC
ICU_W SS;//定义一个基址指针SS
BOOL A,B,C;//定义一个标志寄存器ABC保存指令操作的结果状态
ICUprocessor cpu;//小型虚拟机软件系统ICU的中央处理器
在以上程序中ICU_W是定义的一个字类型。小型虚拟机软件系统ICU包括一个累加器BB,一个堆栈指针SI,一个用于记录代码段起始地址的段寄存器CC,一个用来保存数据堆段起始地址的段寄存器DD,一个用于保存堆栈段起始地址的段寄存器VV,一个变址寄存器ZZ,一个指令寄存器IR,一个程序计数器PC,一个基址指针SS,一个标志寄存器ABC,用来保存当前指令操作的结果状态。64位寄存器$T1到$T12用来存放整数值。32位寄存器$D1到$D5用来存放单精度IEEE754浮点数。64位寄存器$S1到$S5用来存放双精度IEEE754浮点数。
1.2 CPU平台的栈设计的特点
由于堆栈在处理函数调用方面有着很高的效率、在解决递归问题上也相当的简单明了、在切换上下文时开销也比较小等优点,所以决定建立一个堆栈,将堆栈段设置为虚拟机地址空间最顶部的那个内存段,用来支持以后所有的操作。
2 虚拟机CPU平台的核心模块的实现
小型虚拟机软件系统ICU实际上是一个程序,由于在堆设计与实现过程中内存的分配和释放存在内存泄露问题和悬空指针等等诸多问题,急需解决。针对这种情况,我将采取的研究方法是使用一种基于顺序匹配算法的最先匹配算法对内存进行分配和回收。所谓顺序匹配算法既是允许内存以可变的尺寸进行分配和回收。这种解决办法的关键是需要使用某种数据类型的链接列表来跟踪数据堆里的已经分配和没有分配的内存块。这是因为链接列表这种数据结构只关心内存块的起始位置和结束位置,所以无论从数据结构的大小还是从搜索时间等等方面来讲,它对性能的影响会小很多。最先匹配算法既是把第一个尺寸足够大的可用内存块分配给最先提出请求的程序段。
当小型虚拟机软件系统ICU程序成功正确的启动时,首先开始执行的是保存在字节码里的可执行文件里的指令。这些字节码可执行文件是一种二进制的文件,在启动ICU前在命令行上要先给出一个正确的字节码可执行文件名,这样才能保证ICU成功正常的运行。字节码可执行文件里主要是一些字节长度和指令,小型虚拟机软件系统明确知道这些字节码指令的作用,程序开始工作后,ICU将不断的从存储器里将字节码文件里的指令加载到已经开辟出来的内存空间里,然后开始执行这些指令。
小型虚拟机软件系统ICU的生命周期可以划分为五个阶段。第一阶段建立系统的出错日志;第二阶段处理命令行数据;第三阶段构造虚拟CPU环境;第四阶段字节码的验证阶段;第五阶段执行指令阶段。这五个阶段的组织形式是按顺序发生的。当虚拟机在命令行上成功启动后,小型虚拟机软件系统就已经进入到它自己的第一个阶段建立系统的出错日志,然后进入第二阶段在命令行处理数据,如果一切正确,就会进入到第三个阶段也就是成功的建立起虚拟CPU的基本执行环境,然后进入第四阶段对字节码进行验证的阶段。当字节码指令全部通过验证检查之后,真正的执行阶段就开始了。执行阶段位于小型虚拟机软件系统生命周期中的最后一个阶段。虚拟机不断连续地执行字节码指令,直到处理完所有的指令和数据或者是遇到极其严重的问题后方能截止。和C++语言写成的绝大多数程序一样,小型虚拟机软件系统ICU的基本操作是从main函数开始执行的,小型虚拟机软件系统生命周期中的五个阶段将通过这个函数来启动和执行。以下为main函数主体。
Void main(int grac,char *grav[])
{
Struct cmdline aq;
/*开始建立出错日志*/
Setuperrorfile();
……
/*处理命令行数据*/
Dbg_maino(invoking handlearguments()\n);
C1=handlergrments(grac,grav);
……
/*初始化虚拟环境*/
Dbg_maino(invoking initICU()\n);
……
/*字节码验证*/
Dbg_maino(invoking reformat()\n);
……
/*执行指令*/
Dbg_maino(invoking run()\n);
……
}/*end main*/
综上所述,小型虚拟机软件系统ICU的核心模块的设计与分析基本全部完成,我的大致设计理念就是用C++语言实现虚拟CPU平台的核心模块的设计与实现,主要包括虚拟寄存器的实现。对虚拟机的一些关键技术进行了探讨和研究。
参考文献
[1]Bill Blunden.虚拟机的设计与实现[M].机械工业出版社,2003.
分析Java平台的核心——虚拟机 篇4
随着信息时代的全面到来,Java技术得到了越来越广泛的应用,尤其是在服务器程序中,其更是有了大展拳脚的空间,Internet的普及为Java的大规模使用创造了十分有利的外部需求。作为一种编程语言,Java并不仅仅是一种跨平台的语言,其更是作为一种新的容纳了诸多相关技术手段的网络计算平台,Java技术可以为同一种应用在不同平台上的顺利运行创造出积极的条件,虚拟机作为Java平台的核心,在保证其顺利运行中扮演着举足轻重的角色,了解它可以为更加全面的掌握Java技术提供有力的智力保证。
1 虚拟机介绍
Java作为一种新兴的网络计算平台,其自身包含着诸多与其相关的技术。举例说明,该平台拥有适应开放接口规定的各类API、优化技术等等。组成Java平台的有两大部分,分别是Java虚拟机以及Java API类库。业内人士都知道JVM,也就是虚拟机在Java平台结构中,是扮演着核心的角色,它在移植接口的上端,组成移植接口的为两大部分,这其中依靠平台才能顺利运行的部分被叫做适配器,虚拟机利用移植接口在不同的平台以及操作系统上完成自身功能。虚拟机位于Java基本类库以及API的下部。通过Java API可以编写出不同的应用程序以及小程序,为实现Java平台在不同环境的顺利运行提供了必要保障工作。
2 Java 虚拟机的运行过程
Kaffe是一个虚拟机以及类库的实现,该种实现使用的形式为开放源代码。在计算机操作系统中,无论是哪一种形式的Java程序全部是由数目不同的类构成,在这些类中,主类是只有一个。源程序属于一个被称之为.java的文件,在对其进行编译后可以产生数目不同的.class文件。决定class文件数目多少的影响因素为程序中类的数目。
在具体运行中,一旦虚拟机执行某个特定程序,其流程如下:第一,先将主类的main方法作为开端。因此便不难理解为什么虚拟机运行过程中,要给出的总是主类的名称。该步骤完成后,虚拟机便可以依照用户所给出的名字依据系统先前设置的class路径一步步的找寻该类,并实时相应的装载、链接、初始化等任务,倘若经过搜索无法找到该类,虚拟机将自动报告错误并退出程序。与此同时,鉴于一个类初始化之前其归属的父类也会被相应的初始化,一个类进行初始化操作时有可能会造成其他类也被初始化。初始操作完成后,虚拟机便会搜索主类的main方法,同时依据用户为main方法提供的参数进行操作,完成该步操作之后,虚拟机就会卸载当前线程并执行退出操作,这时整个程序的执行过程就完成了。main函数的执行流程如图1所示。
用户在虚拟机系统中可以自己完成环境参数设定的工作,举例说明,用户能够通过命令执行kaffe version的方法获取该虚拟机相应的版本号,也可以选择使用kaf f mx设置堆栈的最大容量。运行过程中所涉及到的其他参数利用help便可以相应的获得。倘若在该种形式下,虚拟机程序在具体运行时候首先需要做的就是对用户的参数进行设定,完成此项操作之后才会执行相应的程序。然而,在线时运行中,对main程序的设置是一项十分复杂的工程,所耗时间长,这是导致虚拟机工作效率不高的核心问题。
3 Java 虚拟机的关键技术
3.1 字节码执行方法
最初产生的Java虚拟机字节码执行选择的方法为解释执行,该种操作手段效率十分低下,但是虚拟机自身拥有着很好的可移植性,随着技术的不断创新,字节码的执行方法也得到了不断地更新,现今使用最普遍的方式为即时编译的方法。换句话说就是操作人员将Java的字节码动态编译,转化为本地的机器码,大大提高了工作效率。一个编译质量高的即时编译效果甚至可以与C语言静态编译的结果相近。需要注意的是,即时编译存在有一个缺陷,那就是其不论是执行何种方法操作,必须首先对该方法进行编译,将其转化为本地代码,这就在内存上要求必须安排专门的空间存放编译后的本地代码。因此,在具体操作中,针对程序中并不频繁会执行的方法,它并没有多大的优势,反而是最初的解释执行更具有可操作性。判断即时编译效果如何的标准分为三个方面,分别是编译的代码质量、编译的代码大小以及编译所耗费的时间多少。自适应优化属于字节码执行的第三种手段,从实质上讲,其属于混合执行。该种方式在首次调用一种方法时,操作者第一步选择使用解释执行的方法,一旦该方法运用的次数达到成为“热点”方法的标准后,操作人员将相应的将此种编译转换为本地代码,如果使用该方法将实现直接执行编译后的本地代码进行呈现。
3.2 自动内存管理
自动内存管理又被称之为垃圾收集,它的功能是将没有用处的单元内存空间进行自动回收,从而对内存空间进行一定程度的释放,降低Java虚拟机智能管理中所需要负担的应用压力,保证Java应用程序的内存不会泄露。垃圾收集算法效果的评价参考两个指标:吞吐量以及停顿时间。吞吐量指的是在电子计算机程序正常运行中,非垃圾收集所占的时间与整个应用程序能够顺利运行所需要时间的比值,所得的数值越大,垃圾收集算法等工作效率就越高。停顿时间指的是收集内存垃圾引起应用程序暂时停顿所需要的时间。衡量其的标准并不是简单的一两个,而是由许多指标,举例说明:系统每次垃圾收集所造成的应用程序停顿时间、总的停顿时间等。通常情况下,每次垃圾收集的停顿时间越稳定且数值很小,那么该算法的可预测性就更好,实时性也有不错的保障。
4 结语
Java本身是一种解释型语言,一条一条的对字节码进行解释的过程是需要耗费一定时间的,这就导致其工作效率并不高,本文通过对虚拟机的运行过程以及关键技术的介绍,指出其运行过程中所涉及到的不同步骤以及运行过程中所需要的技术支持,希望相关研究者在进行研究时,为提高运行效率找到必要的参考,以便为寻找出更加科学的办法为提高虚拟机的运行速度以及性能做出有益的文献支持。
摘要:本文通过对Java平台的核心—虚拟机的介绍,使读者对其有初步的认知后,对其运行过程进行进一步的分析,指出在运行过程中关系其性能情况的关键技术,希望为相关人员更加全面的了解虚拟机,提供有益的文献参考。
了解虚拟机的极限 篇5
在虚拟机中,软件佯装是硬件。因而,你可以将“计算机”装入到虚拟机应用程序中,正如你可以将文档装入到文字处理程序中那样。我正是通过虚拟机,截取了这个致命蓝屏画面。
我可以推荐两个不同的都是免费的虚拟机应用程序。两者当中较容易的是VMware Player,这是一款功能极其强大、成本极其高昂的工具的精简版,如果你刚开始学用虚拟机,这款程序尤其值得推荐。
甲骨文公司的VirtualBox能够处理更多任务;其使用的快照功能大大简化了测试工作,而且它在从外部介质启动方面要快捷得多。不过我觉得它用起来比较棘手。
但是你一定要明白虚拟机并非虚拟天堂。它们带来了各种各样的问题。
不妨先说说最明显的局限性:虚拟机的功能从来不会比运行它的真实物理机还要强大。虚拟机总是运行速度较慢,物理内存容量较小,图形功能较弱,存储空间较小。你可以将虚拟机塞入到物理机,但无法将物理机塞入到虚拟机。
另外还有其他不太明显的问题。举例说,虚拟机不会与其他一切都在同一个网络上。没错,你可以设置虚拟机,以便通过局域网共享文件——这个过程需要在虚拟机中安装特殊软件,但是设置起来可能问题重重。有时候,这根本行不通。
幸好,至少从本人的经历来看,连接上网从来不是个问题。
如果某个机器在现实世界中不存在,它可能没有任何USB端口,因而很难插入闪驱。当然,你可以将驱动器插入到真实的物理机(名为主机)。但是随后主机控制了驱动器,需要几个步骤和一番等待,才能将驱动器“连接到”虚拟机。这一招也并非总是行得通。
我经常在虚拟机中进行大量的软件测试。但是我最后不得不放弃,改而在真实物理机上进行测试并不罕见。毕竟,物理机的运行速度更快,问题更少。
另一个问题是:除非你在虚拟机中运行Linux,否则就得为虚拟机购买另一份Windows。
-沈建苗编译
如何安全地移除USB驱动器?
Windows并不总是允许你安全地移除闪驱或外部硬驱。如果你从一台正在使用中的电脑移除外部驱动器,无异于自找麻烦。因为这会丢失文件,导致应用程序崩溃,甚至是搞坏电脑上的一切,但是安全移除并非总是来得那么容易。
Windows的内置解决方案通常很管用:点击通知区域(即系统托盘)的Safely Remove Hardware(安全移除硬件)图标,选择相应驱动器即可。如果你看到Safe To Remove Hardware(安全地移除硬件)这个信息,就可以安全地移除硬件了。
但有时候,上面这个方法不够好,而且Windows也不会告诉你什么在使用该设备。要是没有这方面的信息,就很难知道如何解决这个问题。
只要关闭电脑——不是让电脑处于休眠或睡眠模式,而是完全关机。这一招总是管用,但要花点时间,还会影响你在处理的工作。
另一个更简单的办法是:注销后登录,然后再试一下。这比完全关机后重启来得快捷,还有可能关闭可能引起问题的任何进程。不过这一招仍要花点时间。这就是为什么我偏爱Unlocker的缘故。它的目的是让你释放Windows不允许你删除的文件,还有助于释放外部驱动器。Unlocker不需要花一分钱,但鼓励你捐款5美元。下载并安装该程序。然后,下一次Windows显示“设备目前在使用中”时,鼠标右击驱动器,然后选择Unlocker。该程序会显示哪个进程或哪些进程在导致这个问题。
它还会给出解决方案,可以终结一个或若干进程,不过这会导致Windows运行不稳定。它还可以试着将文件从一个或所有进程释放出来,又不终结进程。我偏爱的解决办法并不出现在Unlocker菜单上。一旦你知道了什么进程导致这个问题,通常就能弄清楚需要关闭哪个应用程序——它们通常有一样的名称。所以,你只要手动关闭那个应用程序,保持所有相关的文件,然后再次使用Safely Remove Hardware(安全移除硬件)图标即可。
-沈建苗编译
面向校园云平台的虚拟机调度机制 篇6
随着教育改革不断深化,信息化技术迅速发展,高校的信息化建设已成为国内外高校现代化建设的重要内容。而当前高校信息化现状是数据中心大多数是以服务器和SAN存储连接方式为基础,一个应用系统部署在一个服务器上,比如应用服务器、数据库服务器等。这样出现了以下情况:第一,高校二级单位信息化建设规模不断扩大,计算机应用服务也随之增加,具体应用依赖独立的实验室设施,投入了大量资金,形成一个个实验室设备孤岛;第二,实验室项目的扩大以及数字化教学的需求导致投入大量资金购买服务器等设备,但这些设备利用率较低,造成了严重的资源浪费。
将云计算技术应用在校园,即校园云的兴起旨在利用云计算的资源池化、按需分配等技术来求解上述问题。例如文献[1]为满足大学校园日益增长的计算需求和用户需求,设计了一套基于Open Stack的开发云平台,达到了弹性计算的要求;文献[2]提出了校园云平台成本效用函数,建立了马尔科夫链模型来分析负载均衡策略和贪心策略。各高校也相继建起了校园云平台,如东南大学[3]、清华大学[4]等。校园云平台主要是利用虚拟化技术整合、虚拟物理资源,实现对计算资源的动态调配和按需使用。校园云平台包含教学、科研两类应用。科研应用呈现不可预知性、非周期性等特点,与传统应用类似;而教学应用具有周期性、可预测性、批量性等特点,例如Linux上机实验课需要为每个学生分配一台虚拟机,并且在第1~10周,每周二的5、6节课上课时间内使用。但是实践表明,实际应用中资源利用率仍然较低。分析原因可知,当前虚拟机调度机制为传统调度方法,主要分为基于实时的调度与基于负载预测的调度两类。若采用基于实时的调度方法,当上课期间出现过载情况时才会进行调度迁移,而迁移需要消耗较大的带宽资源并且时间较长,势必会影响上课质量;若采用基于负载预测的调度方法,对于新申请的课程虚拟机资源,没有历史运行数据,无法进行正确预测。所以核心问题在于当前的虚拟机调度机制未考虑校园教学应用的特征,不能量体裁衣,从而导致负载不均和资源浪费。本文重点分析这种比较特殊的教学型应用。
由于教学型应用的特性,面向教学需求的计算资源即虚拟机的调配是个关键问题。这一问题又可进一步分解为以下两个子问题:第一,虚拟机创建时的部署问题,即决定新创建的虚拟机部署在哪台物理机上;第二,虚拟机使用时的动态调度问题,即根据物理机实际资源使用情况进行虚拟机的动态迁移。本文重点研究面向校园云平台的虚拟机创建时的部署问题,提出面向校园云平台的虚拟机调度机制,以期实现节能及负载均衡目的。
1相关工作
虚拟机优化调度是虚拟机管理的核心问题,针对这一问题,学术界和工业界都提出了相关解决方案,下面将从面向节能、面向负载均衡、面向负载均衡以及节能三方面讨论进行讨论。
面向节能方面,Mylavarapu[5]等人将虚拟机的容量规划问题建模为随机优化问题,采用遗传算法与蒙特卡罗模拟相结合的方式加以解决。他们首先根据平均工作负载来分配虚拟机资源,部署虚拟机。此外,根据应用的SLA在每台服务器上预留了空闲的资源池。这就避免了服务器过载、应用不能满足SLA而带来的虚拟机迁移。该算法与传统的基于峰值工作负载的算法相比,所需服务器的数量较少,实现了节能。Goudarzi[6]等人研究了云计算环境中以节能为目的的虚拟机放置问题。他们提出了一种生成虚拟机备份的方法:基于动态优化、局部搜索的算法。该算法决定了每台服务器部署的虚拟机的数量。此外,他们重点研究了虚拟机控制器VMC(VM controller),VMC采用半静态优化方法以及动态最优法来决定虚拟机的资源需求、部署虚拟机以及对虚拟机进行迁移操作;提出了节能虚拟机放置算法(Energy Efficient VM Placement Algotirhm),该算法主要用来决定放置在不同物理机上的虚拟机副本数量。
面向负载均衡方面,Chandakanna[7]等人提出了一个适用于负载均衡集群的基于模型视图控制器的自适应调整集群框架SACF(Self-Adjusting Cluster Framework)。该框架可自动部署新的虚拟机,自动升级现有应用,并且保证集群的一致性。Choi[8]等人提出了一种根据最小化CPU利用率标准差的贪心策略进行负载迁移的算法。该算法基于一个学习框架来动态调整不同计算资源的阈值。该学习框架用记事本方法记录了迁移前的CPU利用率的标准差,主机CPU利用率,迁移后的CPU利用率标准差、源机器、目标机器的信息以供学习。当记录信息不存在的时候,模拟所有可能的迁移情况,选择标准差最小的情况进行迁移。该算法利用了记事本来学习历史调度决策从而实现集群内物理机的负载均衡。Hu[9]等人提出了一种根据所采集的历史数据和系统当前状态利用遗传算法计算分配虚拟机资源后对系统的影响,从而找到最优分配方式的以负载均衡为目的的调度算法。
兼顾节能以及负载均衡方面,Chang[10]等人提出了一个基于学习算法的神经网络模型。集群内的每台服务器上部署了资源管理器用以预测云服务器的工作负载,从而高效地对资源进行分配,在提高服务器性能的同时降低能耗。Li[11]等人提出了一种面向感知数据托管的虚拟机调度策略,并采用贪婪思想设计实现了相应的调度系统及其算法。文中定义了冷热点、热度以及迁移优先值等概念,通过对物理机进行冷热点判断,从而选择调度模式:负载均衡模式下的调度、优化节能模式下的调度以及正常模式下的不调度,及时消除冷热点。此外,调度系统在迁移调度时,考虑到了不同业务类型虚拟机对各类资源的不同需求,实现了业务类型敏感的虚拟机调度。
总而言之,虚拟机调度针对不同目的,如上述的面向节能、面向负载均衡、面向负载均衡以及节能,采用优化搜索算法、遗传算法以及贪心策略、启发式策略等在可能的解空间进行解的选择,而后确定如何迁移调度。此外,工业界也提出了一些相关产品,如VMware推出的DRS(Distributed Resource Scheduler),该动态优化技术产品可对虚拟机集群的性能进行监控、管理以及控制,从而对资源进行优化调度。
但是目前的研究一般针对传统的云数据中心,当然也有少数面向特定应用领域的,比如面向感知数据托管平台[11]、电子政务基础架构云[12]、可对云资源进行综合管理的清华云平台[4],但是尚没有针对校园云平台的教学应用的虚拟机调度机制,没有考虑到校园云负载的特征。
2虚拟机部署方法
2.1问题定义
本文重点解决面向教学需求的计算资源调配的第一个子问题———静态部署问题,下面是对该问题的具体阐述。
设校园云平台的数据中心有n台物理服务器,已部署了m个虚拟机供教学应用,待部署g个虚拟机。通过虚拟机部署使:
(1)活跃的物理机数量尽可能少;
(2)各活跃物理机的资源利用率尽可能均衡。
该目标可用下述公式表达:
其中:
(1)n为活跃的机器数;
(2)r={cpu,…,memory},wr反映了虚拟机r资源维度上的利用率对整体资源利用率的贡献权重,文献[13]提出了一种设定权重具体值的方法,我们也可根据自己的经验及需求加以设定;
(3)uir为r资源维度上物理机i的利用率;
(4)averager为r资源维度上n个物理机的平均利用率。
2.2部署原理
当有一个新的课程需求时,首先按照各物理机负载与课程需求的相似程度从高到低对物理机负载进行分组;然后对相似程度最高的一组物理机负载进行以负载均衡为目的的虚拟机部署。若课程需求分配完成,则按照分配情况部署虚拟机;虚拟机部署完成之后更新物理机负载。若课程需求未分配完成,则对相似程度次高的一组物理机负载进行以负载均衡为目的虚拟机部署,重复上面的步骤,直到课程需求全部分配完成。
部署原理如图1所示,它采用了“先集中、再分散”的策略:按照相似程度对物理机进行优先选择,可将虚拟机集中部署在相同时间段处于开机状态的物理机上,用尽量少的物理机数来部署虚拟机从而实现节能;在相似程度一样的物理机组内进行负载均衡的部署,这样既可实现节能,又可实现负载均衡。
2.3部署算法
2.3.1相关定义
定义1课程需求模型租户提交申请的课程需求模型可以定义为一个六元组:
其中:
1)CName表示课程名称类,是课程唯一性的标识。
2)CTime表示课程时间段类,由于学校上课时间一般用周数来计算,所以可用该门课程的起始和结束周数来表示时间段类,可定义为一个二元组:CTime=(IWeek,FWeek),其中:IWeek表示课程的起始周数,FWeek表示课程的结束周数。
3)CCpu表示课程申请的虚拟机所需CPU大小。
4)CMemory表示课程申请的虚拟机所需的内存大小。
5)CNumber表示虚拟机个数。
6)LSet表示课程具体的课时集,每个元素可以表示为一个三元组,LSet=(LSection,LDay,LWeek),其中:
(1)LSection表示课程在某一天具体上课的节数,根据学校实际情况,用一节大课来表示两节课程。例如第2节大课表示第3、4节课。
(2)LDay表示一周具体上课时间,即课程所在的星期几。
(3)LWeek表示课程所在的单双周类,由学校课程安排的实际情况考虑,并不是所有课程每周都有,可定义为一个二元组:LWeek=(SWeek,DWeek),其中:DWeek为1表示双周有课,SWeek为1表示单周有课,否则为0。
例如,一租户提交了软件工程课程的需求申请,上课时间为1~8周,单周授课,具体时间为星期一的第2节大课以及星期五的第3节大课,每个虚拟机内存为4 GB,VCPUs为2,虚拟机个数为20台。对于此课程需求实例化为:
定义2物理机负载模型物理机上所部署的虚拟机的课程详情,该模型可定义为一个5×5×16的三维矩阵C=[Cijk]5×5×16,其中1≤i≤5,1≤j≤5,1≤k≤5。如图2所示。
k周,星期j,i节课的虚拟机使用情况Cijk可定义为一个三元组:Cijk=(PName,PCpu,PMemory),其中:
1)PName={LName1,LName2,…,LNamew},其中w为第k周,星期j,i节课时间段所要同时进行的课程的数目,LNamew为第w种课程的名称;
2)PCpu为物理机上所占用的CPU资源大小;
3)PMemory为物理机上所占用的内存资源大小。
定义3吻合度新申请的课程需求与物理机负载相对应元之间的重合度高低,公式定义如下:
其中Numoverlap为新申请的课程需求与物理机负载重合的课程数,Numall为新申请的课程需求的课程总数。例如,一课程申请为crequest=(Java,(1,16),2,4,20,(2,1,(1,0))),即课程在第1、3、5、7、9、11、13、15周的周一第2节大课进行,共有8次课。若对于一物理机负载存在元C211、C213、C215、C217、C219、C2111,即存在课程在第1、3、5、7、9、11周进行,GOFitjava=Numoverlap/Numall=6/8=0.75,则该物理机与新申请课程需求的吻合度为0.75;若没有相对应的元存在,则吻合度定为0,即若吻合度为0表示该物理机上没有与新申请的课程需求相同时间段的其他课程的虚拟机。
定义4部署优先值该值用来对吻合度相同的物理机做可部署虚拟机的顺序排序,即对物理机所剩资源的综合评价。文献[14]只考虑了CPU维度,但通常情况下,还要考虑内存、存储等维度的资源。本文综合考虑CPU、内存两个维度,公式定义如下:
其中,v Cpu为物理机虚拟出的Cpu的数目;Cijk.PCpu为与申请需求相同时间段的物理机已分配v Cpu的数目,其中ijk可按物理机上已有课程与课程需求第一次重合的时间计算,若无重合时间,则ijk为课程需求第一次上课时间;内存公式同上。
2.3.2算法描述
为将新申请的课程需求部署到物理机上,实现以节能及负载均衡为目的的基于时间的虚拟机的部署,首先需要了解每个物理机上资源使用情况。本文采用定义的物理机负载模型来刻画物理机上资源使用情况。
由于分配到每个物理机上单个课程的虚拟机资源是已知的,该算法主要是根据这些已知的虚拟机资源来推导出物理机负载,具体如下:
算法1物理机负载计算算法。
输入:物理机上分配的课程需求实例crequest,物理机负载Cold=[Cijk]5*5*16。
输出:物理机负载Cnew=[Cijk]5*5*16。
算法描述:
对于一个课程需求,需经过部署算法,拆分为几个课程需求,然后部署到几个物理机上面;每次部署新的虚拟机以及虚拟机动态调度完成之后要调用该算法重新计算物理机负载,以保证信息的准确性。
对于新申请的虚拟机资源,合理的部署有利于避免虚拟机使用时出现的高负载、低负载导致的虚拟机的动态迁移以及由此带来的大量物力资源的消耗、时间的浪费。所以如何部署虚拟机到现有物理机上是至关重要的一步。本算法基于每个物理机的负载模型来进行基于时间、预测负载的调度,以节能及负载均衡为目标,具体算法如下:
算法2课程需求部署算法(CRD算法)。
输入:crequest',物理机负载C1,C2,…,Cl,其中l为物理机个数。
输出:虚拟机与物理机迁移映射关系。
算法描述:
1.按照物理机负载C1,C2,…,Cl与crequest'的吻合度从高到低将物理机进行排列,得到有序的吻合度相同的物理机负载组D1,D2,…,Dm,其中m为小组个数;
2.foreach有序的物理机负载组do
3.按照物理机的部署优先值的高低对组内n个物理机排序,得到{P1,P2,…,Pn};
4.foreach物理机Pi do
6.If NUMi*crequest'.Cpu<Pi.LCpu&&
NUMi*crequest'.Memory<Pi.LMemory do
7.在物理机Pi上部署NUMi台虚拟机;
8.Elsedo部署min{Pi.LCpu/crequest'.Cpu,Pi.LMemo ry/crequest'.Memory}台虚拟机;
9.End if;
10.End foreach;
11.If课程需求完全分配do exit
12.Else do按照更新的物理机的部署优先值的高低对物理机排序;将所剩课程需求部署在有序的物理机上;
13.If课程需求完全分配do exit
14.End if;
15.End if;
16.End foreach
17.如果循环了所有物理机也未部署完成,则发出物理机不足,找不到目标机的警报;
3系统实现
3.1系统架构
本文在以开源Iaa S平台Open Stack[15]为基础的校园云平台上实现了基于上述面向教学需求的虚拟机调度方法的系统。为实现上述目标,提出了调度系统架构,架构如图3所示。
该系统主要由数据存储模块、用户请求模块、虚拟机调度模块、虚拟机控制模块组成。数据存储模块包括物理机预测负载模块、课程需求模块、监控数据模块以及映射关系表模块。物理机预测负载模块用以存储根据虚拟机的课程详情而预测的物理机负载。课程需求模块用以存储用户新提交的课程申请详情。监控数据模块用以存储物理机、虚拟机的实时资源使用情况。映射关系表用以存储服务器与虚拟机的放置映射关系。
用户请求模块即人机交互界面,用户通过校园云平台提交申请以及课程所需虚拟机的详情。
虚拟机调度模块包括吻合度判断模块、部署优先值判断模块、调度决策模块。
虚拟机控制模块包括创建、删除、启动、停止、迁移、配额调整模块,从而实现对虚拟机实例的创建、删除、开启、关闭、迁移以及虚拟机配额调整等操作。
首先,普通用户通过用户界面提交用户请求。管理员对用户请求进行人工审核,对于审核通过的请求,将该请求信息一方面存储到课程需求模块。另一方面发送到虚拟机调度模块,该模块接收到请求,会启动静态部署算法,对该虚拟机创建请求进行处理,最后生成物理机、虚拟机部署映射关系表,并存储到映射关系表模块。虚拟机控制模块根据该部署映射关系表,进行虚拟机的创建。虚拟机创建完成之后,部署在服务器上的监控设备会对该服务器进行实时监控。当发现监控数据超过资源的高低阈值,即服务器出现过载或过闲的情况时,虚拟机调度模块的动态调度部分会根据实时的历史数据对虚拟机进行动态调度,生成迁移指令,并且发送到虚拟机控制模块。虚拟机控制模块根据该迁移指令对虚拟机进行迁移操作,进而实现集群的负载均衡以及节能。此外,虚拟机控制模块还可对虚拟机进行配额调整。
3.2实例验证
为验证调度效果,在该云平台环境下,5台HP服务器构建的集群上搭建了Open Stack平台,具体服务器配置如表1所示。该平台主要是为租户(如教师、科研人员)提供所需的虚拟机资源,从而满足教学与实验需求。
如表1所示,server1.org作为控制节点[16],server2.org、server3.org、server4.org、server5.org作为计算节点。在这一环境下,将本文提出的算法以Python语言加以实现,并扩展到Open Stack中。
各计算节点已部署课程虚拟机情况如表2所示。
如表2所示,服务器server2.org上部署了Java课程所需的2台虚拟机,C语言课程所需的7台虚拟机以及C++课程所需的2台虚拟机;server3.org、server4.org、server5.org所示意义同上。
课程需求为:crequest=(Software Engineering,(1,8),2,4,15,(2,1,(1,0)))
分别采用CRD算法,Open Stack开源软件提供的SimpleSchedule(SS)以及贪心算法First Fit(FF)对课程虚拟机资源进行调度分配。
图4、图5所示为虚拟机资源被调度分配、部署完成,第一次运行该课程时集群达到稳定状态的CPU利用率和内存利用率。从图4、图5可看出,经本算法调度部署之后,服务器CPU利用率差距很小,小于5%,内存利用率差距小于10%,基本实现负载均衡。并且有一台服务器在此课程上课期间处于闲置状态,可对其进行关机操作以节能。而由SS算法、FF算法调度部署之后服务器的CPU利用率差距很大,大于20%,内存利用率差距大于60%,存在严重的负载不均衡,且没有服务器此时处于闲置状态,与CRD算法相比,能耗更大。
综上所述,CRD算法既可达到节能的目的,又可实现负载均衡。
4结语
本文以校园云平台中教学应用的资源调配为背景,提出了一种适应教学应用周期性、可预测性、批量性等特点,以减少物理服务器使用数量、负载均衡为目的的虚拟机调度机制。并在开源Iaa S平台Open Stack为基础的教学科研云平台上对该调度算法进行了验证,结果表明,该算法有效地节约了能耗并实现了负载均衡。
下一步将从面向教学需求的计算资源调配问题的第二个子问题入手,研究虚拟机使用时的动态调度问题,根据物理机实际资源使用情况进行虚拟机的动态迁移,并提出相应的调度策略。
摘要:随着教学信息化的不断深化,校园云平台越来越普及,但是实际应用中资源利用率仍然较低,核心问题在于当前的虚拟机调度机制未考虑校园应用的特征,从而导致负载不均和资源浪费。为了解决这一问题,提出面向校园云平台的虚拟机调度机制,定义课程需求模型、物理机负载模型,并在此基础上提出虚拟机部署方法。该机制可适应教学应用周期性、可预测性、批量性等特点,并实现节能及负载均衡的目标。实际平台验证表明,该机制可有效降低能耗并实现负载均衡。
高空作业平台虚拟机的仿真与分析 篇7
某型高空作业平台整机重量9.5 t, 采用柴油机作为动力, 最大工作高度22.4 m, 平台高度21.2 m, 额定承载200 kg, 工作臂俯仰角度-14o~70o, 工作臂采用三节伸缩式箱形结构, 如图1所示。
1—第三节臂;2—第二节臂;3—第一节臂;4—伸缩油缸;5—油管等附属设施;6—变幅机构铰接孔;7—滑块;8—第一节臂与回转平台铰接轴
2工作机构整体与零部件的CAD模型
本文所研究的某型高空作业平台, 其工作机构的主要部件为三节臂、变幅缸、上下平衡缸、吊篮等。首先建立变幅缸、上下平衡缸以及整体机构的装配体模型。
在建模的过程中对结构进行了如下简化:①不考虑焊接处焊接应力及焊缝的影响;②简化机构上为安装某些附件而设置的螺纹孔、工艺孔、导角、工艺凸台等, 这样在不影响机构整体性的情况下, 可以节省大量的计算机资源;③省去某些非承载构件及装饰件, 如油管、标识等附属设施;④不考虑对整机静、动态特性影响小的零、部件结构。
3Pro/E与ADAMS的数据传递
3.1 Pro/E中调用Mechanism/Pro模块
在确定Pro/E和ADAMS能够正常运行的情况下, 安装Mechanism/Pro。在Pro/E中建立或打开装配模型, 接下来直接在Pro/E环境下运行Mechanism/Pro模块。
3.2 定义刚体
Mechanism下拉菜单中选择Rigid Bodies, 在Rigid Bodies下拉菜单中选择Create, 然后选择创建的方法。通过在Mechanism/Pro中自动创建刚体, 高空作业平台装配体自动产生了9个刚体, 分别为大地、三节臂、变幅缸缸体、变幅缸活塞、下平衡缸缸体、下平衡缸活塞、上平衡缸缸体、上平衡缸活塞和吊篮。
3.3 定义约束
根据模型中各零部件之间的运动状态, 添加相应的约束副, 从而通过约束定义模型各部件之间的相对运动。对于不便在Pro/E环境下添加的约束, 可以考虑将模型导入到ADAMS界面对其添加约束。
3.4 添加驱动、载荷
模型约束副建立后, 在模型的约束副上添加运动学驱动, 根据模型各部件所受载荷的情况添加力和力矩。
3.5 传递模型
完成模型后, 可以将模型导入ADAMS中, 添加更复杂的约束副、驱动和载荷后, 再使用ADAMS/View进行动力学仿真分析。
4动力学模型
4.1 定义约束副
建模时, 可以通过各种约束限制构件之间的某些相对运动, 并以此将不同的构件连接起来组成一个机械系统。
通过高空作业车各部件之间实际的相对运动关系, 建立了高空作业车各部件间的运动约束。将三节臂与大地之间的铰接副命名为joint_1, 选择三节臂为First R (第一刚体) , 选择大地为Second RB (第二刚体) 。确定铰接副的位置 (Location) 和方向 (Z Oriention) 。至此, 在Mechanism/Pro中创建了三节臂与大地之间的铰接副, 如图2所示。同理, 定义变幅缸缸体与大地之间的铰接副joint_2、变幅缸活塞与三节臂之间的铰接副joint_3、下平衡缸缸体与大地之间的铰接副joint_4、下平衡缸活塞与三节臂之间的铰接副joint_5、三节臂与吊篮之间的铰接副joint_6、上平衡缸缸体与吊篮之间的铰接副joint_7、上平衡缸活塞与三节臂之间的铰接副joint_8、变幅缸活塞与变幅缸缸体之间的移动副joint_9、下平衡缸缸体与下平衡缸活塞的移动副joint_10和上平衡缸缸体与上平衡缸活塞的移动副joint_11。
4.2 传递模型
将在Pro/E环境下创建的几何模型通过Mechanism/Pro模块传递给ADAMS, 以便于对机械系统进行动力学研究。同时, 可以在ADAMS中进行刚体、约束、驱动和力的修改或新建以及利用ADAMS/View进行仿真分析。
4.3 添加载荷
在进行运动学和动力学研究时需要考虑作用在伸缩臂上的主要外载荷有吊篮中的吊重载荷和在第二节、第三节臂的头部由于油管等附属设施所造成的垂直方向载荷, 暂不考虑风载。
两种运动工况下, 高空作业平台所受的载荷情况见表1。
将表1中的载荷施加到ADAMS中动力学模型上, 见图3。
4.4 定义驱动
高空作业车在运动过程中, 工作臂是通过变幅缸在液压系统的作用下作仰俯运动;上、下平衡缸在液压系统的作用下, 使吊篮保持水平。因此, 在高空作业平台的动力学模型中, 定义变幅缸和上平衡缸均为平移驱动。
变幅缸的平移驱动是通过函数表达式的形式来定义的, 具体方法是:①在高空作业平台的变幅缸和上、下平衡缸的位移测试中, 获取变幅缸的位移数据文件;②将获取的位移文件在ADAMS/View中绘制成样条曲线;③采用样条函数CUBSPL表达式定义高空作业平台上的平移驱动。
调平机构主体部分由两只结构尺寸完全相同的调平液压缸组成。两个液压缸的无杆腔与无杆腔相连, 有杆腔与有杆腔相连, 能保证一只液压缸伸长 (缩短) 一定长度, 另一只液压缸缩短 (伸长) 相同的长度。则上平衡缸的平移驱动也可以通过函数表达式的形式来定义, 具体方法是:①在高空作业平台动力学模型中, 定义下平衡缸伸长 (缩短) 的增量为状态变量;②采用返回状态变量当前值的函数VARVAL表达式定义上平衡缸的平移驱动。
至此, 通过几何模型的建立和对几何模型添加约束、载荷及驱动, 便建立了高空作业平台的动力学模型, 如图4所示。接下来, 可以调用ADAMS/Solver对模型进行动力学仿真。
5高空作业平台动力学仿真和结果分析
5.1 高空作业平台动力学仿真
对上述两种运动工况分别进行仿真分析, 确定各种工况下的动态特性参数等指标, 并从动态特性的角度来寻找薄弱环节, 用来指导和完善现有设计及改进今后的设计计算方法。
因篇幅所限, 本文只给出高空作业平台在-14o~53o的运动分析, 见图5。
5.2 动力学模型仿真结果与实验数据的比较
将实验数据输入到ADAMS中, 并创建实验数据曲线, 同时通过添加坐标轴单位、修改曲线说明、更改图形标题等来完善实验数据曲线, 最后将实验数据与动力学模型仿真曲线放在同一图形中进行比较, 见图6。因篇幅所限, 此处只给出高空作业平台在53o~70o的运动分析。
通过对虚拟样机模型仿真结果和实验数据的分析、比较, 可以看出使吊篮在高空作业平台运动过程中保持水平的调平系统存在着滞后现象, 且滞后现象随着高度的增加而更加明显。根据调平液压系统的特点, 通过适当改变平衡缸各铰支点位置等方法, 以保证吊篮在高空作业平台运动过程中尽可能地保持水平。
6结论
本文首先介绍了某型高空作业平台的结构特点, 然后运用三维软件Pro/E创建了高空作业平台的几何模型, 接着使用Pro/E中的Mechanism/Pro模块将几何模型传递到动力学仿真软件ADAMS中, 并在ADAMS中施加约束、添加载荷、定义驱动等, 从而建立了某型高空作业平台的动力学模型, 并进行了仿真分析。通过对虚拟样机模型仿真结果和实验数据的分析、比较, 发现调平系统存在着滞后现象。
参考文献
[1]郑建荣.ADAM S—虚拟样机技术入门与提高[M].北京:机械工业出版社, 2005.
[2]李晓娟.P ro/E与ADAM S联合建模方法的研究[J].装备制造技术, 2008 (12) :31-33.
虚拟机平台 篇8
可信计算主要涉及以下五大核心概念: (1) 签注密钥, 即2048位的RSA公共及私有密钥对, 生成于芯片出厂之时, 由于是随机的, 因此无法对其进行更改。其中私有密钥始终处于芯片之中, 公共密钥的作用在于对敏感数据进行认证, 并将其发送至芯片之中。 (2) 远程认证。得到远程认证, 授权方可以感知用户电脑上的任何改变。比如, 对于软件公司而言, 通过远程认证, 可以防止器软件受到用户的干扰。 (3) 密封储存。所谓密封储存, 就是为实现对私有信息的有效保护, 将其以及相应的软件及硬件平台配置信息进行捆绑, 并对其进行保护, 经过密封储存, 要想对数据进行读取, 只能在一致的软件及硬件组合环境下才能得以实现。 (4) 储存器屏蔽。储存器屏蔽是对之前储存保存技术的延伸和扩展, 所提供的储存区域具有完全独立性, 如包含密钥的位置。就算是操作系统, 也没有完全访问权限对屏蔽储存数据进行访问, 因此, 即便是操作系统被恶意入侵者所控制, 也可以保障操作系统的安全性。 (5) 安全输入及输出。所谓安全输入输出, 具体是指各个用户和与其开展交互的软件相互间受保护的路径。目前, 电脑系统恶意软件对用户及软件进程之间数据传输的阻拦方式有很多种, 比较常见的有键盘监听以及截屏等。
二、虚拟可信计算平台框架的实现
对于虚拟可信计算平台框架而言, 其实现需要解决的问题大致有以下几个: (1) 利用相关软件确保虚拟TPM实现。对于虚拟可信计算平台而言, 最为关键的内容就是虚拟TPM, 所谓TPM, 具体是指对密钥、数字证书以及密码等进行存储的微型处理器, TPM的安全性、高效性以及功能性对虚拟可信计算平台框架的构建具有重要意义, 所以, 虚拟TPM设计要求相对较高。 (2) 有效解决虚拟TPM多域并发访问控制问题。该问题的解决方案为:首先, 向各个虚拟操作系统域分别提供独立的虚拟TPM模块;在此基础之上, 借助TPM设备管理软件管理上一步所实现了虚拟TPM模块。通过向各个Domain U提供虚拟TPM模块, 同时利用相应的管理软件对全部虚拟TPM模块实施统一化管理, 可以有效分离数据及安全性, 进而确保可信设备的管理型及易用性的切实实现, 所有Domain U的执行及验证均单独进行, 从而为Domain U有关安全性需求的切实满足提供保障。 (3) 确保可信链的完整性。在上述两个问题得以切实解决的前提之下, 考虑通过绑定Domain U和TPM来确保可信链完整性的实现。为达到构建完整可信链的目的, 要将Domain U启动过程与物理机启动过程联系起来, 并验证可信链中各个点的完整性, 所以, 还需要从虚拟TPM获取可信链其他节点的访问方式, 以便能够实现和物理TPM之间的交互。
三、结语
虚拟化技术的发展在很大程度上促进了硬件资源利用效率的提升, 然而, 我们在使用虚拟化技术的时候, 也需要注重虚拟机的运行环境的安全性问题。文章对可信计算的关键技术、可信计算平台以及虚拟可信计算平台框架设计思路进行了探讨, 并且设计了一种基于Xen虚拟机架构的可信计算平台框架。希望文章的研究对于促进虚拟化技术的广泛应用能够起到一定的促进作用。
参考文献
[1]孙晶晶, 蔡勉, 赵阳.基于可信计算的云用户安全模型[J].计算机安全, 2012 (04) :34-35.
虚拟机平台 篇9
企业门户已不再是一扇窗, 一扇门, 它是一个平台, 一个为了构建知识管理体系, 提高决策支持能力的全新信息化平台。企业可以将分散的信息资源和内容整合到一起, 充分有效的利用信息资源和部署其他信息系统, 进而提高工作效率和决策能力。企业门户可以集成企业内部的业务系统, 实现信息的横向集成和纵向贯通, 为企业的各业务系统提供内容的统一展现、发布和管理的统一平台。
2 门户的现状分析
分公司门户已经成熟的运行了六年, 但是门户平台与数据库是在同一台服务器上运行, 服务器已经进入故障频发期, 容易导致门户不能正常运行, 安全性受到了冲击, 同时存在以下两个问题:
一是门户初始安装平台时, 只装了W S S平台管理, 无法应用分级权限安全管理设置, 二是子网站建设在根目录下, 无法独立迁移备份。
统一身份管理。能够实现统一的用户资料, 统一的用户认证。用户无需申请多个账户, 设置不同的密码。
统一权限管理。统一管理用户在不同系统中的权限, 虽然是一个用户名, 却可以在不同系统中拥有不同权限。
统一访问入口。通过门户系统统一访问OA, CRM, ERP等各种后端系统。
内容管理。实现内容的创建, 审批, 发布, 搜索, 个性化。
协同工作。通过多种方式, 如日程表、工作任务等, 让用户方便沟通和办公。
解决思路:
一是通过安装C M S系统, 解决以往门户网站无法应用分级权限安全管理的问题。
二是通过在Sites下创建网站, 解决以往门户网站无法独立迁移备份。
3 关键技术分析
3.1 负载均衡技术应用
以往门户网站的平台与数据库同时在一台服务器上运行, 如果出现故障, 用户将无法正常访问门户网站, 而且用户访问量大的时候, 门户运转速度受到影响。
现在服务器群集的搭建, 创建了四台虚拟机应用于门户, 三台虚拟门户平台, 一台虚拟门户数据库, 门户虚拟服务器均采用了负载均衡技术, 如果其中一台虚拟机出现故障, 用户访问将自动转移到另外两台虚机上, 不影响门户网站的正常使用, 提高了门户高可用性、高可靠性, 实现了门户网站的不间断运行。
C h a n n e l:频道, 用来存储最终的页面, 每个频道下可以建立子频道, 也可以存放最终页面。
Template:模板, 存储页面模板, 在频道中创建页面时要选择一个模板, 并根据模板中制定的。
Resources:资源, 用来存储图片、音像材料等文件, 用来在页面中公用资源。
CMS定制的主要工作包括:
根据门户的栏目在C M S中创建相应的频道, 使用不同模板参数实现页面上不同的显示风格。
3.2 CMS系统应用技术实现 (1) 分级授权机制的实现
以往的门户用户管理是只能对这个网站所设定的权限管理, 如果要管理其它网站的通知类的文档库等需要重复添加用户和设置权限, 操作复杂。
现在, 进入User Roles, 可以在此添加用户以及设置权限, C M S权限管理可以对不同的网站的不同频道设置不同的权限管理, 无需重复添加用户。
通过分级授权机制的实现, 解决了用户权限管理的难题, C M S的权限管理可以有效提高工作效率, 门户的安全性随之也得到了提高。
(2) CMS频道的应用
以往的门户网站通知公告是应用WSS中的Web部件, 发布界面虽然统一却单调, 并且添加的通知内容无法调整行距, 局限性大。
现在, 当需要创建具有复杂模板的静态内容 (如红头文件) , 可以使用CMS, CMS是一套完整的内容创建和发布系统, 最终发布的内容是静态页面, 通常新闻、动态和通知栏目可以使用C M S来实现, 根据门户的栏目在C M S中创建相应的频道, 使用不同模板参数实现页面上不同的显示风格。
3.3 优化备份方式
三级单位门户以及专题网站的搭建, 以往是基于根目录下创建子网站, 内容存储于根下, 但是无法单独备份迁移子网站。
此次虚拟服务器门户的搭建, 将三级单位门户以及专题网站创建在siets下, 与主门户网站脱离, 其可独立运行, 并可以单独备份迁移, 门户数据安全得到了保障。
4 结论
通过对虚拟门户的搭建, 安装CMS系统、sites下子网站的创建, 实现了不同格式的新闻发布, 以及通过分级授权实现用户和权限的分级管理, 实现了门户独立备份, 实现了门户网站的不间断运行, 确保了门户数据安全, 提高了门户管理员的工作效率。本次虚拟门户技术的应用, 使门户架构得到了提升, 为虚拟环境应用打下一个良好的基础。
摘要:随着气田勘探开发领域的不断拓展, 应用信息技术推动生产建设, 信息门户为企业提供了一个资源共享平台。在虚拟服务器群集中搭建门户协同工作平台, 实现门户CMS技术的应用、子网站的独立搭建、分级授权管理等。为企业的各业务系统提供内容的统一展现、提高了企业信息安全性和信息资源的利用率, 提升工作效率。
关键词:CMS,权限管理
参考文献
[1]徐春金企业门户的发展方向, 2007年
图解Windows8自带虚拟机 篇10
在Win8中,系统自带了一个虚拟机程序Hyper-V,Hyper-V是微软自己研发的一款创建和管理虚拟化服务器计算环境的软件架构和基础管理工具,类似于VMware及VirtualBox这一类虚拟机软件。这样用户可以通过该虚拟程序组建虚拟局域网,创建虚拟交换机和虚拟系统,体验多系统的交互运行和多系统间实现文件共享。了解了Win8中的虚拟机情况后,下面我们就一起来看一下如何在Hyper-V中虚拟系统。
Hyper-V的安装
默认情况下,Windows8并没有安装Hyper- V组件,需要时可以手动进行安装。安装时,首先在 “控制面板”中打开“程序和功能”窗口,点选下面的“启用或关闭Windows功能”,打开“Windows功能”,在此列出Windows 所有的安装组件。勾选“Hyper- V”复选框(如图1),随后单击“确定”,系统会一步步进行安装。
创建一个虚拟局域网
为了能让虚拟机系统通过宿主机上网,Hyper- V将创建虚拟机模拟成一台电脑,然后通过创建的虚拟机交换机连接,这样多个虚拟机就和宿主机通过虚拟的交换机连成了一个虚拟局域网,这样就可以通过虚拟交换机共享上网了。
创建虚拟交换机
我们先来创建一个虚拟交换机,启动“Hyper- V管理器”(如图2)。程序的主界面分为三个窗口,从左到右分别为虚拟机管理器窗口、虚拟机详细信息列表、虚拟机设置选项。
创建虚拟机时,在右侧列表中单击“虚拟交换机管理器”命令,打开“虚拟交换机管理器”窗口,在左侧的边栏中单击“新建虚拟网络交换机”命令,在“创建虚拟交换机”列表中选择“外部”,并单击“创建虚拟交换机”按钮(如图3)。
在打开的“创建网络虚拟交换机”界面中,输入创建交换机的名称、说明等信息。在下面的“连接类型”中选择“外部网络”并在下面的外部网络列表中选择当前电脑上网所使用的网卡名称(如图4)。
随后单击“确定”即可创建成功,创建成功后,在系统的网络连接中多出一个名为“vEthernet”网络连接,这就是我们刚刚创建的虚拟交换机的虚拟网卡(如图5)。
鼠标右键单击该网络连接图标,在弹出的右键菜单中选择“属性”,打开网卡属性对话框。在“此链接使用下列项目”列表中选择“Internet协议4”,并选择“属性”命令,打开“属性”对话框(如图5)。
在此输入该网卡的IP地址、子网掩码、网关、DNS服务器等信息。在此值得一提的是,该连接的IP地址要和宿主机的IP地址在同一网段,子网掩码、网关、DNS和当前宿主机的相同,设置完成后,单击“确定”即可(如图6)。
创建虚拟系统
首先准备好系统安装盘,将系统安装盘放入光驱,在Hyper-V主界面单击右侧边栏中的“新建”→“虚拟机”命令,打开“新建虚拟机向导”对话框,在此单击“下一步”按钮,在“名称”中输入创建的虚拟机名称(如图7)。
单击“下一步”按钮,在打开的分配内存项目中输入虚拟系统所使用的内存,在此根据主机内存的大小自行定义。
选择后,进入到“配置网络”界面,在“连接”项中选择创建的“虚拟交换机”(如图8)。
随后单击“下一步”按钮,在打开的“连接虚拟硬盘”对话框中点选“创建虚拟硬盘”,随后输入虚拟机名称,设置好虚拟机保存的位置并设置好虚拟硬盘的大小(如图9)。
设置完成后,进入到“安装选项”界面(如图10),在该界面中,我们选择虚拟系统的安装方式,程序支持光盘和ISO镜像文件安装,我们可以根据需要进行选择。
单击“下一步”按钮,完成创建向导。虚拟机创建后,下面我们就可以为该虚拟机安装系统了。安装时,在虚拟机列表中选择该虚拟机单击右侧的“连接”,打开虚拟机窗口,在此单击工具栏中的“启动”按钮,即可开始安装系统,系统安装过程在此就不赘述(如图11)。
安装成功以后,单击右侧边栏中的连接即可在虚拟机中启动系统了(如图12)。
【虚拟机平台】相关文章:
虚拟学习平台06-02
虚拟服务平台06-08
KVM虚拟平台07-31
虚拟仪器实验平台06-30
服务器虚拟平台07-10
虚拟ARM实验平台07-24
平台虚拟化技术08-28
依托虚拟社区平台打造法制特色社区05-25
虚拟化学实验平台的设计与实现01-03
药用基础化学实验虚拟教学平台构建09-11