Manajemen memori (segmentasi dan paging) di 80286 dan 80386: Bagaimana cara kerjanya?

2

Saya menemukan banyak situs Web dan buku-buku yang menjelaskan cara kerja manajemen memori pada CPU 8086 dan kemudian x86 dalam Real Mode. Saya mengerti, saya pikir, bagaimana dua nilai 16 bit, alamat segmen dan offset digabungkan untuk mendapatkan alamat fisik 20 bit linear (menggeser segmen empat bit ke kiri, tambahkan offset; segmen 64K dan mulai setiap 16 byte).

Tetapi saya tidak dapat menemukan situs Web atau buku yang bagus yang menjelaskan cara kerja manajemen memori dalam Mode Terlindungi, khususnya perbedaan antara 80286 dan 80386.

Adakah yang bisa mengarahkan saya ke situs web atau buku yang bagus (atau jelaskan di sini)?

(Untuk kredit tambahan, yaitu upvote, bagaimana cara kerjanya dalam Long Mode?)

Andrew J. Brehm
sumber

Jawaban:

3

http://www.ddj.com/184409207 Dr Dobbs menjalankan beberapa artikel di 93 & 94 tentang ini dan tidak ada terlalu banyak perbedaan antara cara 286 dan 386 menangani memori. Dasar-dasarnya adalah Anda tidak dapat melakukan manipulasi pada segmen: offset register karena lokasi memori dasar dan panjangnya sekarang merupakan bagian dari pemilih yang Anda lihat seperti pegangan.

Anda mengatur pemilih N dengan alamat dasar X dengan panjang M. Ketika pemilih itu diaktifkan (ingat CS: assembly syntax?) Rentang memori yang digunakan (halaman dalam, dll). Selektor N (pegangan 16bit) mengacu pada struktur data itu.

Mode terproteksi model memori datar mengatur kode, data, dan tumpukan ke alamat memori yang sama (dan panjang 4gb). Tautan itu mencakup dasar-dasarnya dengan cukup baik.

jsymolon
sumber
Artikel tertaut sangat bagus.
Andrew J. Brehm
1

Untuk mode nyata, tidak ada manajemen memori, hanya kalikan register segmen dengan 16 dan tambahkan offset kemudian letakkan ini hasil 21bit (ya 21bit karena 0xFFFF * 0x10 + 0xFFFF = 0xFFFF0 * 0xFFFF = 0x1FFFEF atau 1_1111_1111_1111_1110_1111b, nilai 21bit), pada buss alamat.

Untuk mode lama, segmentasi ada, tetapi deskriptor memiliki basis 0 dan batas 0xFFFFFFFFFFFFFFFFFF (16EB) sehingga mode datar, paging ada di sekitar dan seperti paging PAE, tetapi Page Directory Pointer Table diperpanjang dari 4 entri menjadi 512 entri dan Level Halaman. 4 Tabel dengan 512 entri yang masing-masing mengarah ke Tabel Direktori Pointer Halaman yang berbeda.

Dan berikut adalah beberapa situs yang menjelaskannya secara lebih rinci: http://en.wikipedia.org/wiki/Real_mode untuk mode nyata dan http://en.wikipedia.org/wiki/Long_mode untuk mode ling

Tudor
sumber