Bab 5: Interrupt BIOS vs Protocol UEFI — Evolusi dari Interupsi ke API Berbasis Objek

Dalam pengembangan sistem operasi berbasis BIOS Legacy, komunikasi antara software dan hardware dilakukan melalui mekanisme yang sangat primitif yang disebut Interrupt (Interupsi). Namun, UEFI memperkenalkan paradigma baru yang jauh lebih modern dan terstruktur yang disebut Protocol. Bagi proyek RezaOS, memahami perbedaan ini adalah memahami transisi dari gaya pemrograman “hardcoded” menuju sistem “modular”.

Artikel ini akan membedah mengapa Interupsi BIOS mulai ditinggalkan dan bagaimana Protocol UEFI bekerja sebagai API (Application Programming Interface) yang fleksibel bagi pengembang kernel.


1. Era BIOS: Dunia Interupsi dan Register

Pada BIOS Legacy, jika kita ingin berinteraksi dengan hardware (misalnya menampilkan teks ke layar atau membaca sektor disk), kita harus menggunakan Software Interrupt. Semua interupsi ini dikelola dalam sebuah tabel yang disebut IVT (Interrupt Vector Table) yang terletak di alamat memori paling awal (0x0000).

Cara Kerja Interupsi BIOS:

  1. Pengembang harus memasukkan nilai tertentu ke dalam register CPU (misalnya AH = 0x0E untuk mencetak karakter).
  2. Memanggil instruksi Assembly INT. Contoh: INT 10h untuk video atau INT 13h untuk disk.
  3. CPU akan menghentikan pekerjaan saat ini, melihat tabel IVT, dan melompat ke alamat memori milik driver BIOS.

Masalah Utama:

  • Keterbatasan Register: Kita hanya bisa mengirim data terbatas melalui register (AX, BX, dll).
  • Risiko Konflik: Karena interupsi menggunakan nomor (0 hingga 255), sering terjadi konflik jika dua hardware mencoba menggunakan nomor yang sama.
  • Tidak Modular: Interupsi BIOS sangat sulit diperluas (extend) jika hardware baru muncul.

2. Era UEFI: Sistem Protokol Berbasis GUID

UEFI membuang konsep interupsi nomor dan menggantinya dengan Protocol. Secara teknis, sebuah Protocol adalah sekumpulan fungsi yang dibungkus dalam sebuah Structure (Struct) di bahasa C. Setiap Protocol memiliki identitas unik berupa GUID (Globally Unique Identifier) sepanjang 128-bit.

Komponen Utama Protocol:

  • GUID: Nama unik internasional untuk protokol tersebut (contoh: EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID).
  • Interface: Sebuah struct yang berisi kumpulan pointer ke fungsi-fungsi hardware (seperti fungsi untuk menggambar pixel atau mengubah resolusi).

3. Mekanisme Penemuan: LocateProtocol

Di dalam RezaOS, kita tidak lagi “menebak” apakah sebuah hardware ada atau tidak. Kita bertanya kepada Boot Services menggunakan fungsi LocateProtocol.

Contoh Kasus pada RezaOS:

Saat kita ingin mengakses kartu grafis, kita meminta UEFI untuk mencarikan protokol grafis (GOP). Jika ketemu, UEFI akan memberikan “alamat” dari kumpulan fungsi tersebut ke dalam program kita.

// Contoh logika di dalam RezaOS
Status = uefi_call_wrapper(SystemTable->BootServices->LocateProtocol, 3, 
                           &GopGuid, NULL, (void**)&Gop);

Setelah kita memiliki pointer Gop, kita bisa memanggil fungsinya seperti memanggil fungsi C biasa, tanpa perlu menyentuh register CPU secara manual. Ini jauh lebih aman dan mudah dibaca (readable).


4. Tabel Perbandingan: Interupsi vs Protocol

FiturBIOS Interrupt (INT)UEFI Protocol
IdentitasNomor (0-255)GUID (128-bit)
Bahasa UtamaAssemblyBahasa C
ParameterMelalui Register CPUMelalui Struct & Pointer
StabilitasRentan konflik nomorSangat stabil & terisolasi
Hardware AbstractionSangat rendahSangat tinggi (Abstraksi Penuh)
Kemudahan DebugSulit (Low-level)Mudah (Standard C Debugging)

5. Keuntungan bagi Pengembangan RezaOS

Implementasi Protocol di UEFI memberikan keuntungan luar biasa bagi struktur kode RezaOS:

  1. Hardware Independence: Kita tidak perlu tahu apakah kartu grafis di komputer adalah NVIDIA, AMD, atau Intel. Selama hardware tersebut menyediakan “Protocol GOP”, kode RezaOS kita akan berjalan tanpa perubahan.
  2. Extensibility: Jika kita ingin menambahkan fitur baru (misalnya protokol untuk membaca sensor suhu), kita tinggal mendefinisikan GUID baru. Tidak ada batasan 255 nomor seperti pada interupsi BIOS.
  3. Type Safety: Karena berbasis bahasa C, compiler akan memberitahu kita jika ada kesalahan tipe data saat memanggil fungsi hardware. Di BIOS, kesalahan pengisian register seringkali berakhir dengan sistem yang hang tanpa pesan error.

Kesimpulan

Protocol adalah bukti bahwa UEFI bukan sekadar pengganti BIOS, melainkan evolusi menjadi platform pengembangan yang profesional. Dengan meninggalkan dunia interupsi yang gelap dan beralih ke Protocol yang terstruktur, RezaOS menjadi sistem yang lebih modular, stabil, dan siap menghadapi berbagai variasi hardware modern.


Next Step: Pada Bab 6, kita akan membedah salah satu fitur paling krusial bagi sebuah sistem operasi: Manajemen Memori. Kita akan membandingkan sistem E820 milik BIOS yang terbatas dengan GetMemoryMap milik UEFI yang sangat detail.