Есть ли в разделе подкачки файловая система?

26

Для работы с устройствами хранения нам нужна файловая система, а как насчет пространства подкачки?

Если у него нет файловой системы, как с ним работает операционная система? Как данные (из ОЗУ) записываются на диск и как к ним снова обращаться?

Sinoosh
источник
6
Своп не нуждается в файловой системе. Он не хранит файлы.
Pilot6
3
Он хранит страницы ОЗУ.
Pilot6
2
Не могли бы вы объяснить, что именно вы пытаетесь сделать? Вы говорите, что все, что вам нужно, это место для временного хранения данных?
Джейк
6
«Я хочу знать, как можно записать в хранилище без файловой системы?» - Вы просто пишете в место для хранения. Подумайте об этом: если файловая система требовалась для записи в пространство хранения, то файловые системы не могли бы существовать, потому что файловые системы должны иметь возможность записи в хранилище без файловой системы. "согласно вашему ответу могу ли я сказать, что в ОЗУ имеется небольшая файловая система, а файл подкачки использует эту файловую систему для работы со страницами? - Нет. Файловая система предназначена для хранения файлов. Пространство подкачки не хранит файлы.
Jörg W Mittag
4
Весьма распространено записать один файл (ala tar и dd) в неформатированное хранилище, а еще чаще использовать вложенные файловые системы (виртуальные диски, .iso, squashfs). Игры на дискетах иногда записывают высокие результаты в абсолютное (фиксированное) местоположение, а некоторые приложения основаны на Cylinder, Head, Sector. Разделы подкачки по-прежнему являются разделами, но нет, там нет файловой системы или «сопоставления», кроме смещения и запуска?
Маккензм

Ответы:

28

У свопа технически нет конкретной файловой системы. Вся цель файловой системы - структурировать данные определенным образом. В частности, раздел подкачки не имеет структуры, но у него есть определенный заголовок, который создается 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:

Помните, что файловые системы могут иметь свой собственный метод хранения файлов и диска, и это не так просто, как раздел подкачки, где информация может быть записана непосредственно на диск. Если резервное хранилище является разделом, то для ввода-вывода требуется только один блок размером с страницу, а поскольку файловая система не задействована, bmap () не требуется.

В заключение, технически вы можете назвать swap space файловой системой своего типа, но она не совсем сопоставима с файловыми системами, такими как NTFS или ext4.

Вы также спросили

Я хочу знать, как можно записать в памяти без файловой системы

Строго говоря, нет необходимости структурировать оперативную память. Однако части ОЗУ могут быть структурированы как tmpfs в Unix-подобных ОС. Также есть ramfs и initramfs, которые загружаются в процессе загрузки. Но технически данные ОЗУ должны быть просто необработанными единицами и нулями, поэтому в любом случае их не нужно структурировать.

Сергей Колодяжный
источник
1
Хорошо отметить, что, несмотря на отсутствие файловой системы, она имеет базовую структуру, которая позволяет распознать, что это такое. Предотвращает перезапись другого раздела по ошибке.
спектры
Я думаю, что они имеют в виду дисковое пространство здесь "Я хочу знать, как можно записать в пространство хранения без файловой системы" вместо RAM, может быть?
Анвар
@ Анвар, да, но я получил это
Sinoosh
tar может использоваться для записи нескольких файлов в виде потока RAW на неформатированное устройство, такое как флэш-диск. В противном случае один файл может быть записан (но не назван), и вам нужно будет отменить процесс, чтобы записать его обратно. Обычно это делается с помощью ISO для оптических носителей, но в результате получается файловая система на месте.
Маккензм
1
Согласовано. По сути это может быть описано как отображенная область тогда. Это не расширение реальной памяти, а рабочее пространство для хранения фрагментов, которые могут быть наложены обратно по требованию.
MKKENZM
14

Пространство подкачки используется ядром для временного хранения страниц системной памяти (ОЗУ) по мере ее заполнения. Ядро использует свои собственные внутренние таблицы, чтобы «запомнить», где именно на диске подкачки он поместил страницу. В результате подкачки дисков не содержат надлежащей файловой системы и, как правило, являются просто пустыми разделами на диске.

Что вас может заинтересовать, так это RAM-диск, представляющий собой небольшую файловую систему, хранящуюся в системной памяти. Если потребуется больше памяти, ядро ​​вытолкнет ее (и другое содержимое) в область подкачки. Смотрите здесь для получения инструкций по настройке.

Джейк
источник
13

Пространство подкачки разделено на блоки того же размера, что и страницы памяти (обычно 4 КБ), и запись сопоставления этих страниц с памятью приложения образует расширение подсистемы виртуальной памяти в ЦП и ОС.

То есть уже существует система отображения между областями памяти приложения и реальным адресом физической памяти. Приложению дается большое адресное пространство памяти, которое они могут использовать как можно меньше или меньше. Поскольку больше этого адресного пространства памяти фактически используется, физическая память сопоставляется с этим приложением, чтобы служить носителем данных.

Когда память перемещается на диск, связанная система поддерживает это сопоставление пространства памяти приложения с блоком на диске.

Сама таблица сопоставления не сохраняется на диске, а данные, остающиеся на диске, после перезагрузки становятся бесполезными.

thomasrutter
источник