GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bagaimana Ruang Alamat Virtual Proses 64-bit Dibagi Di Linux?

Gambar berikut menunjukkan bagaimana ruang alamat virtual proses 32-bit dibagi:

Tapi bagaimana proses 64-bit ruang alamat virtual dibagi?

Jawaban yang Diterima:

x86

Peta memori virtual x86 64-bit membagi ruang alamat menjadi dua:bagian bawah (dengan bit atas diatur ke 0) adalah ruang pengguna, bagian atas (dengan bit atas diatur ke 1) adalah ruang kernel. (Perhatikan bahwa x86-64 mendefinisikan alamat "kanonik" "setengah bawah" dan "setengah lebih tinggi", dengan jumlah bit secara efektif dibatasi hingga 48 atau 56; lihat Wikipedia untuk detailnya.)

Peta lengkap didokumentasikan secara rinci di kernel; saat ini sepertinya

Mulai addr Offset Akhiri alamat Ukuran Deskripsi area VM
0000_0000_0000_0000 0000_7fff_ffff_ffff  128 TiB memori virtual ruang pengguna
0000_8000_0000_0000 +128 TiB ffff_7fff_ffff_ffff ~16 juta TiB non-kanonik
ffff_8000_0000_0000 -128 TiB ffff_ffff_ffff_ffff  128 TiB memori virtual ruang kernel

dengan alamat virtual 48-bit. (Varian 56-bit memiliki struktur yang sama, dengan 64 PiB ruang alamat yang dapat digunakan di kedua sisi lubang 16K PiB.) 
(Perhatikan bahwa 16KPiB =16MTiB =2byte.)

Tidak seperti casing 32-bit, peta memori "64-bit" adalah cerminan langsung dari batasan perangkat keras.

LENGAN

ARM 64-bit memiliki perbedaan alamat yang serupa dalam perangkat keras:enam belas bit teratas adalah 0 untuk ruang pengguna, 1 untuk ruang kernel. Linux menggunakan 39, 42 atau 48 bit untuk alamat virtual, tergantung pada jumlah tingkat tabel halaman dan ukuran halaman. Dengan ARMv8.2-LVA, empat bit lainnya ditambahkan, menghasilkan alamat virtual 52-bit.

Ini juga didokumentasikan secara rinci di kernel.


Linux
  1. Cara mematikan proses zombie di Linux

  2. Bagaimana cara menambahkan ruang swap di linux

  3. bagaimana ukuran halaman ditentukan dalam ruang alamat virtual?

  1. Cara menginstal vtop di Linux

  2. Ruang alamat proses 32-bit di linux 64-bit

  3. Bagaimana cara mengakses alamat fisik dari ruang pengguna di Linux?

  1. Bagaimana menemukan alamat IP Anda di Linux

  2. Cara Memeriksa Ruang Disk di Linux

  3. Cara Mendaftar Proses yang Berjalan di Linux