The invention relates to the technical field of computer virtualization, a process oriented EVP OS Guest cross communication method and system to the public, based on shared virtual address space to achieve a communication mechanism of inter state efficient address mapping process. The method of the invention includes: write process distribution data sending buffer in the user address space, writes to send data to the reading process; writing process through system calls in EVP interprocess communication buffer buffer allocation and buffer communication data copied to the assigned reading process; a continuous distribution of the virtual address space in its own user address space through the system call, and calculate the distribution of the physical address space for EVP buffer write process corresponding to the mapping between the EVP buffer and read its own user address space, through accessing their own user address space to read across Guest OS write process the data sent.
【技术实现步骤摘要】
面向EVP的跨GuestOS进程间通信方法及系统
本专利技术涉及计算机虚拟化
,尤其涉及一种面向EVP(Embeddedvirtualizationplatform,嵌入式虚拟化平台)的跨GuestOS(客户虚拟机操作系统)进程间通信方法及系统。
技术介绍
虚拟化技术是一种可以将一台物理机模拟成多台虚拟机的技术。随着以移动智能终端为代表的嵌入式设备计算能力的大幅提升以及移动互联网的飞速发展,虚拟化技术慢慢地渗透到嵌入式领域,进而形成了嵌入式虚拟化技术。嵌入式虚拟化技术通过直接在嵌入式硬件平台上部署虚拟机监控程序来为上层的操作系统及应用程序构建运行环境。虚拟机监控程序可以视为一种特殊的操作系统,它负责创建底层硬件平台的抽象,使得一个或多个虚拟机在无需感知具体硬件平台的情况下就可以正常运行。嵌入式虚拟化技术的优势是安全隔离性更强。被业界广泛采用的嵌入式虚拟化解决方案是半虚拟化技术。半虚拟化解决方案大多数是基于微内核来构建的。微内核架构的操作系统采用一个尽量小的内核来完成操作系统最基本的核心功能,其与应用程序之间的接口与硬件平台的接口十分相近。这样既保证了操作系统 ...
【技术保护点】
一种面向EVP的跨Guest OS进程间通信方法,其特征在于,包括:初始化:1、将EVP的地址空间划分为四大部分,分别为代码和数据地址空间、IO映射空间、进程间通信专用缓冲区空间和中断向量表空间;所述代码和数据地址空间存储EVP的实现代码、各种数据结构、以及映射用一级页表和相关二级页表;所述IO映射空间用于实现外设的访问;所述进程间通信专用缓冲区空间作为数据缓冲区为进程间数据传输提供服务;所述中断向量表空间存储设置好的中断向量表,用于异常、中断发生时,系统可以跳转到对应的中断处理函数处执行;2、EVP将运行权交给Guest OS,用EVP页表中特定的页表项覆盖掉Guest ...
【技术特征摘要】
1.一种面向EVP的跨GuestOS进程间通信方法,其特征在于,包括:初始化:1、将EVP的地址空间划分为四大部分,分别为代码和数据地址空间、IO映射空间、进程间通信专用缓冲区空间和中断向量表空间;所述代码和数据地址空间存储EVP的实现代码、各种数据结构、以及映射用一级页表和相关二级页表;所述IO映射空间用于实现外设的访问;所述进程间通信专用缓冲区空间作为数据缓冲区为进程间数据传输提供服务;所述中断向量表空间存储设置好的中断向量表,用于异常、中断发生时,系统可以跳转到对应的中断处理函数处执行;2、EVP将运行权交给GuestOS,用EVP页表中特定的页表项覆盖掉GuestOS进程相应的页表条目,完成EVP与GuestOS之间的地址空间的共享;针对“写进程”和“读进程”分属于不同GuestOS的情况,跨GuestOS进程间通信方法包括:写进程在自身用户地址空间中分配数据发送缓冲区,向其中写入将要发送给读进程的数据;写进程通过系统调用在EVP的进程间通信缓冲区中分配缓冲区,将通信数据从所述自身用户地址空间缓冲区中拷贝至刚分配的EVP缓冲区中;读进程通过系统调用在其自身用户地址空间中分配一段连续的虚拟地址空间,并计算分配给写进程的EVP缓冲区对应的物理地址空间,建立所述EVP缓冲区与读进程自身用户地址空间之间的映射关系,以通过访问自身用户地址空间来读取跨GuestOS写进程所发送的数据。2.根据权利要求1所述的面向EVP的跨GuestOS进程间通信方法,其特征在于,在通过访问自身用户地址空间来读取跨GuestOS写进程所发送的数据的过程中,还包括:为每个数据通道创建并维护一个IPC对象,以在整个跨GuestOS进程间通信的数据交互过程中,负责管理通信相关的所有资源,控制和协调通信双方进程的数据读写操作。3.根据权利要求2所述的面向EVP的跨GuestOS进程间通信方法,其特征在于,所述IPC对象的数据结构如下:其中,index是一个无符号32位整数,EVP中所有的IPC对象以一维数组的形式被组织成资源池,index记录当前结构体在一维数组中的下标索引,该变量一经初始化便不再改变;变量key是一个有符号32位整数,作为IPC对象的唯一标识,相当于该结构体的名字,系统保证IPC对象key的唯一性,通信双方进程通过该变量来唯一标识其拥有的xevm_ipc资源;creater_guest_os和creater_process_id均是32位整数,creater_guest_os指明写进程所属的GuestOS,creater_process_id指明写进程在所属GuestOS中的进程ID;使用reader_guest_os指明读进程所属的GuestOS,reader_process_id指明读进程在所属GuestOS中的进程ID;无符号32位整数buffer_size表示当前IPC对象管理的缓冲区大小;write_ptr和read_ptr均为无符号32位整数,分别为写指针和读指针,写指针指示缓冲区中下一个可写的字节位置,读指针指示缓冲区中下一个可读的字节位置,结合这两个变量,实现对缓冲区读写操作的控制;无符号32位整数total_bytes记录当前缓冲区中存储数据的总字节数,通过该变量判断缓冲区是处于空闲状态还是载满状态;reference_count是一个无符号32位整数,该变量指示目前正在使用该对象进行数据交互的进程数,初始值为0,通信通道成功建立之后为2,双方进程调用释放对象的系统调用时,如果该变量为0,系统则回收所有的通信资源;is_reading是一个无符号32位整数,该变量指示当前IPC对象指定的读进程是否正在进行读操作;buffer是指向virtual_page结构体的指针,被当前IPC对象管理的双方进程使用该virtual_page描述的内存页面进行数据的读写;reader_user_space_address是一个无符号32位整数,存储读进程为完成跨态地址映射而在其用户空间中分配的页面的起始地址;list是EVP中实现的双向循环链表,通过该变量,IPC对象或被链接到空闲链表中,或被链接到已分配链表中;structsem_t是EVP中实现的信号量,sem变量实现通信双方进程对缓冲区的互斥访问控制。4.根据权利要求3所述的面向EVP的跨GuestOS进程间通信方法,其特征在于,还包括针对所述IPC对象,建立xevm_ipc_get函数供系统调用以完成相关资源的分配以及初始化;所述xevm_ipc_get函数原型为:int32_txevm_ipc_get(int32_tkey,uint32_tflag,uint32_t*p_user_address);参数key是一个32位整数,EVP将其作为某个特定IPC通道的名字,需要通信的两个进程通过传递相同的key值来定位并访问同一IPC通道相关的数据结构,从而完成数据的传输;参数flag是一个无符号32位整数,实现中定义了flag不同比特位的不同含义,参数flag的第一个比特位为1表示调用进程为写进程,第二个比特位为1表示调用进程为读进程;参数p_user_address是一个指针变量,当调用进程为写进程时,该参数被忽略,当调用进...
【专利技术属性】
技术研发人员:王斌,李伟民,王凯,王露鹏,
申请(专利权)人:中南大学,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。