内存映射文件
所属分类 architecture
浏览量 1877
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