安洛
2024-10-18 12:42 deepin
昨夜的星辰:
有一个疑问,写回文件是指的写到哪里?既然是能写回到文件里的数据,为什么还要待在内存里,是需要频繁使用的缓存数据?搞不懂😂
对Linux系统来说,绝大多数情况下,CPU访问文件数据时都是先将文件数据从硬盘加载到内存,再处理数据(当然实际处理过程更加复杂,涉及高速缓存、寄存器等多级存储)。CPU几乎不会直接操作硬盘中的数据。程序在运行的时候会打开大量的文件,例如程序本身的可执行文件、程序要使用的数据文件、程序的配置文件等等。这些文件都会被加载到内存中。
例如,下图是Firefox浏览器进程的内存映射表的局部。可以看到,绝大多数内存空间都有对应的“文件名”。包括.so文件(可执行文件),.mo文件(语言文件)等。
被加载到内存中的文件如果不主动释放,一般不会马上写回硬盘,毕竟每次写硬盘都会有额外的开销,与其每修改一次就写回一次硬盘,不如先在内存中暂存更改,等到文件被释放的时候再一次性写回。
当内存被占满时,没有对应文件的内存数据(通常是程序运行中直接写入内存的数据)只能被换入swap,而以上这些从文件加载进内存中的数据就有两个选择,可以被写回文件,或者换入swap。swappiness就是决定它们是被换入swap,还是写回文件。
Reply Like 0 View the author
如题