struct address_space解读

首先说的是Page Cache

address_space的操作将“文件”的某些部分映射到Linux page cache中的页面中。此page cache表示已映射到内存的某些物理设备(例如磁盘)上的数据。物理设备通常对应于磁盘,但不一定必须如此。以这种方式,page cache包含来自最近访问的“文件”的整个页面。在页面I / O操作(例如read()])中,内核检查数据是否驻留在page cache中。如果数据在page cache中,则内核可以快速返回请求的页面,而不必从磁盘读取数据。

address_space

一个物理页面可能包含多个不连续的物理块,由于构成每个页面的块的不连续性,检查page cache以查看是否已缓存某些数据变得更加困难。因此,不可能仅使用设备名称和块号来索引页面缓存中的数据,否则这将是最简单的解决方案。

例如,在x86架构上,物理页面的大小为4KB,而大多数文件系统上的磁盘块可以小到512字节。因此,一个页面中可能包含8个块。块不必是连续的,因为文件本身可能会在整个磁盘上布局。

你可能感兴趣的:(struct address_space解读)