Apakah ruang swap memiliki sistem file?

26

Untuk bekerja dengan perangkat penyimpanan kita membutuhkan sistem file, bagaimana dengan ruang swap?

Jika tidak memiliki sistem file bagaimana sistem operasi bekerja dengannya? Bagaimana data (dari RAM) ditulis ke disk, dan bagaimana cara diakses lagi?

Sinoosh
sumber
6
Swap tidak membutuhkan sistem file. Itu tidak menyimpan file.
Pilot6
3
Ini menyimpan halaman RAM.
Pilot6
2
Bisakah Anda jelaskan apa yang ingin Anda lakukan? Apakah Anda mengatakan bahwa yang Anda butuhkan hanyalah tempat untuk menyimpan data sementara?
Jake
6
"Aku ingin tahu bagaimana mungkin menulis di ruang penyimpanan tanpa sistem file?" - Anda cukup menulis ke ruang penyimpanan. Pikirkan tentang ini: jika sistem file diminta untuk menulis ke ruang penyimpanan, maka sistem file tidak dapat ada, karena sistem file harus dapat menulis ke penyimpanan memutuskan tanpa sistem file. "Menurut jawaban Anda, bisakah saya mengatakan RAM memiliki sistem file kecil dan swap file menggunakan sistem file ini untuk bekerja dengan halaman?" - Tidak. Sistem file untuk menyimpan file. Swap space tidak menyimpan file.
Jörg W Mittag
4
Sangat umum untuk menulis file tunggal (ala tar dan dd) ke penyimpanan yang tidak diformat, dan bahkan lebih umum untuk memiliki sistem file bersarang (disk virtual, .iso, squashfs). Game pada floppy terkadang akan menulis skor tinggi ke lokasi absolut (tetap), dan beberapa aplikasi berbasis Cylinder, Head, Sector. Partisi swap masih merupakan partisi, tetapi tidak, tidak ada sistem file, atau "pemetaan" selain offset dan jalankan?
mckenzm

Jawaban:

28

Swap secara teknis tidak memiliki sistem file khusus. Seluruh tujuan sistem file adalah untuk menyusun data dengan cara tertentu. Swap partisi pada khususnya tidak memiliki struktur, tetapi memiliki header tertentu, yang dibuat oleh mkswapprogram. Secara khusus, ini (diambil dari 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 };

Setiap partisi memiliki kode spesifik yang terkait dengannya, dan sesuai dengan TLDP :

kode untuk ext2 adalah 0x83 dan swap linux adalah 0x82

Ketika swap file terlibat, itu cerita yang sedikit berbeda. Kernel harus menghormati fakta bahwa sistem file mungkin memiliki cara mereka sendiri dalam menyusun data. Dari tautan kernel.org yang sama:

Ingat bahwa filesystem mungkin memiliki metode sendiri untuk menyimpan file dan disk dan itu tidak sesederhana partisi swap di mana informasi dapat ditulis langsung ke disk. Jika penyimpanan backing adalah partisi, maka hanya satu blok berukuran halaman yang membutuhkan IO dan karena tidak ada sistem file yang terlibat, bmap () tidak diperlukan.

Kesimpulannya, secara teknis Anda dapat memanggil ruang swap sistem file dari jenisnya sendiri, tetapi itu tidak cukup sebanding dengan sistem file seperti NTFS atau ext4

Anda juga sudah bertanya

Saya ingin tahu bagaimana mungkin untuk menulis di ruang penyimpanan tanpa sistem file

Sebenarnya, RAM tidak perlu terstruktur. Namun, porsi RAM dapat disusun sebagai tmpfs di bawah OS mirip Unix. Ada juga ramf , dan initramf, yang akan dimuat saat proses boot. Tetapi data RAM secara teknis seharusnya hanya 1s dan 0s mentah, jadi toh tidak perlu menyusunnya.

Sergiy Kolodyazhnyy
sumber
1
Bagus menunjukkan bahwa, meskipun tidak memiliki sistem file, itu memang memiliki struktur dasar yang memungkinkan mengenali apa itu. Mencegah menimpa partisi lain karena kesalahan.
spektrum
Saya pikir mereka maksud ruang disk di sini "Saya ingin tahu bagaimana mungkin untuk menulis di ruang penyimpanan tanpa sistem file" bukan RAM mungkin?
Anwar
@ Anwar, Ya tapi saya mengerti
Sinoosh
tar dapat digunakan untuk menulis banyak file sebagai aliran RAW ke perangkat yang tidak diformat seperti flash drive. Jika tidak, satu file dapat ditulis (tetapi tidak disebutkan namanya) dan Anda harus membalik proses untuk mengembalikannya. Ini umumnya dilakukan dengan ISO ke media optik, tetapi hasilnya adalah sistem file di tempat.
mckenzm
1
Sepakat. Pada dasarnya itu dapat digambarkan sebagai area yang dipetakan. Ini bukan perpanjangan dari memori nyata, tetapi ruang kerja untuk menyimpan bongkahan yang dapat ditumpuk kembali sesuai permintaan.
mckenzm
14

Swap space digunakan oleh kernel untuk sementara waktu menyimpan halaman memori sistem (RAM) saat penuh. Kernel menggunakan tabel internal itu sendiri untuk "mengingat" persis di mana dalam swap disk itu meletakkan halaman. Akibatnya, swap disk tidak mengandung sistem file yang tepat dan biasanya hanya partisi kosong pada disk.

Yang mungkin menarik bagi Anda adalah RAM-disk, yang merupakan sistem file kecil yang disimpan dalam memori sistem. Jika lebih banyak memori diperlukan, kernel akan mendorongnya (dan konten lainnya) ke ruang swap. Lihat di sini untuk instruksi tentang pengaturannya.

Jake
sumber
13

Swap space dibagi menjadi blok-blok dengan ukuran yang sama dengan halaman memori (biasanya 4kB), dan catatan pemetaan halaman-halaman ini ke memori aplikasi membentuk ekstensi dari subsistem memori virtual di CPU dan OS.

Artinya, sudah ada sistem pemetaan antara ruang memori aplikasi dan alamat memori fisik yang sebenarnya. Sebuah aplikasi diberi ruang alamat memori besar yang dapat mereka gunakan sebanyak atau sesedikit mungkin. Karena lebih banyak ruang alamat memori ini sebenarnya digunakan, memori fisik dipetakan ke aplikasi tersebut untuk berfungsi sebagai media penyimpanan.

Ketika memori ditukar ke disk, sistem terkait mempertahankan pemetaan ruang memori aplikasi ke blok pada disk.

Tabel pemetaan itu sendiri tidak disimpan di disk, dan data yang tersisa di disk tidak berguna setelah reboot.

thomasrutter
sumber