Salah satu momen paling traumatis bagi pengembang sistem operasi berbasis BIOS Legacy adalah berurusan dengan memori. Di era BIOS, kita dipaksa bekerja dalam keterbatasan teknologi tahun 1970-an, sementara UEFI langsung membawa kita ke masa depan. Dalam pengembangan RezaOS, pemahaman tentang mode operasi CPU ini adalah kunci untuk mengoptimalkan performa kernel.
Artikel ini akan membedah perbedaan teknis antara Real Mode yang digunakan BIOS dan Long Mode yang menjadi standar native UEFI.
1. Real Mode: Belenggu 16-bit dan Segmentasi
Saat komputer berbasis BIOS menyala, CPU berada dalam Real Mode. Ini adalah mode emulasi agar CPU modern berperilaku persis seperti prosesor Intel 8086 kuno.
Karakteristik Real Mode:
- Address Bus 20-bit: Meskipun CPU Anda mungkin Core i9 atau Ryzen 9, dalam Real Mode ia hanya bisa melihat 1 Megabyte RAM.
- Segmentasi Memori: Untuk mengakses 1 MB tersebut, BIOS menggunakan skema
Segment:Offset. Rumus perhitungannya adalah: (Segment * 16) + Offset. - Tanpa Proteksi: Tidak ada konsep Ring 0 atau Ring 3. Sebuah bug kecil di program Anda bisa langsung menghapus data milik firmware atau hardware karena semua aplikasi memiliki akses penuh ke seluruh memori.
Jika kita membangun RezaOS di BIOS, kita harus menulis kode Assembly yang sangat rumit hanya untuk mengaktifkan A20 Line (agar bisa mengakses memori di atas 1 MB) dan mengatur GDT (Global Descriptor Table) agar bisa pindah ke mode 32-bit.
2. Long Mode: Kekuatan Penuh 64-bit
UEFI membuang semua kerumitan tersebut. Begitu fungsi efi_main pada RezaOS dipanggil, CPU sudah berada dalam Long Mode (64-bit). Tidak ada lagi limitasi 1 MB. CPU bisa langsung mengakses memori hingga ukuran Terabyte atau Petabyte (tergantung limitasi hardware).
Karakteristik Long Mode di UEFI:
- Paging Aktif: Berbeda dengan BIOS yang menggunakan pengalamatan fisik mentah, UEFI menjalankan Paging sejak awal. Biasanya, UEFI menggunakan Identity Mapping, di mana alamat virtual sama dengan alamat fisik.
- Flat Memory Model: Tidak ada lagi rumus
Segment * 16. Memori dilihat sebagai satu ruang linear yang luas dan kontinu. - Register 64-bit: Kita memiliki akses ke register
RAX,RBX,RCX, hinggaR15. Kapasitas penyimpanan data di dalam CPU meningkat dua kali lipat dibanding mode 32-bit dan empat kali lipat dibanding 16-bit.
3. Kondisi CPU Saat RezaOS Berjalan
Sangat penting bagi kita untuk mengetahui status “mesin” saat bootloader RezaOS pertama kali dieksekusi. Berikut adalah status CPU yang dijamin oleh spesifikasi UEFI:
- RIP (Instruction Pointer): Menunjuk ke alamat memori tempat kode
efi_mainAnda dimuat. - RSP (Stack Pointer): UEFI sudah menyiapkan Stack yang cukup besar di memori tinggi. Kita tidak perlu membuat
clidanmov ss, axseperti di BIOS. - Interrupts: Instruksi
STI(Enable Interrupts) biasanya sudah aktif, namun disarankan untuk menanganinya dengan hati-hati. - Paging: Tabel paging (biasanya 4-level PML4) sudah terpasang di register
CR3.
4. Tabel Perbandingan Teknis: BIOS vs UEFI
| Fitur | BIOS (Real Mode) | UEFI (Long Mode) |
| Lebar Data | 16-bit | 64-bit |
| Limitasi Memori | 1 MB (tanpa A20) | Hingga 16 Exabyte |
| Metode Akses | Segment:Offset | Flat / Linear Address |
| Keamanan | Tidak ada (No Ring) | Ring 0 Ready |
| Paging | Tidak didukung | Wajib Aktif (PML4) |
| Instruksi Modern | Harus diaktifkan manual | SSE, AVX siap digunakan |
5. Mengapa Ini Penting bagi Pengembangan RezaOS?
Dengan UEFI, RezaOS melewati fase “kegelapan” 16-bit.
- Kita bisa langsung menulis algoritma kernel yang kompleks menggunakan bahasa C tanpa takut menabrak batas memori 1 MB.
- Kita bisa langsung mengalokasikan buffer besar untuk grafis atau tabel data sistem sejak instruksi pertama.
- Struktur kode kernel menjadi lebih bersih karena tidak tercampur dengan kode legacy switching yang biasanya dipenuhi instruksi Assembly yang sulit di-debug.
Kesimpulan
Long Mode adalah “kebebasan” bagi pengembang sistem operasi. UEFI memastikan bahwa saat RezaOS mengambil kendali, ia mendapatkan mesin dalam performa puncaknya. Tidak ada lagi segmentasi, tidak ada lagi batas 1 MB, hanya ruang memori luas yang siap untuk dikelola oleh kernel kita.
Next Step: Pada Bab 5, kita akan membahas tentang Protokol UEFI. Kita akan melihat bagaimana kita membuang interupsi BIOS yang kuno dan menggantinya dengan sistem API modern yang berbasis objek untuk mengakses hardware.
