Di mana tabel Halaman disimpan

7

Pertanyaan saya adalah "di mana tabel halaman disimpan: dalam memori fisik (RAM) atau karena beberapa struktur data di ruang pengguna".

PS: Sejauh ini yang saya mengerti: Tata letak memori proses memiliki beberapa segmen (Code / data / heap / stack dll). Karena segmentasi tidak digunakan saat ini, Paging digunakan dan setiap segmen akan memiliki banyak halaman ukuran tetap. Setiap segmen juga akan memiliki ruang Alamat Virtual (VAD) yang sesuai .. ini akan mengarah ke tabel halaman Utama, yang akan menunjuk ke tabel halaman sekunder dan akhirnya pte yang akan menunjuk ke frame halaman dalam disk (?? saya harap ini benar). Jadi, jika VAD ada di ruang pengguna maka apakah tabel halaman juga berada di ruang pengguna atau disimpan dalam RAM?

RootPhoenix
sumber

Jawaban:

3

Tabel halaman ditangani oleh kernel, melalui struktur data internal kernel. Tetapi arsitektur menentukan sebagian besar format tabel tersebut. Userland tidak memiliki akses ke mereka.

vonbrand
sumber
Baik! hanya untuk info tambahan .. sebelumnya struktur data ini (dalam ruang kernel) dan hal-hal terkait kernel lainnya akan ditempatkan dalam RAM yang benar ... di beberapa ruang alamat aman?
RootPhoenix
1
Maaf ya Mereka ditempatkan di RAM. Mereka tidak dapat dikirim ke disk (halaman), karena mereka diperlukan untuk mencari tahu apakah halaman hadir dalam RAM. Sistem operasi mengelola memori virtual atas nama proses pengguna, dan bertanggung jawab untuk memastikan tidak ada bagian dari tabel halaman yang bahkan dimasukkan dalam ruang memori virtual proses.
vonbrand
Silakan periksa jawaban saya. @vonbrand
Anderson
4

Kutipan dari wiki - tabel halaman

Disebutkan bahwa membuat struktur tabel halaman yang berisi pemetaan untuk setiap halaman virtual di ruang alamat virtual dapat menjadi boros. Tapi, kita bisa mengatasi masalah ruang yang berlebihan dengan meletakkan tabel halaman dalam memori virtual, dan membiarkan sistem memori virtual mengelola memori untuk tabel halaman.

Namun, bagian dari struktur tabel halaman linier ini harus selalu tetap berada dalam memori fisik , untuk mencegah kesalahan halaman melingkar, yang mencari bagian kunci dari tabel halaman yang tidak ada dalam tabel halaman, yang tidak ada dalam tabel halaman, dll.

Anderson
sumber