随着业务快速发展,基于lucene的索引文件zip压缩后也接近了GB量级,而保持索引文件大小为一个可以接受的范围非常有必要,不仅可以提高索引传输、读取速度,还能提高索引cache效率(lucene打开索引文件的时候往往会进行缓存,比如MMapDirectory通过内存映射方式进行缓存)。 ...
分类:
Web程序 时间:
2014-11-02 12:20:23
阅读次数:
388
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一...
分类:
其他好文 时间:
2014-10-30 13:06:43
阅读次数:
176
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一...
分类:
其他好文 时间:
2014-10-30 13:05:29
阅读次数:
223
可以看到内存映射中需要的一个参数是int fd(文件的标识符),可见函数是通过fd将文件内容映射到一个内存空间,我需要创建另一个映射来得到文件内容并统计或修改,这时我创建这另一个映射用的仍是mmap函数,它仍需要用到fd这个文件标识,那我不等于又重新打开文件读取文件里的数据1.既然这样那同对文件的直...
分类:
其他好文 时间:
2014-10-29 23:53:37
阅读次数:
218
当文件过大时,无法一次性载入内存时,就需要分次,分段的载入文件主要是用了以下的WinAPILPVOID MapViewOfFile(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD d...
共享内存的方式原理就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信。因为是通过内存操作实现通信,因此是一种最高效的数据交换方法。共享内存在 Windows 中是用 FileMapping 实现的,从具体的实现方法上看主要通过以下几步来实现:1、...
简介
许多类型的驱动程序编程都需要了解一些虚拟内存子系统如何工作的知识当遇到更为复杂、性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到本章的内容分成三个部分
讲述mmap系统调用的实现过程讲述如何跨越边界直接访问用户空间的内存页讲述了直接内存访问(DMA)I/O操作,它使得外设具有直接访问系统内存的能力
Linux的内存管理
地址类型
Linux是一个虚拟内存...
分类:
系统相关 时间:
2014-10-09 17:12:38
阅读次数:
279
一、说明
(*(volatile unsigned long *))
这个语句对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。如果是内存映射,那就方便多了。
二、举例讲解
以 #define IOPIN (*((vo...
分类:
其他好文 时间:
2014-10-07 13:50:34
阅读次数:
209
介绍了Java的IO机制,包括基于流的字节IO,字符IO中各种类的作用; 同时介绍了新IO中的重要概念,包含Buffer原理,Channel与Buffer如何配合使用,Selector与Channel如何配合使用,以及内存映射文件,文件锁。...
分类:
编程语言 时间:
2014-09-25 22:58:58
阅读次数:
315
http://blog.csdn.net/hongchangfirst/article/details/11599369我们先来看看如果不使用内存映射文件的处理流程是怎样的,首先我们得先读出磁盘文件的内容到内存中,然后修改,最后回写到磁盘上。第一步读磁盘文件是要经过一次系统调用的,它首先将文件内容从...
分类:
其他好文 时间:
2014-09-25 01:12:57
阅读次数:
174