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

内存映射文件/堆 栈

webgou17年前 (2010-02-26)编程开发195
[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
分享给朋友:

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

不,我们完全有必要对抄袭这个事情敏感

山寨和抄袭是中国互联网上永恒的话题。近年来常见的几种说法: 抄袭和模仿是必经阶段。太阳底下无新事,没有什么东西是完全原创的。中国互联网公司都抄,但不是每家都能抄成功。抄不等于成功,我们不应该单纯因为一家公司抄袭就反对它。美国也有抄袭。 在上面的链接里,有人提出「很多人把抄袭这个事情放的太大了,我们没…

[转]Apktool(1)——Apktool的安装

 来源:https://www.cnblogs.com/mliangchen/p/5079783.htmlApktool(1)——Apktool的安装...…

iPhone的操作系统介绍MacOS X

摘要:Mac OS X 使用基于 BSD Unix 的内核,并带来Unix风格的内存管理和抢占式多任务处理 (pre-emptive multitasking)。大大改进内存管 理,允许同时运行更多软件,而且实质上消除了一个程序崩溃导致其它程序崩溃的可能性。...…

axis支持的类型

那些java的对象是可以序列化为xml的, 并且可以从xml反序列化为java对象的?那些对象与xml之间不能够序列化和反序列化?在开发的时候应该注意哪些问题?根据我的理解, 有如下几种对象:1)axis1.2内在支持的几种对象类型。     &nb…

FAT16/23 DBR 格式说明

Boot Sector and BPB Structure…

kbengine 使用记录

kbengine :2019/3/8 引擎代码托管在GitHub:服务器引擎工程:https://github.com/kbengine/kbengineunity3d插件工程::https://github.com/kbengine/kbengine_unity3d_plugins...…

发表评论

访客

看不清,换一张

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