Чи є у просторі підкачки файлова система?


26

Для роботи із пристроями зберігання даних нам потрібна файлова система, як щодо місця обміну?

Якщо в ньому немає файлової системи, як з нею працює операційна система? Як записуються дані (з оперативної пам’яті) на диск і як до них знову доступно?


6
Для заміни не потрібна файлова система. Він не зберігає файли.
Пілот6

3
Він зберігає сторінки ОЗУ.
Пілот6

2
Не могли б ви пояснити, що саме ви намагаєтесь зробити? Ви хочете сказати, що все, що вам потрібно, це місце для тимчасового зберігання даних?
Джейк

6
Msgstr "Я хочу знати, як можна писати у сховище без файлової системи?" - Ви просто записуєте у сховище. Подумайте над цим: якщо для запису файлової системи потрібно було зберігати місця, файлові системи не могли існувати, тому що файлові системи повинні мати можливість запису в сховище вирішити без файлової системи. "Відповідно до вашої відповіді, чи можу я сказати, що оперативна пам'ять має невелику файлову систему, а файл своп-файлів використовують цю файлову систему для роботи зі сторінками?" - Ні. Файлова система призначена для зберігання файлів. Простір обміну не зберігає файли.
Йорг W Міттаг

4
Досить часто записувати один файл (ala tar та dd) у неформатоване сховище, а ще частіше - вкладені файлові системи (віртуальні диски, .iso, squashfs). Ігри на флоппі іноді записують високі бали до абсолютного (фіксованого) місця, а деякі програми базуються на Cylinder, Head, Sector. Поміняти розділи все ще є розділами, але ні, немає файлової системи чи "відображення", крім зміщення та запуску?
mckenzm

Відповіді:


28

Зміна технічно не має конкретної файлової системи. Вся мета файлової системи - структурувати дані певним чином. Зокрема, розділ 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, тому структурувати їх у будь-якому разі не потрібно.


1
Добре вказуючи, що, незважаючи на відсутність файлової системи, вона має основну структуру, яка дозволяє розпізнати, що це таке. Заважає помилково перезаписувати інший розділ.
спектри

Я думаю, що тут мається на увазі простір на диску "Я хочу знати, як можна записати у сховище без файлової системи" замість оперативної пам'яті, можливо?
Анвар

@Anwar, Так, але я це отримав
Sinoosh

tar може використовуватися для запису декількох файлів у вигляді потоку RAW на неформатоване пристрій, наприклад флешку. Інакше може бути записаний один файл (але не названий), і вам потрібно буде змінити процес, щоб записати його назад. Це зазвичай робиться з ISO на оптичних носіях, але результат - це місцева файлова система.
mckenzm

1
Домовились. По суті, це можна описати як зіставлену область тоді. Це не розширення реальної пам’яті, а робочий простір для зберігання шматочків, які можна накладати знову на вимогу.
mckenzm

14

Простір swap використовується ядром для тимчасового зберігання сторінок системної пам'яті (RAM) по мірі його заповнення. Ядро використовує власні внутрішні таблиці, щоб «запам’ятати», де саме в дисках своп розміщено сторінку. Як результат, swap-диски не містять належної файлової системи і зазвичай є лише порожніми розділами на диску.

Що вас може зацікавити, це RAM-диск, який є невеликою файловою системою, що зберігається в пам'яті системи. Якщо потрібно більше пам’яті, ядро ​​виштовхне його (та інший вміст) на простір для обміну. Тут див. Інструкції щодо налаштування.


13

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

Тобто вже існує система відображення між просторами пам’яті додатків та фактичною адресою фізичної пам’яті. Додаток надає великий адресний простір пам’яті, яким вони можуть користуватися стільки ж, скільки можуть. Оскільки фактично використовується більше цього адресного простору пам’яті, фізична пам’ять відображається в цій програмі, щоб служити середовищем зберігання даних.

Коли пам'ять підміняється на диск, відповідна система підтримує відображення простору пам'яті програми на блок на диску.

Сама таблиця зіставлення не зберігається на диску, а дані, що залишаються на диску, марні після перезавантаження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.