スワップスペースにはファイルシステムがありますか?


26

ストレージデバイスを操作するには、ファイルシステムが必要です。スワップスペースはどうですか?

ファイルシステムがない場合、オペレーティングシステムはどのように動作しますか?(RAMからの)データはどのようにディスクに書き込まれ、どのように再びアクセスされますか?


6
スワップにはファイルシステムは必要ありません。ファイルは保存しません。
-Pilot6

3
RAMページを保存します。
Pilot6

2
あなたがやろうとしていることを正確に説明してもらえますか?必要なのはデータを一時的に保存する場所だけだと言っていますか?
ジェイク

6
「ファイルシステムなしでストレージスペースに書き込む方法を知りたいですか?」–ストレージスペースに書き込むだけです。これについて考えてみましょう。ファイルシステムがストレージスペースに書き込む必要がある場合、ファイルシステムは存在できません。ファイルシステムはファイルシステムなしでストレージに書き込むことができる必要があるためです。「あなたの答えによれば、RAMには小さなファイルシステムがあり、スワップファイルはページの操作にこのファイルシステムを使用していると言えますか?」–いいえ。ファイルシステムはファイルを保存するためのものです。スワップスペースにはファイルは保存されません。
ヨルグWミットタグ

4
単一のファイル(ala tarおよびdd)をフォーマットされていないストレージに書き込むことは非常に一般的であり、ネストされたファイルシステム(仮想ディスク、.iso、squashfs)を持つことはさらに一般的です。フロッピーのゲームは、絶対(固定)の場所に高得点を書き込むことがあり、一部のアプリケーションはシリンダー、ヘッド、セクターベースです。スワップパーティションはまだパーティションですが、いいえ、ファイルシステム、またはオフセットと実行以外の「マッピング」はありませんか?
mckenzm

回答:


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リンクから:

ファイルシステムにはファイルやディスクを保存する独自の方法があり、情報を直接ディスクに書き込むスワップパーティションほど単純ではないことに注意してください。バッキングストレージがパーティションの場合、1つのページサイズのブロックのみがIOを必要とし、ファイルシステムが関与しないため、bmap()は不要です。

結論として、技術的にはスワップ空間を独自のタイプのファイルシステムと呼ぶことができますが、NTFSやext4などのファイルシステムとはまったく比較できません

あなたも尋ねました

ファイルシステムなしでストレージスペースに書き込むことができる方法を知りたい

厳密に言えば、RAMを構造化する必要はありません。ただし、RAMの一部は、UnixライクなOSではtmpfsとして構造化できます。ramfsおよびinitramfs もあります。これは、ブートプロセス中にロードされるものです。しかし、RAMデータは技術的には生の1と0であると想定されているため、とにかくそれらを構造化する必要はありません。


1
ファイルシステムを持たないにもかかわらず、それが何であるかを認識できる基本構造を持っていることを指摘しておくと良いでしょう。誤って別のパーティションを上書きすることを防ぎます。
スペクトル

多分RAMの代わりに、「ファイルシステムを使わずにストレージスペースに書き込む方法を知りたい」というディスクスペースを意味すると思います。
アンワー

@アンウォー、はい、私はそれを手に入れました
シノッシュ

tarを使用すると、複数のファイルをRAWストリームとしてフラッシュドライブなどの未フォーマットのデバイスに書き込むことができます。それ以外の場合は、単一のファイルを書き込むことができますが(名前は付けません)、プロセスを逆にして書き戻す必要があります。これは一般に、ISOの光メディアを使用して行われますが、結果はインプレースファイルシステムになります。
mckenzm

1
同意した。基本的には、マップされた領域として説明できます。これは実際のメモリの拡張ではなく、要求に応じてオーバーレイできるチャンクを保存するためのワークスペースです。
-mckenzm

14

スワップスペースは、システムメモリ(RAM)のページがいっぱいになると、カーネルが一時的に保存するために使用されます。カーネルは独自の内部テーブルを使用して、スワップディスク内のどこにページを配置したかを正確に「記憶」します。その結果、スワップディスクには適切なファイルシステムが含まれておらず、通常はディスク上の単なる空のパーティションです。

興味があるのは、RAMディスクです。RAMディスクは、システムのメモリに格納されている小さなファイルシステムです。さらにメモリが必要な場合、カーネルはそのメモリ(および他のコンテンツ)をスワップスペースにプッシュします。設定方法については、こちらをご覧ください。


13

スワップスペースは、メモリページと同じサイズ(通常4kB)のブロックに分割され、これらのページのアプリケーションメモリへのマッピングの記録は、CPUおよびOSの仮想メモリサブシステムの拡張を形成します。

つまり、アプリケーションのメモリ空間と実際の物理メモリアドレスの間にマッピングシステムが既に存在します。アプリケーションには、可能な限り多くまたは少ししか使用できない大きなメモリアドレス空間が与えられます。このメモリアドレス空間が実際に使用されると、物理メモリがそのアプリケーションにマップされ、ストレージメディアとして機能します。

メモリがディスクにスワップされると、関連するシステムは、アプリケーションのメモリ空間のディスク上のブロックへのマッピングを維持します。

マッピングテーブル自体はディスクに保存されず、ディスクに残っているデータは再起動後に役に立たなくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.