首页   快速返回

内存映射文件     所属分类 architecture
RAM   硬盘交换区 swap
物理内存不够,把内存中暂时不用的数据放到硬盘的交换分区上
请求的数据不在内存中时,系统产生缺页中断,内存管理器将对应的内存页从硬盘调入物理内存。

内存映射文件是由一个文件到一块内存的映射,使应用程序可以通过内存指针对磁盘上的文件进行访问,适合于用来管理大文件。

二者的区别
虚拟内存使用硬盘只能是页面文件,内存映射可使用任何磁盘文件
虚拟内存架构在物理内存之上 ,内存映射文件架构在程序地址空间之上
内存映射文件 处理大文件,用作进程间通信

内存映射文件原理


硬盘文件 进程逻辑地址空间
内存映射过程中,并没有实际的数据拷贝 ,文件没有被载入内存,只是逻辑上放入了内存
使用系统调用mmap()实现,映射的效率很高



MMU  Memory Management Unit

物理内存 page 
硬盘 虚拟内存 swap页   文件系统  物理文件

进程逻辑地址空间   MMU地址转换

mmap() 没有实际数据拷贝 
真正的数据拷贝在 缺页中断时处理


FileInputStream
BufferedInputStream
MappedByteBuffer buffer=new RandomAccessFile("./largeFile.txt","rw").getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 1253244);
          
传统IOread文件,不使用缓冲区 
传统IOread文件,使用缓冲区 
内存映射文件读取文件

上一篇     下一篇
sendfile 零拷贝机制

区块链简介

文字与货币

InnoDB锁机制之Gap Next-Key Record Lock

Mysql事务隔离级别

innodb mvcc