Sinoosh Asked: 2016-11-07 02:55:07 +0800 CST2016-11-07 02:55:07 +0800 CST 2016-11-07 02:55:07 +0800 CST 交换空间有文件系统吗? 772 为了使用存储设备,我们需要一个文件系统,那么交换空间呢? 如果它没有文件系统,操作系统如何使用它?数据(从 RAM 中)如何写入磁盘,以及如何再次访问? partitioning 3 个回答 Voted Best Answer Sergiy Kolodyazhnyy 2016-11-07T03:34:58+08:002016-11-07T03:34:58+08:00 交换技术上没有特定的文件系统。文件系统的全部目的是以某种方式构造数据。特别是交换分区没有结构,但它确实有一个特定的标题,它是由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 swap 是 0x82 当涉及交换文件时,情况略有不同。内核必须尊重文件系统可能有自己的数据结构方式这一事实。从同一个 kernel.org 链接: 请记住,文件系统可能有自己的文件和磁盘存储方法,它不像交换分区那样简单,信息可以直接写入磁盘。如果后备存储是一个分区,那么只有一个页面大小的块需要 IO,并且由于不涉及文件系统,因此 bmap() 是不必要的。 总之,从技术上讲,您可以将交换空间称为它自己类型的文件系统,但它与 NTFS 或 ext4 等文件系统不太可比 你也问过 我想知道如何在没有文件系统的存储空间中写入 严格来说,没有必要对 RAM 进行结构化。但是,在类 Unix 操作系统下,部分 RAM 可以构造为tmpfs 。还有ramfs和 initramfs ,它们是在引导过程中加载的。但从技术上讲,RAM 数据应该只是原始的 1 和 0,因此无论如何都不需要构造它们。 Jake 2016-11-07T03:04:16+08:002016-11-07T03:04:16+08:00 内核使用交换空间来临时存储系统内存 (RAM) 变满时的页面。内核使用它自己的内部表来“记住”它在交换磁盘中放置页面的确切位置。结果,交换磁盘不包含正确的文件系统,通常只是磁盘上的空白分区。 您可能感兴趣的是 RAM 磁盘,它是存储在系统内存中的小型文件系统。如果需要更多内存,内核会将其(和其他内容)推送到交换空间。有关设置的说明,请参见此处。 thomasrutter 2016-11-07T21:11:53+08:002016-11-07T21:11:53+08:00 交换空间被划分为与内存页大小相同的块(通常为 4kB),这些页到应用程序内存的映射记录形成了 CPU 和 OS 中虚拟内存子系统的扩展。 也就是说,在应用内存空间和实际物理内存地址之间已经有了一个映射系统。应用程序被赋予一个大的内存地址空间,他们可以尽可能多地或尽可能少地使用它。随着更多的内存地址空间被实际使用,物理内存被映射到该应用程序以用作存储介质。 当内存被交换到磁盘时,相关系统会维护应用程序内存空间到磁盘块的映射。 映射表本身并不存储在磁盘上,磁盘上剩余的数据在重启后就没用了。
交换技术上没有特定的文件系统。文件系统的全部目的是以某种方式构造数据。特别是交换分区没有结构,但它确实有一个特定的标题,它是由
mkswap
程序创建的。特别是这个(取自kernel.org):每个分区都有与之关联的特定代码,并且根据TLDP:
当涉及交换文件时,情况略有不同。内核必须尊重文件系统可能有自己的数据结构方式这一事实。从同一个 kernel.org 链接:
总之,从技术上讲,您可以将交换空间称为它自己类型的文件系统,但它与 NTFS 或 ext4 等文件系统不太可比
你也问过
严格来说,没有必要对 RAM 进行结构化。但是,在类 Unix 操作系统下,部分 RAM 可以构造为tmpfs 。还有ramfs和 initramfs ,它们是在引导过程中加载的。但从技术上讲,RAM 数据应该只是原始的 1 和 0,因此无论如何都不需要构造它们。
内核使用交换空间来临时存储系统内存 (RAM) 变满时的页面。内核使用它自己的内部表来“记住”它在交换磁盘中放置页面的确切位置。结果,交换磁盘不包含正确的文件系统,通常只是磁盘上的空白分区。
您可能感兴趣的是 RAM 磁盘,它是存储在系统内存中的小型文件系统。如果需要更多内存,内核会将其(和其他内容)推送到交换空间。有关设置的说明,请参见此处。
交换空间被划分为与内存页大小相同的块(通常为 4kB),这些页到应用程序内存的映射记录形成了 CPU 和 OS 中虚拟内存子系统的扩展。
也就是说,在应用内存空间和实际物理内存地址之间已经有了一个映射系统。应用程序被赋予一个大的内存地址空间,他们可以尽可能多地或尽可能少地使用它。随着更多的内存地址空间被实际使用,物理内存被映射到该应用程序以用作存储介质。
当内存被交换到磁盘时,相关系统会维护应用程序内存空间到磁盘块的映射。
映射表本身并不存储在磁盘上,磁盘上剩余的数据在重启后就没用了。