Setiap proses menerima ruang alamat LOGIS yang berdekatan. Bukan ruang alamat VIRTUAL yang berdekatan.
HALAMAN logis dipetakan ke BINGKAI HALAMAN fisik.
Pemetaan logis dilakukan dengan menggunakan PAGE TABLE, yang berisi pemetaan dari halaman lokal ke bingkai halaman.
Namun, tabel halaman mungkin tidak memiliki pemetaan ke bingkai halaman untuk setiap halaman logis.
Ada dua alasan mengapa hal ini bisa terjadi. Pertama, sistem operasi tidak boleh (dan biasanya tidak) membuat entri tabel halaman yang mencakup seluruh ruang alamat. Parameter sistem atau kuota proses mungkin membatasi ukuran ruang alamat logis. Beberapa sistem juga mencadangkan rentang alamat karena tidak dapat digunakan.
Kedua, seseorang harus melakukan pemetaan halaman logis. Ini adalah proses dua langkah. (1) Seseorang (biasanya pemuat) harus menandai halaman logis sebagai valid. (2) sistem operasi harus memetakan halaman logis ke halaman fisik. Hal ini dilakukan ketika proses mengakses halaman logika valid yang tidak memiliki pemetaan, sehingga menyebabkan kesalahan halaman. (yaitu memori virtual—pemetaan ulang dinamis dari halaman logis yang valid ke bingkai halaman).
Entri tabel halaman dapat memiliki tiga status:
- Itu tidak valid
- Ini valid dan dipetakan ke bingkai halaman pemetaan
- Ini valid tetapi tidak memiliki pemetaan ke bingkai halaman fisik. (Sekali lagi, jika ada akses ke entri tabel halaman dalam keadaan ini, hal ini memicu PAGE FAULT yang menyebabkan sistem operasi membuat pemetaan ke bingkai halaman yang valid.)
Selama run time, aplikasi dapat memanggil layanan sistem untuk membuat halaman logis valid di ruang alamat logis.
Sebagai pemeriksaan keamanan untuk menangkap petunjuk yang menyimpang, sebagian besar sistem (biasanya diarahkan oleh linker) tidak memetakan halaman pertama sama sekali (namun, aplikasi biasanya dapat memetakan halaman tersebut melalui panggilan sistem). Milikmu:
int *a = 1 ;
Menetapkan alamat "a" ke lokasi yang akan berada di halaman pertama, yang selalu tidak valid.
Milikmu
*a = 5 ;
menyebabkan prosesor (unit terjemahan memori) mengakses entri tabel halaman untuk halaman pertama. Di sana, prosesor menemukan bahwa entri tabel halaman ini ditandai sebagai tidak valid (yaitu, tidak ada kemungkinan pemetaan). Itu menyebabkan pelanggaran akses.
person
user3344003
schedule
26.02.2016
every process receives a contiguous address space which is mapped to physical memory
Ini adalah masalah OS, bergantung pada penanganan memorinya.following code in C which throws an exception
Ini adalah masalah kodeC
. StandarC
tidak mengetahui tentang OS tertentu yang mungkin Anda pikirkan, dan tidak dapat mengatasi bagian itu. Sejauh standarC
berjalan, memori yang belum Anda peroleh dengan cara standarC
(sepertimalloc
, atau mendefinisikan variabel) tidak ada untuk tujuan praktis, dan menyebabkan UB (perilaku tidak terdefinisi) jika diakses. - person dxiv   schedule 25.02.2016