Linux存储管理相关总结

Linuxer 2015-11-14

说到存储管理,不得不提虚拟内存技术。虚拟内存技术使得系统中为有限物理内存竞争的进程所需内存空间得到满足。但是操作系统自身也运行在虚拟内存中的意义不大。如果操作系统被迫维护自身的页表那将是一个令人恶心的方案。Linux 核心直接运行在物理地址空间上。

功能:巨大的寻址空间,内存映射,公平的物理内存分配及共享虚拟内存。

Linux 使用请求换页将可执行映象加载到进程的虚拟内存中。当命令执行时,可执行的命令文件被打开,同时其内容被映射到进程的虚拟内存。这些操作是通过修改描叙进程内存映象的数据结构来完成的,此过程称为内存映射。然而只有映象的起始部分被调入物理内存,其余部分仍然留在磁盘上。当映象执行时,它会产生页面错误,这样Linux 将决定将磁盘上哪些部分调入内存继续执行。

内存交换,如果进程需要把一个虚拟页面调入物理内存而正好系统中没有空闲的物理页面,操作系统必须丢弃位于物理内存中的某些页面来为之腾出空间。如果那些从物理内存中丢弃出来的页面来自于磁盘上的可执行文件或者数据文件,并且没有修改过则不需要保存那些页面。当进程再次需要此页面时,直接从可执行文件或者数据文件中读出。但是如果页面被修改过,则操作系统必须保留页面的内容以备再次访问,这种页面被称为dirty 页面。页面衰老算法来公平地选择将要从系统中抛弃的页面。

高速缓冲,Linux 使用了许多与高速缓冲相关的内存管理策略。

Buffer Cache,包含了被块设备驱动使用的数据缓冲;Page Cache,用来加速硬盘上可执行映象文件与数据文件的存取;Swap Cache,只有修改过的页面存储在交换文件中。只要这些页面在写入到交换文件后没有被修改,则下次此页面被交换出内存时,就不必再进行更新写操作,这些页面都可以简单的丢弃。在交换频繁发生的系统中,SwapCache 可以省下很多不必要且耗时的磁盘操作;Hardware Caches。

相关推荐