Czy przestrzeń wymiany ma system plików?

26

Do pracy z urządzeniami pamięci potrzebujemy systemu plików, a co z przestrzenią wymiany?

Jeśli nie ma systemu plików, jak działa system operacyjny? W jaki sposób dane (z pamięci RAM) są zapisywane na dysku i w jaki sposób są ponownie dostępne?

Sinoosh
źródło
6
Zamiana nie wymaga systemu plików. Nie przechowuje plików.
Pilot6,
3
Przechowuje strony RAM.
Pilot6
2
Czy mógłbyś dokładnie wyjaśnić, co próbujesz zrobić? Czy mówisz, że wszystko, czego potrzebujesz, to miejsce do tymczasowego przechowywania danych?
Jake,
6
„Chcę wiedzieć, jak można pisać w przestrzeni dyskowej bez systemu plików?” - Po prostu piszesz w schowku. Pomyśl o tym: jeśli system plików byłby zobowiązany do zapisu w przestrzeni dyskowej, wówczas systemy plików nie mogłyby istnieć, ponieważ systemy plików muszą mieć możliwość zapisu w pamięci masowej bez systemu plików. „czy zgodnie z odpowiedzią mogę powiedzieć, że pamięć RAM ma mały system plików, a plik wymiany używa tego systemu plików do pracy ze stronami?” - Nie. System plików służy do przechowywania plików. Zamień przestrzeń nie przechowuje plików.
Jörg W Mittag
4
Dość powszechne jest pisanie pojedynczego pliku (ala tar i dd) do niesformatowanej pamięci, a jeszcze bardziej powszechne jest posiadanie zagnieżdżonych systemów plików (dyski wirtualne, .iso, squashfs). Gry na dyskietce czasami zapisują wysokie wyniki w absolutnej (stałej) lokalizacji, a niektóre aplikacje oparte są na cylindrach, głowicach i sektorach. Partycje wymiany to wciąż partycje, ale nie, nie ma systemu plików ani „mapowania” innego niż przesunięcie i uruchomienie?
mckenzm,

Odpowiedzi:

28

Zamień technicznie nie ma określonego systemu plików. Głównym celem systemu plików jest uporządkowanie danych w określony sposób. W szczególności partycja wymiany nie ma struktury, ale ma określony nagłówek, który jest tworzony przez mkswapprogram. W szczególności (pochodzi z 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 };

Każda partycja ma określony kod powiązany z nią i zgodnie z TLDP :

kod dla ext2 to 0x83, a linux swap to 0x82

W przypadku pliku wymiany jest to nieco inna historia. Jądro musi szanować fakt, że system plików może mieć własny sposób strukturyzacji danych. Z tego samego linku kernel.org:

Pamiętaj, że systemy plików mogą mieć własną metodę przechowywania plików i dysku i nie jest tak prosta jak partycja wymiany, na której informacje mogą być zapisywane bezpośrednio na dysk. Jeśli kopia zapasowa jest partycją, tylko jeden blok wielkości strony wymaga operacji we / wy, a ponieważ nie ma w tym żadnego systemu plików, bmap () nie jest potrzebny.

Podsumowując, technicznie można nazwać przestrzeń wymiany systemem plików własnego typu, ale nie jest to całkiem porównywalne z systemami plików takimi jak NTFS lub ext4

Ty też zapytałeś

Chcę wiedzieć, jak można pisać w przestrzeni dyskowej bez systemu plików

Ściśle mówiąc, nie ma potrzeby tworzenia struktury pamięci RAM. Jednak część pamięci RAM może mieć strukturę tmpfs w systemach operacyjnych uniksopodobnych. Istnieją także ramfs i initramfs, które ładuje się podczas procesu uruchamiania. Ale technicznie dane z pamięci RAM powinny być tylko surowymi zerami i zerami, więc i tak nie trzeba ich strukturyzować.

Sergiy Kolodyazhnyy
źródło
1
Warto zauważyć, że pomimo braku systemu plików ma on podstawową strukturę, która pozwala rozpoznać, co to jest. Zapobiega przypadkowemu zastąpieniu innej partycji.
spectras
Myślę, że mają tu na myśli miejsce na dysku „Chcę wiedzieć, jak można pisać w miejscu do przechowywania bez systemu plików” zamiast RAM?
Anwar,
@Anwar, tak, ale dostałem to
Sinoosh,
tar może być używany do zapisywania wielu plików jako strumień RAW na niesformatowanym urządzeniu, takim jak dysk flash. W przeciwnym razie można zapisać pojedynczy plik (ale nie nazwać go) i trzeba będzie odwrócić proces, aby zapisać go z powrotem. Zwykle robi się to z ISO na nośnikach optycznych, ale rezultatem jest lokalny system plików.
mckenzm,
1
Zgoda. Zasadniczo można go wówczas opisać jako obszar odwzorowany. To nie jest rozszerzenie prawdziwej pamięci, ale miejsce do przechowywania fragmentów, które można nałożyć z powrotem na żądanie.
mckenzm,
14

Jądro używa przestrzeni wymiany do tymczasowego przechowywania stron pamięci systemowej (RAM), gdy się zapełni. Jądro używa własnych wewnętrznych tabel do „zapamiętywania” dokładnie tego, w którym miejscu dysku wymiany umieścił stronę. W rezultacie dyski wymiany nie zawierają odpowiedniego systemu plików i zwykle są po prostu pustymi partycjami na dysku.

To, co może Cię zainteresować, to dysk RAM, który jest małym systemem plików przechowywanym w pamięci systemu. Jeśli potrzeba więcej pamięci, jądro wypchnie ją (i inną zawartość) na przestrzeń wymiany. Zobacz tutaj instrukcje dotyczące konfiguracji.

Jake
źródło
13

Przestrzeń wymiany jest podzielona na bloki tego samego rozmiaru co strony pamięci (zwykle 4kB), a zapis mapowania tych stron na pamięć aplikacji stanowi rozszerzenie podsystemu pamięci wirtualnej w CPU i systemie operacyjnym.

Oznacza to, że istnieje już system mapowania między obszarami pamięci aplikacji a rzeczywistym adresem pamięci fizycznej. Aplikacja ma dużą przestrzeń adresową pamięci, z której może korzystać tyle, ile tylko może. Ponieważ w rzeczywistości wykorzystywana jest większa część tej przestrzeni adresowej pamięci, pamięć fizyczna jest mapowana na tę aplikację, aby służyła jako nośnik pamięci.

Kiedy pamięć jest zamieniana na dysk, powiązany system utrzymuje mapowanie przestrzeni pamięci aplikacji na blok na dysku.

Sama tabela mapowania nie jest przechowywana na dysku, a dane pozostałe na dysku są bezużyteczne po ponownym uruchomieniu.

thomasrutter
źródło