linux的一个swap area可以是一个分区,也可以是一个文件,因为可以是一个文件,所有每个swap area包含一个或多个swap extent,用swap_extent来进行表示。每个swap_extent代表一个连续的磁盘空间。如果swap area是一个分区,那么它只有一个swap extent,如果是一个文件那么,文件在磁盘上有多少个连续的分区就有多少个swap extent。
linux使用swap_info(一个数组)来描述所有的swap area,每个swap area使用swap_area_info来描述。每个swap area被分为多个page slot,对应一个page frame,第一个page slot用来存储swap area的一些信息,不能用与page frame的存储。
当一个page frame被换到swap时,它对应的页表项会保存这样一个索引:
page slot index(31-8)area number(7-1)0
其中的第0位的值是0,表示页项对应的page frame不在内存中,在swap区里。