014 Linux文件系统数据结构详解:地址空间struct address_space

什么是地址空间address_space?是Linux内核提供的一种数据结构,通过该数据结构可以管理离散到各设备上的数据映射到内存的page缓存页面。

听起来很晦涩,其实地址空间就是一个中间层,内核把周边离散的设备组织起来,然后映射到page缓存页面,内核子系统通过地址空间,就可以操作这些page缓存页面,进而达到操作周边设备的目的。

所以page就是内核管理的虚拟内存空间,它是真实物理设备的在内存上的映射,通过操作page页面,就可以完成对具体物理设备操作,这样做的好处是:

  • ① 屏蔽了多种设备的物理差异,避免内核子系统直接访问物理设备
  • ② 相比CPU操作外设的等待时间,内存操作更加高效,提升了整体性能
  • ③ 文件在设备上可能是不连续的,通过page页面屏蔽这个矛盾,通过连续的page呈现给程序

举例说明:一个文件的数据存储在块设备上,内核将块设备映射到缓存页面page,VFS通过地址空间就可以操作缓存页面page,完成文件的读取和写入。

地址空间和虚拟内存
地址空间和虚拟内存
继续阅读“014 Linux文件系统数据结构详解:地址空间struct address_space”