mkswap 如何工作?它创建的交换标头中有什么?

cur*_*rge 3 linux swap

我正在查看 mkswap 并试图了解它的工作原理。据我了解,它通过创建交换标头在分区上设置交换空间。这个交换头有多大?是一个街区吗?或者它总是一个一致的大小?

我确实尝试过查看 mkswap.c 源代码,但我的 C 知识不足以理解它。具体来说,我认为以下行写出了交换标头:

strncpy((char*)signature_page+PAGE_SIZE-10,"SWAP-SPACE",10);
Run Code Online (Sandbox Code Playgroud)

cur*_*rge 5

我可以看到 O'Reilly 由 Mssrs Bovet 和 Cesati 撰写的“了解 Linux 内核”,第 714 页(交换区)提供了这个问题的答案。换句话说,swap_header 由两个结构组成,“info”和“magic”。我上面粘贴的代码与魔法部分有关 - 它从字面上写出“SWAP-SPACE”作为第一页的最后 10 个字符(在某些版本中它是“SWAPSPACE2”)。

info 结构在前 1024 个字节之后开始,并有各种字段来描述交换机制。