BIOS menyela, tingkat hak istimewa dan paging

0

Saya belajar tentang Intel 8086-80486 CPU dan interaksinya dengan perangkat keras. Tapi saya masih belum memahaminya dengan baik. Tolong, bantu saya mengisi tempat kosong.

Pertama, saya tahu bahwa CPU berkomunikasi dengan perangkat keras menggunakan interupsi BIOS. Tapi, apa yang sebenarnya terjadi di PC, ketika saya memanggil beberapa instruksi INT? Saya tahu bahwa menurut tabel interupsi beberapa instruksi mulai dijalankan, tetapi bagaimana, dengan mengeksekusi beberapa instruksi, bisakah BIOS mengenali apa yang ingin saya lakukan? Karena sejauh yang saya tahu, CPU tidak memiliki saluran komunikasi tambahan dengan BIOS, ia hanya dapat alamat memori dan menerima data. Jadi bagaimana saya bisa menginstruksikan BIOS untuk melakukan sesuatu, padahal saya hanya bisa mengatasi RAM?

Hal berikutnya yang saya tidak mengerti adalah tentang level privilege. Saya tahu tentang model dering, dan hak akses, tetapi bagaimana cara CPU mengetahui level privilege yang telah menjalankan instruksi? Saya pikir hak istimewa ini hanya berlaku ketika intruksi mencoba menangani memori, tetapi bagaimana suatu aplikasi mendapatkan tingkat keistimewaannya? Maksud saya, saya tahu level 3, tapi bagaimana cara mengaturnya?

Dan hal terakhir, saya tahu bahwa paging adalah skema alamat yang digunakan untuk mendukung memori virtual transparan-aplikasi, atau bertukar, tetapi saya tidak dapat menemukan informasi tentang bagaimana paging diikat dengan mode terproteksi. Seperti jika paging seperti mode berikutnya yang tidak tergantung pada mode terproteksi, atau entah bagaimana diterapkan dalam mode terproteksi. Dan jika itu diterapkan dalam mode terproteksi, bukankah terlalu lambat, untuk pertama-tama menangani ruang aplikasi, lalu mengimbangi, lalu paging folder, halaman, dan mengimbangi sekali lagi?

Peter Mortensen
sumber
@ Jack, Anda mungkin mendapatkan hasil yang lebih baik jika Anda dapat membagi pertanyaan Anda menjadi beberapa pertanyaan singkat dan spesifik daripada satu pertanyaan besar.
heavyd

Jawaban:

2

Ada 2 mode: nyata dan terlindungi. Dalam mode nyata, Anda hanya dapat mengatasi 1 MiB memori. Interupsi BIOS hanya dapat diakses dalam mode nyata. Alamat A0000 - FFFFF dipetakan: A0000 - BFFFF adalah memori video, F0000 - FFFFF adalah ROM BIOS, di mana kode rutinitas layanan interupsi BIOS berada. Tidak ada level privilege dalam mode nyata. Jika Anda menjalankan instruksi "int n", ini terjadi: flags, cs, ip disimpan ke stack. Kata di n * 4 + 2 dimuat dalam cs dan kata di n * 4 dimuat di ip.

Mode proteksi dimulai dengan mengatur bit 0 dari register CR0. Maka Anda memiliki 4 level privilege. Tetapi sebelum memulainya, Anda harus mengaktifkan A20, mengatur basis interupsi IRQ 0-7 dan IRQ 8-15, membuat IDT, GDT.

Paging dimulai dengan mengatur bit 31 dari cr0. Sebelum memulainya, Anda harus membuat direktori halaman dan tabel halaman dan mengatur CR3 untuk menunjuk ke direktori halaman.

Tomas Lachman
sumber