Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sebagian besar pengoperasian halaman terjadi dalam konteks proses pemanggilan sistem. Satu-satunya pengecualian adalah pembaruan tabel halaman dari callback UpdateGpuVirtualAddress, yang terjadi dalam konteks pendamping khusus dan terjadi secara sinkron dengan rendering.
Kernel grafis DirectX menggunakan proses pemindahan sistem untuk melakukan operasi pemindahan, seperti:
- Mentransfer alokasi antara memori sistem dan unit pemrosesan grafis lokal (GPU)
- Mengisi alokasi dengan pola
- Memperbarui tabel halaman
- Memetakan alokasi ke segmen aperture
- Kosongkan buffer look-aside terjemahan
Proses paging memiliki ruang alamat virtual GPU sendiri, konteks GPU, dan buffer akses memori langsung (DMA) (disebut buffer paging). Ini memiliki tabel halaman sendiri yang disematkan dalam memori fisik dan dikeluarkan hanya selama transisi daya.
Ruang alamat virtual untuk proses pemetaan memiliki tata letak yang telah ditentukan sebelumnya, diinisialisasi selama inisialisasi adaptor, dan setiap kali setelah konten memori hilang karena peralihan daya.
Kernel grafis DirectX menginisialisasi tabel halaman dan entri tabel halaman yang dibutuhkan dalam tabel halaman induk untuk mencakup ruang alamat virtual 1 GB. Area coretan digunakan untuk alokasi peta sementara selama operasi transfer dan pengisian ke ruang alamat virtual proses Halaman. Jika alokasi tidak masuk ke area sementara alamat virtual, operasi transfer akan dilakukan dalam bagian-bagian.
Alokasi tabel halaman akar sistem dibuat untuk proses halaman. Kontennya diatur selama inisialisasi dan tidak pernah berubah (kecuali setelah transisi daya).
Tabel halaman dari proses sistem dibagi menjadi dua bagian:
Tabel halaman sistem dibuat yang mencerminkan tabel halaman area coretan ke dalam ruang alamat proses sistem. Ini memungkinkan proses sistem untuk memodifikasi tabel halaman area coretan dan memetakan/membatalkan peta memori dari area coretan seperlunya. Konten tabel halaman diatur selama inisialisasi adaptor dan tidak pernah berubah. Entri tabel halaman halaman area coretan digunakan untuk memetakan alokasi ke ruang alamat virtual proses halaman. Mereka diinisialisasi sebagai invalid selama proses inisialisasi dan kemudian digunakan untuk operasi paging. Tabel halaman dari proses paging diinisialisasi melalui operasi paging UpdatePageTable selama inisialisasi adaptor dan peristiwa menyalakan. Untuk operasi ini, PageTableUpdateMode terpaksa menjadi CPU_VIRTUAL dan harus segera dilakukan menggunakan CPU (buffer paging tidak boleh digunakan).
Pembaruan entri tabel halaman untuk semua proses lain dilakukan menggunakan PageTableUpdateMode yang ditentukan oleh driver. Pembaruan ini dilakukan dalam konteks proses paging.
Berikut adalah cara penyiapan dilakukan:
- Alokasi tabel halaman akar dan alokasi tabel halaman pada tingkat yang lebih rendah dibuat untuk mencakup ruang alamat sebesar 1 GB.
- Alokasi dialokasikan ke dalam segmen memori.
- Beberapa operasi paging UpdatePageTable dikeluarkan ke driver untuk memulai entri tabel halaman.
Sebagai contoh inisialisasi ruang alamat virtual melalui proses pemetaan, mari kita pertimbangkan kasus dengan parameter berikut:
- Ukuran halaman adalah 4096 byte
- Ruang alamat virtual proses halaman adalah 1 GB
- Ukuran entri tabel halaman adalah 4 byte
Dalam hal ini kita memerlukan skema terjemahan 2 tingkat yang terdiri dari:
- Satu tabel halaman akar sistem
- Satu tabel halaman sistem
- 255 tabel halaman area coretan
Gambar berikut menunjukkan bagaimana tabel halaman akan diinisialisasi berdasarkan lokasi tabel halaman akar dan tabel halaman dalam memori fisik. Perhatikan bahwa alamat fisik hanya diberikan sebagai ilustrasi. Tabel halaman mencakup 4 MB ruang alamat. Jadi, tabel halaman sistem mencakup semua tabel halaman area sementara. Area memori sementara dimulai dari alamat virtual 4 MB.
Seperti yang Anda lihat, rentang alamat virtual dari 0 hingga 4095 akan tidak valid.