Bagaimana Program Mengakses RAM
1. RAM Fisik (Physical Memory)
RAM 8GB yang kamu lihat itu adalah memori fisik yang terpasang di motherboard. Ini adalah chip hardware yang menyimpan data dalam bentuk bit (0 dan 1).
Alamat fisik:
0x00000000sampai0x1FFFFFFFF(untuk 8GB)Setiap byte punya alamat unik
TAPI, program kamu TIDAK pernah akses RAM fisik secara langsung! Ini penting!
2. Virtual Memory (Memori Virtual)
Setiap program/proses mendapat ilusi bahwa mereka punya seluruh memori untuk diri mereka sendiri. Ini disebut virtual memory.
Kenapa perlu virtual memory?
Isolasi: Program A tidak bisa akses memori Program B (keamanan)
Simplifikasi: Program tidak perlu tahu di mana posisi fisik RAM-nya
Overcommitment: Total virtual memory semua program bisa lebih dari 8GB fisik
3. MMU (Memory Management Unit)
MMU adalah chip hardware (bagian dari CPU) yang mentranslasi alamat virtual ke alamat fisik.
Cara kerja:
Program: "Saya mau akses alamat 0x400000"
β
MMU: "OK, alamat virtual 0x400000 itu sebenarnya ada di RAM fisik 0x8A3F000"
β
RAM: Memberikan data dari alamat fisik tersebutPage Table
MMU menggunakan Page Table (tabel halaman) untuk mapping:
Memori dibagi jadi chunk bernama pages (biasanya 4KB)
Page Table menyimpan mapping: Virtual Page β Physical Page
Disimpan di RAM, dikelola oleh OS kernel
4. Peran Kernel/OS
Kernel Linux/Windows adalah "manager" dari semua memori. Tugasnya:
a) Memory Allocation
Ketika program minta memori (malloc/new), kernel:
Cari physical page yang kosong
Update page table proses tersebut
Return alamat virtual ke program
b) Page Fault Handling
Kalau program akses alamat yang belum dimapping:
c) Memory Protection
Setiap page punya permission (read/write/execute). Kalau program coba akses yang tidak diizinkan β segmentation fault!
5. SWAP (Swap Space)
Ketika RAM fisik penuh, kernel bisa "mengusir" page yang jarang dipakai ke disk (swap).
Proses:
Kalau program akses page yang di-swap:
Swap itu LAMBAT karena disk jauh lebih lambat dari RAM (HDD: ~100 MB/s vs RAM: ~25 GB/s)
6. mmap (Memory Mapped Files)
mmap adalah syscall yang "memetakan" file ke memory address space program.
Contoh:
Yang terjadi di belakang layar:
Keuntungan mmap:
Efficient: hanya load yang diakses
Shared memory: beberapa proses bisa mmap file yang sama
OS bisa cache-kan di page cache
7. Go Runtime Memory Management
Go punya memory allocator sendiri di atas syscall OS:
a) Memory Arena
Go runtime minta memory dari OS dalam chunk besar (biasanya beberapa MB):
b) Go Allocator
Runtime Go punya allocator yang efisien:
Small objects (<32KB): dialokasikan dari memory pool per-size
Large objects (β₯32KB): langsung dari OS
Stack: setiap goroutine punya stack (mulai 2KB, bisa grow)
c) Garbage Collector
GC Go secara periodik:
Scan semua pointer yang masih dipakai
Tandai object yang masih "hidup"
Bebaskan memory object yang mati
Tidak langsung return ke OS, disimpan di free list untuk reuse
8. Dari Kode Go ke RAM
Mari trace alur lengkap dari kode Go:
Yang terjadi:
9. Visualisasi Lengkap
Sempurna! Saya sudah melengkapi visualisasi interaktifnya. Sekarang mari saya tambahkan beberapa penjelasan tambahan yang penting:
10. Copy-on-Write (COW)
Ada mekanisme penting lain yang perlu kamu tahu:
Ketika proses fork (duplikasi proses), tidak semua memory langsung di-copy! Kernel menggunakan Copy-on-Write:
Ini menghemat memory dan waktu saat fork!
11. Huge Pages / Large Pages
Normalnya page size = 4KB, tapi modern CPU support huge pages:
x86-64: 2MB atau 1GB pages
Keuntungan: Lebih sedikit entries di page table, lebih sedikit TLB miss
Go bisa pakai: Transparent Huge Pages (THP) di Linux
12. NUMA (Non-Uniform Memory Access)
Di server dengan multiple CPU socket, RAM tidak "seragam":
Akses RAM "lokal" lebih cepat dari RAM "remote". Kernel coba allocate memory dari RAM bank terdekat ke CPU yang eksekusi process.
13. Kenapa Perlu Virtual Memory?
Tanpa virtual memory, masalah besar:
Fragmentasi: Program perlu continuous physical memory (susah!)
Security: Program bisa akses memory program lain (bahaya!)
Relocation: Program harus load di alamat fisik yang sama setiap run
Limited address space: Terbatas physical RAM saja
Dengan virtual memory, semua masalah solved!
Last updated