Materi Memory Allocation

Pengertian dan Fungsi Manajemen Memori

Manajemen Memori merupakan salah satu komponen terpenting dalam sistem operasi yang berfungsi untuk mengatur, mengalokasikan, dan memantau penggunaan memori utama (RAM) oleh berbagai proses yang berjalan secara bersamaan. Tugas ini sangat krusial karena menentukan seberapa efisien dan stabil sebuah sistem dapat beroperasi.

Tanpa manajemen memori yang baik, sistem operasi akan kesulitan mengatur proses yang membutuhkan ruang memori, menyebabkan crash, lambatnya kinerja, bahkan hilangnya data akibat benturan antar proses. Oleh karena itu, sistem operasi modern menggunakan berbagai strategi manajemen memori untuk menjamin keamanan, efisiensi, dan keandalan sistem secara keseluruhan.

Tujuan Utama Manajemen Memori

Konsep-Konsep Penting dalam Manajemen Memori Modern

Dalam sistem operasi modern, manajemen memori telah berkembang dengan mengadopsi berbagai mekanisme canggih untuk meningkatkan fleksibilitas, keamanan, dan efisiensi. Beberapa konsep penting di antaranya:

Kesimpulannya, manajemen memori adalah tulang punggung efisiensi sistem operasi. Dengan mekanisme seperti virtual memory, paging, dan segmentation, sistem dapat bekerja secara stabil, mendukung multitasking, serta menjaga keamanan data di setiap proses yang berjalan. Pemahaman tentang manajemen memori sangat penting bagi siapa pun yang mempelajari konsep dasar sistem operasi.

Jenis Memory Allocation

Memory allocation adalah proses penting dalam manajemen memori yang bertujuan untuk menentukan bagian mana dari memori utama (RAM) yang akan digunakan oleh suatu proses. Ketika banyak program dijalankan secara bersamaan, sistem operasi harus dapat mengalokasikan memori secara efisien agar setiap proses mendapat ruang yang cukup tanpa saling mengganggu.

Secara umum, terdapat dua pendekatan utama dalam alokasi memori: Static Allocation dan Dynamic Allocation. Kedua metode ini memiliki kelebihan dan kekurangan masing-masing tergantung pada jenis sistem dan kebutuhan penggunaannya.

1. Static Allocation (Fixed Partitioning)

Pada metode static allocation, memori utama dibagi menjadi beberapa partisi berukuran tetap (fixed partitions) sebelum sistem mulai dijalankan. Setiap partisi hanya dapat menampung satu proses pada satu waktu. Misalnya, jika komputer memiliki RAM sebesar 1024 KB dan dibagi menjadi empat partisi masing-masing 256 KB, maka hanya empat proses yang dapat dijalankan secara bersamaan β€” tidak peduli apakah setiap proses kecil atau besar.

Konsep ini sering digunakan pada sistem batch lama di mana jumlah proses relatif sedikit dan ukuran proses sudah diketahui sebelumnya. Namun, pada sistem modern yang multitasking dan dinamis, metode ini cenderung kurang efisien karena tidak mampu menyesuaikan ukuran partisi dengan kebutuhan proses yang sebenarnya.

πŸ“˜ Contoh sederhana: Bayangkan kamu memiliki empat kotak masing-masing 1 liter untuk menampung cairan, tapi kamu ingin menyimpan air 600 ml. Kotak tetap menampungnya, namun ada 400 ml ruang yang tidak terpakai β€” itulah internal fragmentation.

2. Dynamic Allocation (Variable Partitioning)

Dalam metode dynamic allocation, sistem operasi membuat partisi secara dynamically β€” sesuai dengan ukuran proses yang akan dijalankan. Tidak ada ukuran tetap untuk partisi; sistem akan menyesuaikan ruang yang dibutuhkan. Jika sebuah proses membutuhkan 150 KB, maka sistem hanya akan memberikan ruang sebesar itu dari area memori kosong yang tersedia.

Pendekatan ini membuat penggunaan memori jauh lebih efisien karena ruang yang tidak terpakai menjadi lebih sedikit. Namun, seiring berjalannya waktu, akan muncul potongan-potongan ruang kosong kecil di antara blok yang terisi β€” fenomena ini dikenal dengan istilah external fragmentation.

πŸ“— Analogi: Metode ini seperti mengisi air ke dalam botol berbagai ukuran. Setiap botol diisi sesuai kebutuhan, tetapi lama-kelamaan meja bisa penuh dengan botol kecil dan besar yang menyisakan ruang-ruang kecil di antaranya β€” itulah yang disebut external fragmentation.

3. Perbandingan Static vs Dynamic Allocation

Aspek Static Allocation Dynamic Allocation
Ukuran Partisi Tetap, ditentukan saat awal sistem berjalan. Berubah sesuai kebutuhan proses.
Efisiensi Penggunaan Memori Kurang efisien, banyak ruang kosong tidak terpakai. Lebih efisien karena sesuai ukuran proses.
Jenis Fragmentasi Internal Fragmentation External Fragmentation
Kompleksitas Pengelolaan Sederhana Lebih kompleks (perlu algoritma alokasi)
Cocok Untuk Sistem batch, embedded, atau real-time sederhana Sistem multitasking, sistem operasi modern
πŸ’‘ Catatan: Sistem operasi modern seperti Windows, Linux, dan macOS sudah jarang menggunakan partisi tetap. Sebagai gantinya, mereka mengimplementasikan konsep paging dan segmentation yang memungkinkan proses disimpan dalam blok-blok kecil (pages atau segments) dan tidak harus bersebelahan secara fisik di memori. Pendekatan ini meningkatkan efisiensi, mengurangi fragmentasi, serta mendukung fitur seperti virtual memory dan process isolation.

Algoritma Pengalokasian Memori

Dalam sistem variable partitioning, ukuran partisi tidak tetap β€” artinya sistem operasi harus menentukan di mana suatu proses baru akan ditempatkan di memori utama. Karena ruang kosong (hole) dapat muncul di berbagai lokasi akibat proses keluar atau selesai, dibutuhkan strategi untuk memilih blok memori yang paling sesuai bagi proses baru.

Proses pemilihan blok ini dikenal sebagai algoritma pengalokasian memori. Tiga algoritma yang paling umum digunakan adalah: First-Fit, Best-Fit, dan Worst-Fit.

1. First-Fit

Pada metode First-Fit, sistem operasi akan mencari dari awal area memori hingga menemukan blok kosong pertama yang ukurannya cukup besar untuk menampung proses. Begitu ditemukan, proses langsung ditempatkan di sana tanpa melanjutkan pencarian.

πŸ“˜ Analogi: Seperti mencari tempat duduk pertama yang kosong di bioskop. Cepat mendapat tempat, tapi kursi di depan mungkin banyak tersisa ruang-ruang kecil.

2. Best-Fit

Algoritma Best-Fit berusaha menggunakan memori seefisien mungkin dengan mencari blok kosong terkecil yang masih cukup besar untuk menampung proses. Sistem menelusuri seluruh daftar blok kosong, memilih yang β€œpaling pas”.

πŸ“— Analogi: Seperti mencari tempat parkir yang ukurannya paling pas untuk mobilmu. Hemat ruang, tapi kamu butuh waktu lebih lama untuk menemukannya.

3. Worst-Fit

Metode Worst-Fit memilih blok memori terbesar yang tersedia untuk menempatkan proses. Tujuannya adalah agar sisa ruang yang tersisa setelah alokasi masih cukup besar dan bisa digunakan untuk proses lain di kemudian hari.

πŸ“™ Analogi: Seperti menaruh koper kecil di kamar paling besar di rumah, agar kamar kecil tetap bisa digunakan nanti β€” tapi ruang besar jadi terbuang.

Perbandingan Tiga Algoritma

Algoritma Cara Kerja Kelebihan Kekurangan
First-Fit Menempatkan proses pada blok kosong pertama yang cukup besar. Cepat, efisien waktu, implementasi sederhana. Bisa menyebabkan fragmentasi di awal memori.
Best-Fit Mencari blok terkecil yang masih cukup besar untuk proses. Penggunaan memori paling efisien, sedikit ruang terbuang. Lambat karena harus menelusuri semua blok kosong.
Worst-Fit Memilih blok terbesar untuk menampung proses baru. Mempertahankan blok besar untuk proses berikutnya. Bisa menimbulkan fragmentasi besar dan tidak efisien.

Contoh Ilustrasi Sederhana

Misalkan tersedia tiga blok kosong dengan ukuran 100 KB, 300 KB, dan 200 KB. Sebuah proses baru membutuhkan ruang sebesar 180 KB.

πŸ’‘ Catatan: Tidak ada satu algoritma yang sempurna untuk semua situasi. Sistem operasi modern sering menggunakan kombinasi teknik atau bahkan algoritma adaptif yang dapat berubah tergantung kondisi beban memori dan pola proses.

Berikut adalah materi visual yang memberikan gambaran lebih jelas mengenai cara kerja masing-masing algoritma dalam proses alokasi memori. Tonton video berikut untuk memahami alurnya secara intuitif.

Fragmentasi Memori

Fragmentasi memori adalah kondisi di mana ruang memori tidak dapat digunakan secara optimal karena terdapat bagian-bagian kosong (free space) yang tersebar atau berukuran tidak sesuai dengan kebutuhan proses. Akibatnya, meskipun total ruang kosong masih besar, sistem tidak dapat menampung proses baru yang memerlukan ruang bersebelahan secara kontinu.

Fragmentasi merupakan masalah umum dalam manajemen memori, terutama pada sistem yang menggunakan contiguous memory allocation (alokasi bersebelahan). Dalam pendekatan ini, setiap proses harus ditempatkan di satu blok memori yang berurutan, sehingga ruang kosong yang tersebar di antara proses bisa membuat sebagian memori tidak terpakai.

Jenis-Jenis Fragmentasi

Jenis Deskripsi Penyebab Solusi
Internal Fragmentation Terjadi ketika blok memori yang dialokasikan lebih besar dari kebutuhan proses. Sisa ruang di dalam blok tidak dapat digunakan oleh proses lain. Umumnya disebabkan oleh Fixed Partitioning, di mana ukuran partisi telah ditentukan sebelumnya dan tidak selalu cocok dengan ukuran proses. Gunakan Variable Partitioning atau teknik Paging agar alokasi lebih fleksibel dan efisien.
External Fragmentation Terjadi ketika ruang kosong tersebar di antara blok-blok memori yang sudah terisi, sehingga tidak ada blok tunggal yang cukup besar untuk menampung proses baru. Umumnya terjadi pada Variable Partitioning karena proses masuk dan keluar secara dinamis, meninggalkan celah kecil yang terpisah-pisah di antara blok. Solusi umum adalah melakukan Compaction (penggabungan blok kosong secara fisik) atau menggunakan Non-Contiguous Allocation seperti Paging dan Segmentation.

Penjelasan Lebih Lanjut

Ketika proses selesai dijalankan, ruang memori yang digunakan dikembalikan ke sistem. Namun, jika proses-proses lain masih berjalan di antara ruang kosong tersebut, maka area kosong tidak bisa langsung digunakan untuk satu proses besar karena terpisah-pisah.

πŸ“˜ Contoh Kasus:
Bayangkan memori seperti deretan kursi bioskop. Beberapa penonton sudah keluar, menyisakan kursi kosong di antara penonton lain. Total kursi kosong masih banyak, tapi jika satu kelompok besar ingin duduk berdampingan, mereka tidak bisa karena kursi kosongnya tersebar di berbagai tempat.

Teknik Mengatasi Fragmentasi

πŸ’‘ Catatan: Pada sistem operasi modern, fragmentasi eksternal hampir sepenuhnya dihilangkan dengan penerapan paging dan segmentation. Dengan cara ini, memori fisik bisa digunakan lebih efisien tanpa memerlukan ruang bersebelahan.

Contoh Kasus dan Analisis

Untuk memahami perbedaan efisiensi antar algoritma, perhatikan contoh berikut.

Diketahui:
Blok memori kosong β†’ [100 KB, 500 KB, 200 KB, 300 KB, 600 KB]
Proses yang datang β†’ [212 KB, 417 KB, 112 KB, 426 KB]

Soal: Tentukan hasil alokasi memori menggunakan tiga algoritma: First-Fit, Best-Fit, dan Worst-Fit.