Manajemen memori adalah fenomena mendasar dari sistem operasi yang digunakan untuk menangani atau mengelola memori primer untuk mengendalikan hak akses memori pada komputer. Tujuannya adalah untuk mencegah proses mengakses memori yang belum dialokasikan.
Sistem operasi mengalokasikan memori untuk setiap proses yang dibagi menjadi beberapa segmen. Stack dan Heap adalah dua cara memori dialokasikan dalam sistem operasi.
Segmen tumpukan digunakan untuk menyimpan variabel fungsi lokal yang dibuat secara otomatis, sedangkan segmen tumpukan digunakan untuk memori yang dialokasikan secara dinamis.
Keduanya disimpan dalam RAM komputer dan mereka dapat tumbuh dan menyusut selama pelaksanaan suatu program. Mari kita membahas keduanya secara terperinci dan membandingkannya untuk memahami mana yang lebih baik.
Stack segment adalah teknik manajemen memori yang digunakan untuk alokasi memori statis. Ini adalah area khusus dalam memori komputer yang digunakan untuk menyimpan variabel fungsi lokal. Ketika suatu fungsi dipanggil, memori dialokasikan ke semua variabel lokal di suatu tempat dan Anda dapat mengakses variabel-variabel itu seperti yang Anda ketahui lokasinya. Blok memori dibebaskan ketika fungsi berakhir. Stack adalah salah satu cara untuk mengimplementasikan proses ini secara efisien. Anggap saja sebagai struktur data dasar di mana item disusun di atas satu sama lain seperti tumpukan. Demikian pula, variabel lokal dapat diakses dengan mendorong dan muncul. Mendorong mengacu pada menambahkan item ke dalam tumpukan dan bermunculan berarti mengambil item dari tumpukan. Item dapat diakses dari tumpukan dalam urutan LIFO (last-in-first-out-out).
Heap mengacu pada kumpulan memori yang besar yang digunakan untuk alokasi memori dinamis yang berarti memori tetap dialokasikan sampai program dihentikan atau memori dibebaskan. Memori dialokasikan secara acak sehingga tidak ada cara mudah untuk mengakses memori. Tidak seperti segmen stack, elemen dibebaskan dalam urutan terbalik seperti yang semula dialokasikan. Secara sederhana, memori dialokasikan ke program berdasarkan permintaan dan dibebaskan ketika tidak lagi diperlukan. Elemen-elemen heap adalah independen satu sama lain yang berarti mereka dapat diakses ketika program berjalan dan dibebaskan ketika program berakhir. Ini seperti kumpulan memori global yang digunakan untuk menyimpan variabel global dan banyak variabel yang merujuknya.
Dalam arsitektur komputer, tumpukan adalah wilayah khusus dari memori komputer yang secara eksplisit dialokasikan untuk variabel otomatis. Dalam pemrograman, variabel otomatis adalah variabel lokal yang berarti ruang lingkup variabel lokal ke blok di mana ia dinyatakan. Memori dialokasikan secara otomatis ke variabel-variabel ini setelah masuk ke blok dan memori dibebaskan saat keluar. Heap, di sisi lain, adalah bagian dari memori komputer yang digunakan untuk alokasi memori dinamis yang berarti blok memori dialokasikan dan dialokasikan secara acak.
Stack digunakan untuk menyimpan variabel lokal dan cakupannya didefinisikan dalam fungsi. Dalam istilah teknis, stack mendukung alokasi memori statis yang sesuai dengan variabel statis lokal dan variabel lingkup. Memori dialokasikan sebelum program dijalankan, umumnya pada waktu kompilasi dan struktur data yang digunakan disebut stack. Heap, di sisi lain, digunakan untuk alokasi memori dinamis yang berarti memori dialokasikan secara manual saat runtime selama pelaksanaan suatu program. Program meminta memori, biasanya untuk menambahkan node ke struktur data dan kembali jika tidak diperlukan.
Tumpukan dikelola dan dioptimalkan oleh CPU dan data diakses dalam urutan terakhir masuk pertama keluar (LIFO). LIFO mengacu pada metode penyimpanan data dalam tumpukan memori di mana blok memori terbaru adalah yang pertama kali dibebaskan dan sebaliknya. Ini menjadikan manajemen memori efisien. Unsur-unsur tumpukan, sebaliknya, tidak tergantung satu sama lain dan data dapat diakses secara sewenang-wenang yang berarti blok memori dapat dialokasikan dan dibebaskan kapan saja terlepas dari pesanan mereka. Tidak seperti tumpukan, tumpukan tidak memiliki pola yang pasti untuk alokasi dan deallokasi blok memori.
Memori dikelola secara otomatis dalam tumpukan dan variabel dialokasikan dan didelokasi secara otomatis yang berarti tumpukan dicadangkan hanya untuk variabel sementara. Variabel lokal menjadi aktif ketika suatu fungsi dieksekusi dan ketika itu berakhir, variabel keluar dari lingkup yang berarti lingkup variabel adalah lokal ke suatu fungsi dan ada selama fungsi itu dijalankan. Tidak seperti di stack, memori dialokasikan ketika program berjalan di heap yang membuatnya sedikit lebih lambat untuk mengakses variabel yang disimpan di sini. Karena tidak ada urutan khusus dalam pemesanan blok, blok memori dapat dialokasikan dan gratis kapan saja.
Keduanya adalah cara alokasi memori yang paling umum dan disimpan dalam RAM komputer untuk manajemen memori yang efisien. Namun, akses ke memori dalam tumpukan cepat karena memori dikelola secara otomatis sedangkan di heap, memori harus dikelola secara manual yang berarti Anda perlu mengalokasikan memori bebas sendiri ketika blok tidak lagi diperlukan. Stack jelas lebih cepat dan lebih mudah digunakan berkat fleksibilitasnya, tetapi ia memiliki pro dan kontra yang adil. Meskipun stack tidak memiliki batasan ukuran memori, ini agak sulit untuk diterapkan. Heap lebih lambat dari stack, tetapi implementasinya lebih sederhana.