Lo spazio di scambio ha un filesystem?


26

Per lavorare con i dispositivi di archiviazione abbiamo bisogno di un file system, che dire dello spazio di scambio?

Se non ha un file system, come funziona il sistema operativo con esso? Come vengono scritti i dati (dalla RAM) sul disco e come si accede nuovamente?


6
Swap non ha bisogno di un file system. Non memorizza i file.
Pilota

3
Memorizza le pagine RAM.
Pilota

2
Potresti spiegare esattamente cosa stai cercando di fare? Stai dicendo che tutto ciò di cui hai bisogno è un posto dove archiviare i dati temporaneamente?
Jake,

6
"Voglio sapere come è possibile scrivere in uno spazio di archiviazione senza file system?" - Devi semplicemente scrivere nello spazio di archiviazione. Pensa a questo: se un file system fosse richiesto per scrivere su uno spazio di archiviazione, allora i file system non potrebbero esistere, perché i file system devono essere in grado di scrivere su un archivio decidere senza un file system. "secondo la tua risposta posso dire che la RAM ha un piccolo file system e il file di scambio utilizza questo file system per lavorare con le pagine?" - No. Un file system serve per la memorizzazione di file. Lo spazio di swap non memorizza i file.
Jörg W Mittag,

4
È abbastanza comune scrivere un singolo file (ala tar e dd) su un archivio non formattato, e ancora più comune avere filesystem nidificati (dischi virtuali, .iso, squashfs). I giochi su floppy a volte scrivono punteggi elevati in una posizione assoluta (fissa) e alcune applicazioni sono basate su cilindro, testa, settore. Le partizioni di swap sono ancora partizioni, ma no, non esiste un filesystem o "mapping" diverso da offset ed esecuzione?
mckenzm,

Risposte:


28

Scambia tecnicamente non ha un filesystem specifico. Lo scopo del filesystem è strutturare i dati in un certo modo. La partizione di swap in particolare non ha struttura, ma ha un'intestazione specifica, creata dal mkswapprogramma. In particolare, questo (tratto da 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 };

A ogni partizione è associato un codice specifico e, secondo TLDP :

il codice per ext2 è 0x83 e lo scambio di Linux è 0x82

Quando è coinvolto il file di scambio , questa è una storia leggermente diversa. Il kernel deve rispettare il fatto che il filesystem potrebbe avere il proprio modo di strutturare i dati. Dallo stesso link kernel.org:

Ricorda che i filesystem possono avere il loro metodo di archiviazione di file e disco e non è così semplice come la partizione di swap in cui le informazioni possono essere scritte direttamente sul disco. Se l'archiviazione di backup è una partizione, solo un blocco di dimensioni di pagina richiede IO e poiché non è coinvolto alcun file system, bmap () non è necessario.

In conclusione, tecnicamente potresti chiamare lo spazio di swap un filesystem del suo stesso tipo, ma non è del tutto comparabile con filesystem come NTFS o ext4

Hai anche chiesto

Voglio sapere come è possibile scrivere in uno spazio di archiviazione senza file system

A rigor di termini, non è necessario strutturare la RAM. Tuttavia, porzioni di RAM possono essere strutturate come tmpfs in sistemi operativi simili a Unix. Ci sono anche ramfs e initramfs, che è ciò che viene caricato durante il processo di avvio. Ma i dati RAM tecnicamente dovrebbero essere solo 1 e 0 grezzi, quindi non è necessario strutturarli in alcun modo.


1
Va bene sottolineare che, pur non avendo un file system, ha una struttura di base che consente di riconoscere di cosa si tratta. Impedisce di sovrascrivere un'altra partizione per errore.
extra il

Penso che significhino spazio su disco qui "Voglio sapere come è possibile scrivere in uno spazio di archiviazione senza file system" invece di RAM forse?
Anwar,

@Anwar, Sì, ma l'ho capito
Sinoosh,

tar può essere utilizzato per scrivere più file come flusso RAW su un dispositivo non formattato come un'unità flash. Altrimenti è possibile scrivere un singolo file (ma non nominarlo) e sarà necessario invertire il processo per riscriverlo. Questo è comunemente fatto con ISO su supporti ottici, ma il risultato è un filesystem sul posto.
mckenzm,

1
Concordato. In sostanza, allora può essere descritta come un'area mappata. Non è un'estensione della memoria reale, ma uno spazio di lavoro per archiviare blocchi che possono essere sovrapposti su richiesta.
mckenzm,

14

Lo spazio di swap viene utilizzato dal kernel per archiviare temporaneamente pagine di memoria di sistema (RAM) non appena si riempie. Il kernel usa le proprie tabelle interne per "ricordare" esattamente dove all'interno del disco di swap inserisce la pagina. Di conseguenza, i dischi di scambio non contengono un file system adeguato e di solito sono solo partizioni vuote sul disco.

Ciò che potrebbe interessarti è un disco RAM, che è un piccolo filesystem archiviato nella memoria del sistema. Se è necessaria più memoria, il kernel la spingerà (e altri contenuti) nello spazio di scambio. Vedi qui per le istruzioni su come configurarne uno.


13

Lo spazio di swap è diviso in blocchi delle stesse dimensioni delle pagine di memoria (in genere 4kB) e una registrazione della mappatura di queste pagine sulla memoria dell'applicazione costituisce un'estensione del sottosistema di memoria virtuale nella CPU e nel sistema operativo.

Cioè, esiste già un sistema di mappatura tra gli spazi di memoria dell'applicazione e l'indirizzo di memoria fisica effettivo. A un'applicazione viene fornito un ampio spazio di indirizzi di memoria che possono utilizzare il più o il meno possibile. Poiché viene effettivamente utilizzato più spazio di memoria, la memoria fisica viene mappata su tale applicazione per fungere da supporto di archiviazione.

Quando la memoria viene scambiata su disco, un sistema correlato mantiene tale mappatura dello spazio di memoria di un'applicazione sul blocco su disco.

La tabella di mapping stessa non è memorizzata sul disco e i dati rimanenti sul disco sono inutili dopo un riavvio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.