Для роботи із пристроями зберігання даних нам потрібна файлова система, як щодо місця обміну?
Якщо в ньому немає файлової системи, як з нею працює операційна система? Як записуються дані (з оперативної пам’яті) на диск і як до них знову доступно?
Для роботи із пристроями зберігання даних нам потрібна файлова система, як щодо місця обміну?
Якщо в ньому немає файлової системи, як з нею працює операційна система? Як записуються дані (з оперативної пам’яті) на диск і як до них знову доступно?
Відповіді:
Зміна технічно не має конкретної файлової системи. Вся мета файлової системи - структурувати дані певним чином. Зокрема, розділ Swap не має структури, але він має певний заголовок, який створюється 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
Якщо задіяний файл swap , це трохи інша історія. Ядро повинно поважати той факт, що файлова система може мати власний спосіб структурування даних. З того ж посилання kernel.org:
Пам'ятайте, що у файлових системах може бути свій власний спосіб зберігання файлів і диска, і він не такий простий, як розділ swap, де інформація може бути записана безпосередньо на диск. Якщо резервне сховище є розділом, то лише один блок розміром сторінки вимагає вводу-виводу, і оскільки тут не задіяна файлова система, bmap () не є потрібним.
На закінчення технічно можна назвати своп-простір файловою системою власного типу, але це не зовсім порівняно з файловими системами типу NTFS або ext4
Ви також запитували
Хочу знати, як можна писати у сховище без файлової системи
Строго кажучи, немає необхідності в структурі оперативної пам'яті. Однак частини ОЗУ можуть бути структуровані як tmpfs під Unix-подібними ОС. Є також ramfs та initramfs, які завантажуються під час завантаження. Але технічна пам’ять оперативної пам’яті повинна бути просто необробленою 1 і 0, тому структурувати їх у будь-якому разі не потрібно.
Простір swap використовується ядром для тимчасового зберігання сторінок системної пам'яті (RAM) по мірі його заповнення. Ядро використовує власні внутрішні таблиці, щоб «запам’ятати», де саме в дисках своп розміщено сторінку. Як результат, swap-диски не містять належної файлової системи і зазвичай є лише порожніми розділами на диску.
Що вас може зацікавити, це RAM-диск, який є невеликою файловою системою, що зберігається в пам'яті системи. Якщо потрібно більше пам’яті, ядро виштовхне його (та інший вміст) на простір для обміну. Тут див. Інструкції щодо налаштування.
Простір обміну поділяється на блоки однакового розміру, як сторінки пам’яті (зазвичай 4 кБ), а запис про відображення цих сторінок у пам’яті додатків утворює розширення підсистеми віртуальної пам’яті в процесорі та ОС.
Тобто вже існує система відображення між просторами пам’яті додатків та фактичною адресою фізичної пам’яті. Додаток надає великий адресний простір пам’яті, яким вони можуть користуватися стільки ж, скільки можуть. Оскільки фактично використовується більше цього адресного простору пам’яті, фізична пам’ять відображається в цій програмі, щоб служити середовищем зберігання даних.
Коли пам'ять підміняється на диск, відповідна система підтримує відображення простору пам'яті програми на блок на диску.
Сама таблиця зіставлення не зберігається на диску, а дані, що залишаються на диску, марні після перезавантаження.