并行运行多用户操作系统间的数据安全传输方法及系统 技术领域 本发明属于计算机技术领域, 尤其涉及一种并行运行多用户操作系统间的数据安 全传输方法及系统。
背景技术 传统的多 ( 双 ) 用户操作系统并行运行方案是通过多台主机完全独立运行实现, 这样, 多 ( 双 ) 用户操作系统间的数据传输, 一种是必须借助外部存储设备, 例如通过 U 盘、 硬盘等, 操作不方便, 并且, 这些外部存储设备可能会被窃取、 丢失或感染病毒, 存在安全隐 患; 另一种是采用传统的硬盘共享的技术。 然而, 这两种技术均是在多台主机完全独立运行 多 ( 双 ) 用户操作系统的情况下所使用的数据共享方法, 并不适用于单机多 ( 双 ) 用户操 作系统并行运行的计算机系统, 其中, 在多 ( 双 ) 用户操作系统并行运行的计算机系统中, 多 ( 双 ) 用户操作系统所使用的物理设备, 包括硬盘、 网卡、 显卡都是独立的, 内存按地址段 隔离、 CPU 按核分配, 多 ( 双 ) 用户操作系统间数据完全物理隔离。
发明内容 本发明实施例的目的在于提供一种并行运行多用户操作系统间的数据安全传输 方法, 旨在解决现有技术提供的数据传输方法不能应用在并行运行的多用户操作系统间进 行数据传输以及现有的数据传输方法操作不方便或者安全性低的问题。
本发明实施例是这样实现的, 一种并行运行多用户操作系统间的数据安全传输方 法, 所述方法包括下述步骤 :
数据传输模块接收输入的数据传输的请求指令, 并通过定义的动态链接库提供的 接口申请共享物理内存 ;
数据传输模块根据该请求指令向操作系统申请虚拟内存页 ;
数据传输模块读取该虚拟内存页的虚拟地址, 并将该地址进行转换, 生成与该虚 拟内存页的虚拟地址对应的物理地址, 同时在各用户操作系统中添加新的数据结构来存储 共享物理内存之前的虚拟地址和物理地址间的直接映射关系 ;
数据传输模块传输虚拟内存页的物理地址至虚拟机监控器, 实现虚拟地址到物理 地址的重新映射 ;
虚拟机监控器将用户操作系统所提交的物理地址映射至同一块预先分配好的共 享物理内存 ;
数据传输模块写入数据至所述共享物理内存中或者从所述共享物理内存中读取 数据。
本发明实施例的另一目的在于提供一种数据传输模块, 所述数据传输模块包括 :
共享物理内存申请单元, 用于接收输入的数据传输的请求指令, 并通过定义的动 态链接库提供的接口申请共享物理内存 ;
虚拟内存页申请单元, 用于根据该请求指令向操作系统申请虚拟内存页 ;
地址转换单元, 用于读取该虚拟内存页的虚拟地址, 并将该地址进行转换, 生成与 该虚拟内存页的虚拟地址对应的物理地址, 同时在各用户操作系统中添加新的数据结构来 存储共享物理内存之前的虚拟地址和物理地址间的直接映射关系 ;
地址传输单元, 用于传输虚拟内存页的物理地址至虚拟机监控器, 实现虚拟地址 到物理地址的重新映射 ;
数据传输单元, 用于写入数据至所述共享物理内存申请单元预先分配好的共享物 理内存中或者从所述共享物理内存读取数据。
本发明实施例的另一目的在于提供一种虚拟机监控器, 所述虚拟机监控器包括 :
地址映射单元, 用于将数据传输模块所传输的虚拟内存页的物理地址映射至预先 分配好的共享物理内存。
本发明实施例的另一目的在于提供一种并行运行多用户操作系统间的数据安全 传输系统, 所述系统包括虚拟机监控器和数据传输模块 ;
所述虚拟机监控器包括 :
地址映射单元, 用于将数据传输模块所传输的虚拟内存页的物理地址映射至预先 分配好的物理内存 ;
所述数据传输模块包括 :
共享物理内存申请单元, 用于接收输入的数据传输的请求指令, 并通过定义的动 态链接库提供的接口申请共享物理内存 ;
虚拟内存页申请单元, 用于根据所述请求指令向操作系统申请虚拟内存页 ;
地址转换单元, 用于读取所述虚拟内存页的虚拟地址, 并将所述地址进行转换, 生 成与所述虚拟内存页的虚拟地址对应的物理地址, 同时在各用户操作系统中添加新的数据 结构来存储共享物理内存之前的虚拟地址和物理地址间的直接映射关系 ;
地址传输单元, 用于传输虚拟内存页的物理地址至虚拟机监控器, 实现虚拟地址 到物理地址的重新映射 ;
数据传输单元, 用于写入数据至所述共享物理内存申请单元预先分配好的共享物 理内存中或者从所述共享物理内存读取数据。
本发明实施例的另一目的在于提供一种计算机系统, 包括硬件驱动层和应用层, 所述系统还包括如上所述的并行运行多用户操作系统间的数据安全传输系统。
在本发明实施例中, 通过先申请共享物理内存, 然后将第一操作系统的用户和第 二操作系统的用户申请的虚拟内存页的物理地址都指向该共享物理内存, 再向该共享物理 内存写入数据或从该共享物理内存读取数据来完成数据的交换, 不需要借助第三方工具即 可实现单机并行运行的多个操作系统之间数据的交换, 操作方便, 在保证了多个操作系统 的隔离性的同时, 又保证了数据传输过程中的安全性。 附图说明 图 1 是本发明实施例提供的多用户操作系统并行运行计算机系统架构示例图 ;
图 2 是本发明实施例提供的并行运行多用户操作系统间的数据安全传输方法的 实现流程图 ;
图 3 是本发明实施例提供的数据传输模块的结构示意图 ;
图 4 是本发明实施例提供的虚拟机监控器的结构示意图。具体实施方式
为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并 不用于限定本发明。
在本发明实施例中, 通过先申请共享物理内存, 然后将第一操作系统的用户和第 二操作系统的用户申请的虚拟内存页的物理地址都指向该物理内存, 再向该共享物理内存 写入数据或从该共享物理内存读取数据来完成数据的交换。
图 1 示出了本发明实施例提供的多用户操作系统并行运行计算机系统架构, 在本 实施例中, 以单机双用户操作系统并行运行计算机系统为例来进行说明, 该系统分为三层 : 硬件驱动层 11、 虚拟机监控层 12 和应用层 13。
硬件驱动层 11 基于硬件辅助虚拟化技术, 实现单机双操作系统并行运行计算机 产品, 此外, 硬件驱动层 11 基本使用双硬件架构, 即一台计算机包括双硬盘 ( 单硬盘也可以 实现, 双硬盘的隔离性更好一些 )、 双显卡、 双网卡、 双内存和双显示器 ( 可选 ), 实现双系统 的完全隔离、 独立、 并行运行。双用户操作系统分别使用独立的物理硬盘或者物理硬盘分 区、 网卡和显卡资源。至于显示器, 支持双用户操作系统的任务同步, 可以通过双显示器分 别输出两个操作系统需要显示的信息, 同时, 也支持双用户操作系统的任务, 通过预先定义 的快捷键或者切换热键通过同一个显示器异步输出两个操作系统需要显示的信息。 虚拟机监控层 12, 即虚拟机监控器, 由自主研发的微内核系统 ( 也称为虚拟机监 控管理平台 )121 和 Domain0122 两部分组成, 微内核系统 121 负责对上层双用户操作系统 的管理和计算机系统内存等硬件资源在双用户操作系统间的分配及硬件属性修改, 并将 其嵌入到定制开发的国产操作系统内核 (Domain0) 中, 解决了传统的虚拟机监控器 ( 比如 XEN) 存在明显缺陷, 比如, 图形处理能力低、 双系统间通讯采用虚拟网卡时存在安全隐患、 用户部署复杂等。本发明实施例对传统的虚拟机监控器 ( 比如 XEN) 的这些缺陷做了改 进, 包括 : 通过 1 ∶ 1 内存映射机制, 可以避免用户操作系统误访问微内核系统的代码和堆 栈所使用的内存, 导致系统崩溃的问题 ; 通过对显卡和串口设备的直接访问, 解决了基于硬 件辅助虚拟化技术的操作系统图形处理能力低的问题 ; 提供了电源管理机制、 双系统快速 切换机制等等。Domain0122 包含三个进程, 虚拟化管理模块 1221、 第一 IOEMU1222 和第二 IOEMU1223。其中, 第一 IOEMU1222 为用户 1 提供虚拟化设备, 第二 IOEMU1223 为用户 2 提 供虚拟化设备, 虚拟化管理模块实现对虚拟机的管理 ( 如用户 1 或用户 2 的创建、 启动、 关 闭、 睡眠、 重启 ) 以及信息的输入和显示的切换。IOEMU 负责实现设备虚拟化, 负责和微内 核系统 121 的交互, 为用户 1 或用户 2 提供一整套虚拟设备 ( 包括 PCI 总线、 显卡、 串口、 鼠 标、 键盘和硬盘控制器等 )。
应用层 13, 主要包括基于第一用户操作系统 131 和第二用户操作系统 132 的第 一数据传输模块 133 和第二数据传输模块 134 以及其它模块。数据传输模块 131 的实 现基于计算机底层双操作系统间独立的数据通道和操作系统应用层的用户界面 (User Interface, UI) 来表现。
图 2 示出了本发明实施例提供的并行运行多用户操作系统间的数据安全传输方
法的实现流程, 在本实施例中, 以双用户为例来进行说明, 详述如下 :
在步骤 S201 中, 数据传输模块接收输入的数据传输的请求指令, 并通过定义的动 态链接库提供的接口申请共享物理内存。
作为本发明的一个实施例, 运行在操作系统 1 和操作系统 2 中的数据传输模块分 别接收用户 1 和用户 2 输入的数据传输的请求指令, 并调用预先定义的动态链接库提供的 接口, 通过该动态链接库提供的接口申请共享物理内存。
在步骤 S202 中, 数据传输模块根据该请求指令向操作系统申请虚拟内存页。
作为本发明的一个实施例, 需要进行数据传输的各用户操作系统中的数据传输模 块向其所属的操作系统申请虚拟内存页, 对于不同的计算机而言, 可申请不同大小的虚拟 内存页, 一般取 “物理内存 *2.5” 或者 “物理内存 *1.5” , 但是并不适用于所有的计算机, 确 定申请的虚拟内存页的大小的最准确的方法是获取计算机在平常运行中实际使用的内存 页大小。
在步骤 S203 中, 数据传输模块读取该虚拟内存页的虚拟地址, 并将该地址进行转 换, 生成与该虚拟内存页的虚拟地址对应的物理地址, 同时在各用户操作系统中添加新的 数据结构来存储共享物理内存之前的虚拟地址和物理地址间的直接映射关系。 在本发明实施例中, 可以采用直接映象的页地址转换、 多级页表的地址转换、 反向 页表的地址转换或者快表的地址转换, 将读取到的虚拟内存页的虚拟地址转换成与该虚拟 内存页的虚拟地址对应的物理地址, 同时在各用户操作系统中添加新的数据结构来存储共 享物理内存之前的虚拟地址和物理地址间的直接映射关系。
在步骤 S204 中, 数据传输模块传输虚拟内存页的物理地址至虚拟机监控器, 实现 虚拟地址到物理地址的重新映射。
作为本发明的一个实施例, 操作系统 1 和操作系统 2 中的数据传输模块分别将其 申请得到的虚拟内存页的物理地址提交给虚拟机监控器, 实现虚拟地址到物理地址的重新 映射。
在步骤 S205 中, 虚拟机监控器将用户操作系统所提交的的物理地址映射到同一 块预先分配好的共享物理内存。
作为本发明的一个实施例, 虚拟机监控器将操作系统 1 和操作系统 2 所提交的物 理地址按照一定的映射规则指向同一块预先分配好的物理内存, 实现不同的地址指向同一 块共享物理内存, 至此, 两个操作系统中的用户就可访问一个相同的共享物理内存, 写入数 据至该共享物理内存或者从该共享物理内存读取数据, 在退出数据传输模块或传输结束时 调用预先定义的动态链接库提供的接口取消该共享物理内存, 同时取消两个用户操作系统 所提交的物理地址到共享物理内存的映射, 以便实现双用户操作系统间数据的安全交换和 传输。
在步骤 S206 中, 数据传输模块访问该共享物理内存, 写入数据至该共享物理内存 中或者从该共享物理内存读取数据。
本领域普通技术人员可以理解, 实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关的硬件来完成, 所述的程序可以在存储于一计算机可读取存储介质 中, 所述的存储介质, 如 ROM/RAM、 磁盘、 光盘等。
图 3 示出了本发明实施例提供的数据传输模块的结构, 为了便于说明仅示出了与
本发明实施例相关的部分。
该数据传输模块可以用于具有单机并行运行多用户操作系统的计算机系统的应 用层中, 可以是运行于单机并行运行多用户操作系统的计算机系统内的应用层软件单元、 硬件单元或者软硬件相结合的单元, 也可以作为独立的挂件集成到单机并行运行多用户操 作系统的计算机系统的应用层中, 该数据传输模块包括 : 共享物理内存申请单元 31、 虚拟 内存页申请单元 32、 地址转换单元 33、 地址传输单元 34、 数据传输单元 35。
其中, 共享物理内存申请单元 31 接收输入的数据传输的请求指令, 并通过定义的 动态链接库提供的接口申请共享物理内存。
虚拟内存页申请单元 32 根据共享物理内存申请单元 31 接收到的请求指令向操作 系统申请虚拟内存页。
地址转换单元 33 读取虚拟内存页申请单元 32 所申请的虚拟内存页的虚拟地址, 并将该地址进行转换, 生成与该虚拟内存页的虚拟地址对应的物理地址, 同时在各用户操 作系统中添加新的数据结构来存储共享物理内存之前的虚拟地址和物理地址间的直接映 射关系。
地址传输单元 34 传输地址转换单元 33 所生成虚拟内存页的物理地址至虚拟机监 控器, 实现虚拟地址到物理地址的重新映射。 数据传输单元 35 写入数据至共享物理内存申请单元 31 预先分配好的共享物理内 存中或者从该共享物理内存读取数据。具体情况如上所述, 在此不再赘述。
图 4 示出了本发明实施例提供的虚拟机监控器的结构, 为了便于说明仅示出了与 本发明实施例相关的部分。
该虚拟机监控器可以用于具有单机并行运行多用户操作系统的计算机系统中, 可 以是运行于单机并行运行多用户操作系统的计算机系统内的软件单元、 硬件单元或者软硬 件相结合的单元, 也可以作为独立的挂件集成到单机并行运行多用户操作系统的计算机系 统中, 该虚拟机监控器包括 : 地址映射单元 41 。
地址映射单元 41 将两个用户操作系统所提交的物理地址映射至同一块预先分配 好的共享物理内存。作为本发明的一个实施例, 虚拟机监控器将操作系统 1 和操作系统 2 所提交的物理地址按照一定的映射规则指向同一块预先分配好的共享物理内存, 实现不同 的地址指向同一块共享物理内存, 至此, 两个操作系统中的用户就可访问一个相同的共享 物理内存, 写入数据至该共享物理内存或者从该共享物理内存读取数据, 在退出数据传输 模块或传输结束时调用预先定义的动态链接库提供的接口取消该共享物理内存, 同时取消 两个用户操作系统所提交的物理地址到共享物理内存的映射, 以便实现双用户操作系统间 数据的安全交换和传输。
在本发明实施例中, 通过先申请共享物理内存, 然后将第一操作系统的用户和第 二操作系统的用户申请的虚拟内存页的物理地址都指向该物理内存, 再向该物理内存写入 数据或从该内存读取数据来完成数据的交换, 并在退出数据传输模块或数据传输结束时调 用定义的动态链接库提供的接口取消共享物理内存, 同时取消物理地址到共享物理内存的 映射, 安全可靠。不需要借助第三方工具即可在并行运行的多个操作系统之间完成数据的 交换, 操作方便, 在保证了多个操作系统的隔离性的同时, 又保证了数据传输过程中的安全 性, 另外, 多个操作系统之间数据传输的速度更快。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。