VC内存映射文件共享设计与实现
以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
摘 要随着计算机操作系统的发展,多任务多进程已经被广泛应用。为了加速应用程序的运行,往往会在系统中建立多个进程,由这些进程相互合作去完成一个共同的任务,经常需要在进程之间交换信息、传递数据。Windows提供了多种机制,使应用程序能够迅速而方便地共享数据和信息,这些机制包括RPC、COM、OLE、DDE、窗口消息(尤其是WM_COPYDATA)、剪贴板、邮箱、管道和套接字等;而这些机制均使用内存映射文件,在Windows系统中,单个计算机上共享数据的最低层机制是内存映射文件。如果互相进行通信的所有进程都在同一台计算机上的话,使用内存映射文件进行共享,系统的性能较高和开销较小。本文主要阐述了内存映射文件基本原理和实现方法,探讨和研究了如何在Visual C++环境下利用MFC类库编写使用内存映射文件来完成进程间数据共享,并给出了应用实例。关键词:内存映射文件;进程通信;MFC1 引 言1.1 课题背景随着计算机操作系统的发展,多任务多进程已经被广泛应用。同时也就涉及到进程之间的通信和数据共享等问题。在Windows中,在单个计算机上共享数据的最低层机制是内存映射文件。如果互相进行通信的所有进程都在同一台计算机上的话,如RPC、COM、OLE、DDE、窗口消息(尤其是WM_COPYDATA)、剪贴板、邮箱、管道和套接字等所有机制均使用内存映射文件从事它们的烦琐工作。所以研究内存映射文件的原理,在实际编程中实现进程的共享成了本课题的主要研究对象。1.2 本课题研究的意义内存映射文件是实现进程共享通讯的基础,它也是Windows的一种内存管理方法,提供了一个统一的内存管理特征,使应用程序可以通过内存指针对磁盘上的文件进行访问,其过程就如同对加载了文件的内存的访问,非常方便和高效。内存映射文件是多个进程间共享数据最有效的方法,通过研究内存映射原理,熟悉方法并将其应用到实际的工程中,加以实践,掌握进程间通讯的方法。本文主要阐述如何在Visual C++环境下,运用MFC实现使用内存映射文件进行进程间数据共享的方法。1.3 课题研究方法进程间的通讯类型有多种,本课题主要是研究利用内存映射文件来实现基于共享存储区的通信方式,这样的通信方式一般适合于传输大量数据。Visual C++是一个很好的可视化编程工具。作为Windows环境下最主要的应用开发系统之一,Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所以利用Visual C++开发系统可以完成各种各样的应用程序的开发,从底层软件直到上层直接面向用户的软件。使用Visual C++环境来开发基于Windows的应用程序大大缩短了开发时间。使用Visual C++2005,运用MFC设计一个使用内存映射文件来传递BMP文件到另一进程显示的实例,并分析相关代码。2 开发平台简介Visual C++自诞生以来,一直是Windows环境下最主要的应用开发系统之一。Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所以利用Visual C++开发系统可以完成各种各样的应用程序的开发,从底层软件直到上层直接面向用户的软件。而MFC编程是在Visual C++的一种编程方法。2.1.1 关闭文件映射对象调用CloseHandle()函数即可关闭文件映射对象。如果忘记关闭对象,在程序继续运行时将会出现资源泄漏。虽然在程序退出运行时,操作系统会自动关闭在进程中已经打开但未关闭的任何对象。但是在进程的运行过程中,势必会积累过多的资源句柄。因此在不再需要使用对象的时候通过CloseHandle()将其予以关闭是有意义的。2.2 内存映射文件在进程数据共享中的应用2.2.1 进程的相关概念在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性及不可再现性的特征。这决定了通常程序是不能参与并发执行的,因为程序执行的结果是不可再现的。这样程序的运行也就失去了意义。为使程序能并发执行,且为了对并发执行的程序加以描述和控制,人们引入了”进程”概念。由程序段、相关的数据段和PCB三部分组成构成了进程实体。PCB是为了程序(含数据)能独立运行而为之配置的进程控制块。进程是进程实体的运行过程,使系统资源分配和调度的一个独立单位。如图1所示。
包含资料:
[来源:http://think58.com]
源程序+论文(15000字以上)+可执行程序+答辩稿ppt+开题报告+外文翻译
内容来自think58 [版权所有:http://think58.com]
[资料来源:THINK58.com]
获取资料请您联系本站客服