- Orang membedakan antara hal yang kompleks dan hal yang sekadar rumit. Kompleksitas dianggap menarik, tetapi kerumitan dianggap merugikan. Proses penyiapan CPU x86_64 sebagian besar adalah kerumitan.
- Menjelaskan cara menyiapkan CPU dari mode real 16-bit ke long mode 64-bit dari boot sector yang dimuat oleh BIOS. Penyiapan ini bersifat dasar, dan masih diperlukan lebih banyak pekerjaan.
- Diperlukan Intel 64 and IA-32 Architectures Software Developer’s Manual, assembler (menggunakan nasm), dan QEMU. Anda harus memahami assembly x86 dan sintaks nasm.
Titik awal: BIOS
- Setelah reset, CPU x86 berada dalam "real mode". Mode ini memiliki ukuran operand default 16-bit. Dengan menggunakan segmentasi, mode ini dapat mengalamati memori 1MB.
- Kode pertama yang dijalankan setelah BIOS berada di boot sector. BIOS mencari sektor pertama pada sistem yang berakhir dengan
0xaa55, lalu memuat boot sector tersebut ke alamat memori 0x7c00.
- BIOS menyediakan 512 byte, dan ini harus digunakan untuk melakukan bootstrap sisa bootloader.
Menyiapkan boot sector
- Menyiapkan boot sector sederhana yang menggunakan rutin BIOS untuk mencetak pesan ke layar lalu berhenti. Ini dapat digunakan untuk memeriksa apakah alat-alatnya bekerja.
- Boot sector disiapkan menggunakan kode assembly dan Makefile.
Langkah 1 – Memuat tahap 2 dari disk
- Bootloader dapat dibagi menjadi dua tahap. Tahap 1 adalah kode pada boot sector, yaitu semua yang dimuat oleh BIOS. Satu-satunya tujuan tahap 1 adalah memuat tahap 2 ke memori.
- Pada tahap 2, sistem berpindah dari mode real 16-bit ke protected mode 32-bit. Di protected mode, rutin BIOS tidak dapat digunakan. Memuat sektor dari disk menjadi jauh lebih rumit.
- Menjelaskan cara mengakses disk menggunakan BIOS.
Protected mode 32-bit
- CPU dipindahkan dari real mode (16-bit) ke protected mode (32-bit). Di protected mode, segmentasi digunakan untuk menerapkan perlindungan memori.
- Sebelum berpindah ke protected mode, Global Descriptor Table (GDT) harus didefinisikan. GDT didefinisikan sebagai struktur berurutan di memori.
- Menjelaskan cara mendefinisikan GDT dan beralih ke protected mode.
Long mode 64-bit
- Sebelum berpindah ke long mode, CPU harus berada dalam protected mode dan paging harus diaktifkan. Protected mode sudah disiapkan, tetapi paging masih diperlukan.
- Paging menggantikan segmentasi untuk mengelola ruang alamat virtual, izin, dan lainnya. Menjelaskan cara membuat page table untuk transisi ke long mode.
- Menjelaskan cara mendefinisikan GDT untuk long mode, serta cara beralih dari protected mode ke long mode.
Ringkasan GN⁺
- Artikel ini menjelaskan secara rinci proses menyiapkan CPU x86_64 dari real mode 16-bit ke long mode 64-bit. Ini dapat membantu memperdalam pemahaman tentang bootloader dan pengembangan kernel sistem operasi.
- Mencakup berbagai konsep seperti BIOS, boot sector, protected mode, dan long mode, serta menyediakan kode assembly dan metode konfigurasi yang diperlukan untuk setiap tahap.
- Artikel ini berguna bagi orang-orang yang tertarik pada pengembangan sistem operasi, khususnya karena memberikan pemahaman mendalam tentang arsitektur x86. Proyek dengan fungsi serupa antara lain "Writing a Simple Operating System – from Scratch".
1 komentar
Komentar Hacker News