当前位置: 首页 > Linux

IO-内存-文件系统-Ⅱ

时间:2023-04-07 00:43:37 Linux

tmpfstmpfs是一个基于内存的文件系统,使用虚拟内存(VM);它可以使用RAM和交换分区。因此,它有两个优点,一是速度快,二是动态分配虚拟空间的大小,并根据需要改变。linux内核配置一般会打开tmpfs并挂载到/dev/shm,可以通过df命令查看,通过mount命令可以改变大小,可以通过"ls/dev/shm"判断是否根据目录中是否有文件来使用。默认的/dev/shm分区大小是物理内存的50%。用于存放缓存,比如squid用来存放临时文件,比如浏览器缓存/Unixsockets。重启后数据丢失,如果需要持久化,需要自己实现大文件的读写。当文件不大的时候,直接读入内存,然后操作肯定是最快的方式。但是对于大文件,还有其他方法。比如在python中,打开文件后直接调用read函数,会将整个文件读入内存。如果文件接近或超过内存大小,自然会出现IOError。常用的方法是使用逐行循环的方法。这个时候python虚拟机在Managethebufferusedinternal.本质上应该是行缓冲输出。withopen("s1.txt","r")asf:forlineinf:printline在Java中,使用内存映射(Memory-MappedFiles)和RandomAccessFile,将文件映射到进程地址,即,虚拟内存空间,然后可以通过操作内存进行读写。RandomAccessFile,本质上结合了DataInputStream和DataOutputStream,加上seekformovement,获取大小Length,skipBytes等函数结合,通过mmap将文件内容按页映射到进程虚拟地址空间中的一个连续内存地址称呼;由于避免了用户空间和内核空间之间的数据拷贝,速度会提高很快。HugePage主要用于数据库。待续