bagaimana paging halaman bekerja di sistem unix?

Saya mencoba mempelajari buku "Memahami kernel Linux", tetapi saya berhenti di bagian "Paging biasa". Sekarang, saya mengerti mengapa paging dibutuhkan, apa konsep di baliknya, tapi... Saya tidak mengerti banyak hal. Mengapa paging halaman tabel? Saya tidak ingat) diperlukan dan bagaimana cara kerjanya? Maksud saya, ya, ukuran satu halaman tabel akan terlalu besar, tetapi, jika dalam konversi antara alamat linier dan fisik, kernel memilih beberapa halaman tabel sesuai dengan bagian pertama dari lin. tambahkan., ia harus menemukan seluruh rangkaian halaman tabel di suatu tempat di ram, jadi... mengapa tidak membuat satu halaman tabel raksasa, jika ruangnya sudah terbuang? Dan kemudian, buku tersebut mengatakan bahwa dimensi setiap entri di halaman tabel adalah 32 bit, tapi... jika halamannya berukuran 4kb, mengapa tidak menggunakan fakta ini? kita tahu bahwa 12 bit terakhir adalah 0, jadi mengapa tidak membiarkannya implisit? Saya tahu bahwa semua hal yang saya katakan ini salah, saya mengatakannya hanya untuk menjelaskan keraguan saya dengan lebih baik. (maaf untuk bahasa Inggris yang jelek)


person umbesco    schedule 11.05.2020    source sumber
comment
mengapa tidak menggunakan fakta ini? kita tahu bahwa 12 bit terakhir adalah 0, jadi mengapa tidak membiarkannya implisit? - 12 bit terakhir sebenarnya digunakan untuk hal-hal non-alamat. Lihat mis. osdev.   -  person Tsyvarev    schedule 11.05.2020


Jawaban (1)


Memecah deskriptor halaman menjadi beberapa tabel memiliki manfaat sebagai berikut:

  1. granularitas. Jika program Anda hanya menggunakan tiga halaman (teks, data, tumpukan) semua deskriptor halaman tersebut bisa berada dalam satu tabel halaman, dan overhead memori akan sangat rendah -- satu tabel halaman daun ditambah beberapa node internal.

  2. Kekurangan. Sehubungan dengan efisiensi, tabel root (direktori) hanya perlu berisi entri untuk bagian ruang alamat yang valid; penunjuk tabel lainnya dapat disetel ke halaman yang tidak valid, jadi tidak perlu mengisinya.

  3. Membagikan. Sangat mungkin bahwa tidak hanya memori, tetapi tabel halaman itu sendiri dapat dibagi antar proses untuk objek memori bersama yang besar. IIRC solaris menyebutnya 'memori bersama yang intim' (ISM). Demikian pula, hal-hal seperti pemetaan kernel dapat dibagikan seluruhnya ke beberapa proses.

  4. Pertunjukan. Arsitektur 64bit umum menggunakan ruang alamat 47 bit. Dengan granularitas halaman 4k, peta linier akan memerlukan 2^35 deskriptor halaman setiap 8 byte. Hanya dengan memusatkan perhatian pada jumlah ram itu membutuhkan waktu 48 detik pada mac pro saya yang berderit. Itu akan menjadi biaya untuk memulai suatu proses.

person mevets    schedule 13.05.2020