当前位置:首页 > 编程开发

内存映射文件/堆 栈

webgou17年前 (2010-02-26)编程开发170
[B]内存映射文件[/B] 对文件进行操作几乎是所有应用程序都必须进行的,并且这常常是人们争论的一个问题。应用程序究竟是应该打开文件,读取文件并关闭文件,还是打开文件,然后使用一种缓冲算法,从文件的各个不同部分进行读取和写入呢?M i c r o s o f t提供了一种两全其美的方法,那就是内存映射文件。 与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。 内存映射文件可以用于3个不同的目的: * 系统使用内存映射文件,以便加载和执行 . e x e和D L L文件。这可以大大节省页文件空间和应用程序启动运行所需的时间。 * 可以使用内存映射文件来访问磁盘上的数据文件。这使你可以不必对文件执行I / O操作,并且可以不必对文件内容进行缓存。 * 可以使用内存映射文件,使同一台计算机上运行的多个进程能够相互之间共享数据。 Wi n d o w s确实提供了其他一些方法,以便在进程之间进行数据通信,但是这些方法都是使用内存映射文件来实现的,这使得内存映射文件成为单个计算机上的多个进程互相进行通信的最有效的方法。 [B]堆 栈[/B] 对内存进行操作的第三个机制是使用堆栈。堆栈可以用来分配许多较小的数据块。堆栈的优点是,可以不考虑分配粒度和页面边界之类的问题,集中精力处理手头的任务。堆栈的缺点是,分配和释放内存块的速度比其他机制要慢,并且无法直接控制物理存储器的提交和回收。 从内部来讲,堆栈是保留的地址空间的一个区域。开始时,保留区域中的大多数页面没有被提交物理存储器。当从堆栈中进行越来越多的内存分配时,堆栈管理器将把更多的物理存储器提交给堆栈。物理存储器总是从系统的页文件中分配的,当释放堆栈中的内存块时,堆栈管理器将收回这些物理存储器。

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=133

标签: winowsos
分享给朋友:

“内存映射文件/堆 栈” 的相关文章

AI 使用 Unity MCP 自动操作 Unity:从连接配置到生成五子棋场景的实战记录

MCP Server 启动验证Unity 插件连接验证新建 Unity 场景创建并挂载 MonoBehaviour 脚本实现单机五子棋Play Mode 验证Console 错误检查对于 Unity 开发来说,这类工具很适合做原型验证和重复性编辑器操作。它还不能完全替代开发者,但已经可以显著减少“写…

S3C2440 WINCE4.2 BSP的串口修改

S3C2440 WINCE4.2 BSP的串口修改 说明:在基于SMDK2440的BSP中,S3C2440的UART0初始化为了COM1,UART1用作了WindowsCE 系统的debug串口,用户程序不可用,而UART2则工作在IrDA模式.也就是说,用户程序只有一个串 口可以使用,如果要连…

多线程中生成随机数序列重复问题的解决方法

使用过随机数的程序员都知道在程序中并不能够实现的真正的完全的随机数函数。随机数函数产生的是通过公式计算出来的一系列伪随机数,这个公式会采用一个种子数计算出一个数,而该数将成为产生下一个数的种子数。基于产生随机数的原理,两次调用随机数后产生的随机数序列将是一样的,显然,这不是我们的期望的结果。....…

WM_DESTROY与WM_CLOSE

由于wce中,要重写wtl的CFrameWindow,然后采用CWindowImpl去实现View,view里面加入了函数: 并加入CWindowImpl实现的CButton成员函数: CMYButton m_btn1; ...…

Android Java包各种功能概览

熟悉Android操作系统的朋友都知道,开发Android应用程序基本上使用的都是Java语言。那么要想灵活的应用这一系统,就应当熟悉其中的Android Java包的各种功能。一般的JAVA应用中,如果需用引用基础类库,通常需要使用如下的方式:import javax.swing.*;&…

阿里云ECS装docker+SS

 仅仅个人笔记记录下:首先主机选择ubuntu 14.04 64位的镜像,然后安装后apt-get update, apt-get -y upgrade。...…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。