我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>行业知识

WinNT下Vega虚拟现实视景仿真软件的分析与设计

文章来源:搜维尔[SouVR.com] 作者:Frank 发布时间:2011年07月07日 点击数: 字号:
  3.3.1 Windows NT 上的进程间通信

  在 Windows NT 平台上,进程间通信的主要方式有:动态数据交换(DDE),网络动态数据交换(NetDDE),Windows套接字(Windows Sockets),命名管道(Named Pipes),内存映射文件(Memory-Mapped Files),NetBIOS,远程过程调用(RPC)以及磁盘文件等。在特定的场合下,应选用适当的通信方式以最佳地满足应用性能上的要求和便于功能上的实现及扩展。在视景驱动模块中,由于 Vega 进程和 MFC 主进程将运行在同一台 PC 上,所以主要应用于网络环境中 PC间的进程间通信的 NetDDE、Windows Sockets、NetBIOS 以及 RPC 皆不予考虑。而通过磁盘文件来进行数据交换显然是行不通的,这使得直接在内存中进行通信成为必要。因为在Vega进程和MFC主进程间除了要传递大量的视景驱动数据外,还要进行一些控制信息的传递,鉴于实现的快捷性、进程通信速度上的性能要求以及便与功能的扩展等方面的综合考虑,采用内存映射文件的方式将是最佳的。

  3.3.2 内存映射文件

  在Windows NT中的虚拟内存管理器为每一个进程都提供了它自己的虚拟地址空间,而且各个进程间的虚拟地址空间是相互独立的。这使得每个进程只能在它自己的进程空间内运行,而不能直接访问其它的进程空间,这也是 WindowsNT 比较稳定的一个重要原因。但是进程间如何进行内存共享呢?Windows NT 通过提供一种称为文件映射对象[7-8]的内核对象来实现。在 Windows 的内存管理器中用于执行共享的基元叫做“区域对象”,在 Win32 API中它们被称为“文件映射对象”。区域对象在内存管理器中被用来把虚拟地址映射到磁盘页面上,不管它是在页面的文件中还是在应用程序想访问的其它文件中,它就像在内存中一样。一个区域可以被一个进程打开也可以被多个进程打开。区域对象可以被连接到在磁盘上已打开的文件(称为映射文件)或一串页面调度文件(以提供共享内存)上。由于区域对象可用来提供多个进程的共享内存,这样使得进程间交换数据能够在内存中进行,在速度上能够匹配应用。内存映射文件的结构[9]如图 4所示,其中的磁盘文件在进程间仅共享内存时无需存在。

  3.3.3 基于 MFC 的 Vega 应用的进程实现

  在 Windows NT 平台上采用文件映射对象,使得 Vega进程与 MFC 界面主进程之间能够进行有效的数据交换。图5 显示了视景驱动模块中两个进程实现的流程图,图中略去了 MFC 主进程中的用户界面控制部分。 因为分离出来的 Vega 进程是一个控制台程序(尽管它还创建了自己的渲染窗口),所以它没有消息泵,不能通过消息机制响应应用要求。而 Vega 应用框架中的渲染主循环恰恰可以插入一些操作用来模拟一个消息泵,以完成 MFC的虚拟内存的主进程的要求操作,这个被传递的消息同样可以放在文件映射对象中。反之,由于 MFC 主进程是一个窗口应用,它本身具有接收消息的功能,因此只需直接向其发送 Windows消息即可。图 6 显示了实现两进程间主要功能的内存映射文件中的数据结构。至此,通过 Windows 内存管理中的文件映射对象,不仅解决了两个进程间的共享数据和传输数据的速率问题,还提供了 Vega 进程一个虚拟的消息泵来完成主进程的要求操作。

WinNT下Vega虚拟现实视景仿真软件的分析与设计

WinNT下Vega虚拟现实视景仿真软件的分析与设计

  4 结论

  Vega 系统作为一种视景驱动软件平台,大量用于系统仿真和虚拟现实中。由于它本来是工作在SGI UNIX 平台上的,后来因为 Windows 系统的流行以及应用的需求而移植到 Windows NT 平台上的,这样 Windows 开发人员也能根据

  需要开发出基于 Vega 系统的应用了。但与此同时由于 Vega的移植目标是最大限度的便于现有的 UNIX 程序的移植,而不是重新构架整个系统,所以在所难免的会出现一些问题。本文从面向对象的软件分析与设计,软件系统的分析与设计,可复用面向对象的软件技术——设计模式以及 Windows的核心机制等几个主要方面对基于 Windows NT 平台的Vega 应用软件的开发作了较详尽透彻的分析与设计,并最终根据提出的栅栏模式,采用 Windows NT 中的内存映射文件,给出了基于多进程的 Vega 应用的设计方案。虽然该设计方案是在开发FVSS系统中的视景驱动模块逐步分析和设计的结果,但由于它是在对 Vega 系统的透彻分析下得出的,所以具有广泛的通用性和实用性。

共3页 您在第3页 首页 上一页 1 2 3 下一页 尾页 跳转到页 本页共有2372个字符
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料