为了使用存储设备,我们需要一个文件系统,交换空间如何?
如果没有文件系统,操作系统如何使用它?(来自RAM的)数据如何写入磁盘,以及如何再次访问?
为了使用存储设备,我们需要一个文件系统,交换空间如何?
如果没有文件系统,操作系统如何使用它?(来自RAM的)数据如何写入磁盘,以及如何再次访问?
Answers:
从技术上讲,交换没有特定的文件系统。文件系统的全部目的是以某种方式构造数据。特别是交换分区没有结构,但是它确实有一个特定的标头,它是由mkswap
程序创建的。特别是(取自kernel.org):
25 union swap_header {
26 struct
27 {
28 char reserved[PAGE_SIZE - 10];
29 char magic[10];
30 } magic;
31 struct
32 {
33 char bootbits[1024];
34 unsigned int version;
35 unsigned int last_page;
36 unsigned int nr_badpages;
37 unsigned int padding[125];
38 unsigned int badpages[1];
39 } info;
40 };
根据TLDP,每个分区都有与之关联的特定代码:
ext2的代码是0x83,Linux交换是0x82
当涉及交换文件时,情况稍有不同。内核必须尊重以下事实:文件系统可能具有自己的数据结构方式。从同一kernel.org链接:
请记住,文件系统可能有自己的存储文件和磁盘的方法,它不像交换分区那样简单,在交换分区中,信息可以直接写入磁盘。如果后备存储是一个分区,则仅一个页面大小的块需要IO,并且由于不涉及文件系统,因此bmap()是不必要的。
总之,从技术上讲,您可以将交换空间称为自己类型的文件系统,但它与NTFS或ext4之类的文件系统不具有可比性
你也问过
我想知道如何在没有文件系统的情况下写入存储空间
严格来说,不需要构造RAM。但是,在类似Unix的操作系统下,RAM的某些部分可以构造为tmpfs。还有ramfs和initramfs,它们是在引导过程中加载的。但是从技术上讲,RAM数据应该是原始的1和0,因此无论如何都无需构造它们。