Catatan Kuliah: Memahami Manajemen Memori Utama (Main Memory)
Setiap instruksi di komputer harus diambil dari memori sebelum dieksekusi. Karena CPU hanya bisa mengakses register internal dan memori utama secara langsung, manajemen memori yang cepat dan aman menjadi kunci utama agar komputer kita tidak lemot. Yuk, kita pelajari konsep-konsep pentingnya!
1. Latar Belakang & Perangkat Keras Dasar
- Kecepatan Akses: Akses data ke register internal CPU sangat cepat (biasanya hanya butuh 1 detak jam/clock tick). Sementara itu, akses ke memori utama jauh lebih lambat. Untuk menjembatani perbedaan kecepatan ini, CPU modern dilengkapi dengan Cache (memori perantara super cepat).
- Perlindungan Alamat (Address Protection): Agar sebuah aplikasi tidak mengintip atau merusak data milik aplikasi lain, OS menggunakan dua register khusus:
- Base Register: Menyimpan alamat fisik terkecil yang sah bagi proses tersebut.
- Limit Register: Menentukan ukuran atau jangkauan memori yang boleh diakses.
- Setiap kali aplikasi meminta data, hardware akan mengecek kedua register ini. Jika melanggar batas, OS akan memicu fatal error.
2. Pengikatan Alamat (Address Binding)
Programmer biasanya menulis variabel dengan nama simbolik seperti count atau total. Nama-nama ini harus diikat (binding) ke alamat memori fisik asli melalui tiga tahapan:
- Compile Time: Alamat fisik sudah diketahui sejak program dikompilasi. Menghasilkan kode absolut (jika lokasi berubah, program harus dikompilasi ulang).
- Load Time: Jika alamat memori belum diketahui saat kompilasi, kompiler membuat kode yang dapat direlokasi (relocatable code). Alamat asli diikat saat program dimuat ke RAM.
- Execution Time: Alamat diikat saat program sedang berjalan. Aplikasi bisa dipindah-pindah lokasi RAM-nya selama berjalan. Metode ini membutuhkan bantuan hardware khusus dan digunakan oleh mayoritas OS modern.
3. Ruang Alamat Logis vs. Fisik
- Alamat Logis (Virtual Address): Alamat yang digenerasikan oleh CPU.
- Alamat Fisik: Alamat asli yang dibaca oleh perangkat keras memori.
- Himpunan seluruh alamat logis membentuk Logical Address Space, sedangkan pasangannya membentuk Physical Address Space.
- Penerjemahan dari alamat logis ke alamat fisik ditangani secara real-time oleh komponen keras bernama MMU (Memory-Management Unit). Program pengguna tidak pernah melihat alamat fisik yang asli.
4. Alokasi Memori Kontigu (Contiguous Memory Allocation)
Metode kuno di mana setiap aplikasi harus dimuat ke dalam satu blok memori yang menyambung (kontigu) tanpa terputus. Untuk mencari ruang kosong (hole) bagi proses baru, ada tiga strategi utama:
- First Fit: Mengambil ruang kosong pertama yang ukurannya cukup. Strategi ini adalah yang paling cepat.
- Best Fit: Mencari ruang kosong terkecil yang paling pas dengan kebutuhan proses. Kelebihannya adalah menghemat ruang besar, namun menyisakan sisa pecahan yang terlalu kecil.
- Worst Fit: Mengambil ruang kosong terbesar yang tersedia.
Masalah Fragmentasi (Fragmentation)
Alokasi kontigu memicu terjadinya Fragmentasi Eksternal, yaitu kondisi di mana total sisa memori sebenarnya cukup untuk menampung aplikasi baru, tetapi posisinya terpecah-pecah menjadi potongan kecil sehingga tidak bisa digunakan. Solusinya adalah Compaction (menggeser semua proses aktif ke satu sudut RAM agar sisa memorinya menyatu kembali).
5. Segmentasi (Segmentation)
Programmer cenderung melihat program sebagai kumpulan modul, seperti modul kode, data, stack, atau heap, bukan sebagai satu baris memori linear yang panjang. Segmentasi adalah teknik yang mendukung sudut pandang ini. Alamat memori dipecah menjadi dua bagian: Nomor Segmen dan Offset. Pemetaan ke alamat fisik dipandu oleh sebuah Segment Table.
6. Paging: Solusi Memori Modern
Paging adalah teknik manajemen memori yang paling banyak digunakan saat ini karena berhasil mengatasi masalah fragmentasi eksternal. Paging mengizinkan memori fisik suatu aplikasi dipecah secara tidak berurutan (non-kontigu).
- Mekanisme: Memori fisik dibagi menjadi blok-blok berukuran sama yang disebut Frames, sedangkan memori logis aplikasi dibagi menjadi blok dengan ukuran yang sama disebut Pages.
- Page Table: Sebuah tabel yang mencatat page nomor berapa disimpan di frame nomor berapa pada RAM fisik.
- TLB (Translation Look-aside Buffer): Karena pengecekan tabel memori di RAM bisa memperlambat kerja CPU hingga setengahnya, sistem menggunakan hardware khusus berupa TLB. TLB berfungsi sebagai cache super cepat untuk menyimpan riwayat translasi alamat memori yang baru saja diakses.
- Shared Pages: Paging memudahkan beberapa aplikasi (misalnya 3 user membuka teks editor yang sama secara bersamaan) untuk berbagi kode program yang sama di RAM (reentrant code). Hal ini sangat menghemat penggunaan kapasitas RAM.
Kesimpulan
Manajemen memori utama telah berevolusi dari alokasi satu blok kaku (kontigu) menjadi sistem Paging dinamis yang memecah data menjadi bagian-bagian kecil. Berkat adanya kolaborasi antara OS dan perangkat keras seperti MMU serta TLB, komputer kita saat ini bisa menjalankan puluhan aplikasi sekaligus dengan aman, terisolasi, dan sangat cepat.
Referensi
- Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin, "Operating System Concepts, Ninth Edition ", Chapter 8