Arsitektur Memori 1 MB Pertama pada Sistem x86: Panduan Dasar bagi Pengembang Sistem Operasi

Dalam pengembangan sistem operasi (Operating System Development), memahami topografi memori adalah langkah paling krusial sebelum menulis satu baris kode pun. Pada arsitektur x86, khususnya saat bekerja dalam Real Mode, kita dibatasi oleh ruang alamat sebesar 1 MB. Artikel ini akan membedah anatomi memori 1 MB pertama tersebut dan bagaimana seorang pengembang mengalokasikan ruang untuk bootloader, kernel, hingga stack.

Peta Memori Detail (0x00000 – 0xFFFFF)

Berikut adalah visualisasi teknis pembagian area memori pada lingkungan x86 standar:

ALAMAT (Hex)       KAPASITAS      FUNGSI / KEGUNAAN
+----------------+ 1024 KB +------------------------------------------+
| 0xFFFFF | | SYSTEM BIOS ROM |
| | | 64 KB | (Instruksi pertama CPU setelah Reset) |
| 0xF0000 | | |
+----------------+ 960 KB +------------------------------------------+
| 0xEFFFF | | BIOS UNUSED / RESERVED |
| | | 128 KB | (Area kosong atau BIOS tambahan) |
| 0xD0000 | | |
+----------------+ 832 KB +------------------------------------------+
| 0xCFFFF | | VIDEO BIOS ROM |
| | | 32 KB | (Firmware khusus Kartu Grafis/VGA) |
| 0xC0000 | | |
+----------------+ 800 KB +------------------------------------------+
| 0xBFFFF | | VGA TEXT BUFFER (0xB8000) |
| | | 32 KB | (Target output karakter ke layar) |
| 0xB8000 | | |
+----------------+ 768 KB +------------------------------------------+
| 0xAFFFF | | VGA GRAPHICS BUFFER |
| | | 64 KB | (Digunakan untuk mode grafis/GUI) |
| 0xA0000 | | |
+----------------+ 640 KB +------------------------------------------+
| 0x9FFFF | | EBDA (Extended BIOS Data Area) |
| 0x9FC00 | ~639 KB | (Data tambahan sistem BIOS) |
+----------------+ +------------------------------------------+
| 0x9FBFF | | |
| | | | FREE CONVENTIONAL MEMORY |
| | | | (Area utama aplikasi & Kernel) |
| 0x08000 | | (Posisi Aman untuk Stack) |
| | | ~600 KB | |
| 0x07E00 | | |
+----------------+ 31.5 KB +------------------------------------------+
| 0x07DFF | | BOOT SECTOR (Entry Point) |
| | | 512 Byte | (Lokasi pemuatan [org 0x7c00]) |
| 0x07C00 | | |
+----------------+ 31 KB +------------------------------------------+
| 0x07BFF | | |
| | | ~30 KB | FREE MEMORY (Lower) |
| 0x00500 | | |
+----------------+ 1280 Byte +------------------------------------------+
| 0x004FF | | BIOS DATA AREA (BDA) |
| 0x00400 | 256 Byte | (Status hardware & sistem) |
+----------------+ 1024 Byte +------------------------------------------+
| 0x003FF | | INTERRUPT VECTOR TABLE (IVT) |
| | | 1024 Byte | (Daftar alamat interupsi BIOS) |
| 0x00000 | | |
+----------------+ 0 KB +------------------------------------------+

Analisis Komponen Utama

1. Area Sakral: IVT dan BDA (0x00000 – 0x004FF)

Dua area ini adalah fondasi bagi operasional sistem dalam Real Mode. Interrupt Vector Table (IVT) menyimpan daftar alamat (pointer) untuk menangani interupsi hardware dan software (seperti int 0x10 untuk video). Sedangkan BIOS Data Area (BDA) menyimpan parameter status sistem. Menimpa area ini akan menyebabkan kegagalan sistem instan.

2. Titik Pendaratan: Boot Sector (0x07C00)

BIOS secara otomatis memuat sektor pertama dari perangkat bootable ke alamat fisik 0x07C00. Inilah alasan mengapa setiap kode bootloader harus diawali dengan direktif [org 0x7c00] guna memastikan seluruh referensi alamat memori dalam kode dihitung dengan benar dari titik awal tersebut.

3. Manajemen Stack (0x08000)

Dalam pengembangan OS tahap awal, menentukan posisi Stack adalah hal yang krusial. Alamat 0x08000 sering dipilih sebagai dasar tumpukan (Base Pointer) karena beberapa alasan strategis:

  • Keamanan: Memberikan jarak aman di atas Boot Sector (0x07C000x07DFF).
  • Arah Pertumbuhan: Mengingat Stack pada x86 tumbuh ke bawah (downwards), penggunaan 0x08000 memberikan ruang sekitar 512 byte sebelum berisiko menabrak kode program di bawahnya.

4. Kendali Visual: VGA Text Buffer (0xB8000)

Bagi pengembang OS, alamat 0xB8000 adalah pintu gerbang komunikasi dengan pengguna. Di sinilah memori video untuk mode teks berada. Dengan menuliskan pasangan byte (karakter ASCII dan atribut warna) secara langsung ke alamat ini, pengembang dapat menampilkan informasi ke layar tanpa bergantung pada layanan interupsi BIOS.

5. Area Firmware: BIOS ROM (0xF0000 – 0xFFFFF)

Ini adalah area read-only di mana kode asli BIOS berada. Instruksi pertama yang dieksekusi CPU setelah tombol power ditekan berada tepat di alamat 0xFFFF0 (Reset Vector), yang kemudian akan melompat ke rutinitas inisialisasi BIOS.


Kesimpulan

Memahami peta memori ini memungkinkan pengembang untuk mengelola sumber daya perangkat keras secara presisi. Ketelitian dalam penempatan kode dan data pada area yang tepat—seperti memastikan Stack tidak menimpa Boot Sector atau menjaga integritas IVT—adalah perbedaan antara sistem yang stabil dan sistem yang terus mengalami crash.