Pengurusan memori adalah fenomena asas sistem operasi yang digunakan untuk mengendalikan atau menguruskan memori utama untuk mengawal hak akses memori pada komputer. Matlamatnya adalah untuk menghalang sebarang proses daripada mengakses memori yang belum diperuntukkan kepadanya.
Sistem operasi memperuntukkan ingatan untuk setiap proses yang dibahagikan kepada segmen. Stack dan Heap adalah dua cara memori yang diperuntukkan dalam sistem pengendalian.
Segmen timbunan digunakan untuk menyimpan pembolehubah fungsi setempat yang dibuat secara automatik, manakala segmen timbunan digunakan untuk ingatan dinamik yang diperuntukkan.
Kedua-duanya disimpan dalam RAM komputer dan mereka boleh tumbuh dan menyusut semasa pelaksanaan program. Mari kita bincangkan kedua secara terperinci dan bandingkan mereka untuk memahami mana yang lebih baik.
Segmen stack ialah teknik pengurusan ingatan yang digunakan untuk peruntukan memori statik. Ia adalah kawasan khas dalam ingatan komputer yang digunakan untuk menyimpan pembolehubah fungsi setempat. Apabila fungsi dipanggil, memori diperuntukkan kepada semua pembolehubah setempat di suatu tempat dan anda boleh mengakses pembolehubah seperti yang anda tahu lokasi mereka. Blok memori dibebaskan apabila fungsi tamat. Stack adalah salah satu cara untuk melaksanakan proses ini dengan cekap. Fikirkannya sebagai struktur data asas di mana item disusun di atas satu sama lain seperti timbunan. Begitu juga, pembolehubah tempatan boleh diakses dengan menolak dan muncul. Menolak merujuk kepada menambah item ke dalam timbunan dan muncul bermakna mengambil barang dari timbunan. Item boleh diakses dari timbunan dalam perintah terakhir yang di-mula keluar (LIFO).
Heap merujuk kepada kolam besar memori yang digunakan untuk peruntukan memori yang dinamik yang bermaksud memori tetap diperuntukkan sehingga program ditamatkan atau memori dibebaskan. Memori diperuntukkan secara rawak supaya tidak ada cara mudah untuk mengakses memori. Tidak seperti segmen timbunan, elemen dibebaskan dalam susunan terbalik kerana ia pada asalnya diperuntukkan. Secara ringkas, ingatan diberikan kepada program atas permintaan dan dibebaskan apabila tidak diperlukan lagi. Unsur-unsur timbunan itu bebas daripada makna yang lain yang boleh diakses apabila program berjalan dan dibebaskan apabila program tersebut tamat. Ia seperti kolam memori global yang digunakan untuk menyimpan pembolehubah global dan banyak pembolehubah yang merujuknya.
Dalam seni bina komputer, timbunan adalah rantau khas memori komputer yang diperuntukkan secara eksplisit untuk pembolehubah automatik. Dalam pengaturcaraan, pembolehubah automatik adalah pembolehubah setempat yang bermaksud skop pembolehubah adalah setempat kepada blok di mana ia diisytiharkan. Memori diperuntukkan secara automatik kepada pembolehubah ini apabila masuk ke blok dan ingatan dibebaskan apabila keluar. Sebaliknya, timbunan adalah bahagian memori komputer yang digunakan untuk peruntukan memori dinamik yang bermaksud blok ingatan diperuntukkan dan dialokasikan secara rawak.
Stack digunakan untuk menyimpan pembolehubah tempatan dan ruang lingkup yang ditakrifkan dalam fungsi. Dalam istilah teknikal, timbunan menyokong peruntukan memori statik yang bersesuaian dengan pembolehubah statik tempatan dan pembolehubah skop. Memori diperuntukkan sebelum program dijalankan, secara amnya pada masa kompilasi dan struktur data yang digunakan disebut timbunan. Sebaliknya, Heap digunakan untuk peruntukan memori dinamik yang bermaksud memori diperuntukkan secara manual pada runtime semasa pelaksanaan program. Memori permintaan program, biasanya untuk menambahkan nod ke struktur data dan pulangan jika tidak diperlukan.
Tumpukan diuruskan dan dioptimumkan oleh CPU dan data diakses melalui pesanan terakhir (first-in-out-out) (LIFO). LIFO merujuk kepada kaedah penyimpanan data dalam susunan memori di mana blok ingatan yang paling baru adalah yang pertama dibebaskan dan sebaliknya. Ini menjadikan pengurusan memori berkesan. Unsur-unsur timbunan, sebaliknya, bebas daripada satu sama lain dan data boleh diakses dengan sewenang-wenangnya bermakna blok ingatan boleh diperuntukkan dan dibebaskan pada bila-bila masa tanpa mengira pesanan mereka. Tidak seperti tumpukan, timbunan tidak mempunyai corak pasti untuk peruntukan dan deallocation blok ingatan.
Memori diuruskan secara automatik dalam timbunan dan pembolehubah diperuntukkan dan deallocated secara automatik bermakna tumpukan disimpan hanya untuk pemboleh ubah sementara. Pembolehubah setempat menjadi aktif apabila fungsi dilaksanakan dan apabila ia tamat, pembolehubah keluar dari skop yang bermaksud skop pemboleh ubah itu setempat kepada fungsi dan wujud selagi fungsi itu dilaksanakan. Tidak seperti dalam timbunan, memori diperuntukkan sebagai program yang dijalankan dalam timbunan yang menjadikannya sedikit lebih lambat untuk mengakses pembolehubah yang disimpan di sini. Memandangkan tiada pesanan khusus dalam blok rizab, blok memori boleh diperuntukkan dan percuma pada bila-bila masa.
Kedua-duanya adalah cara yang paling biasa peruntukan memori dan disimpan dalam RAM komputer untuk pengurusan memori yang cekap. Walau bagaimanapun, akses ke memori dalam timbunan pantas kerana memori diuruskan secara automatik manakala dalam timbunan, memori akan diuruskan secara manual bermakna anda perlu memperuntukkan memori percuma apabila blok tidak diperlukan lagi. Stack jelas lebih cepat dan lebih mudah untuk digunakan terima kasih kepada kelenturannya, tetapi ia mempunyai bahagian yang adil dari kebaikan dan keburukan. Walaupun timbunan tidak mempunyai had pada saiz memori, ia agak sukar untuk dilaksanakan. Heap lebih lambat daripada timbunan, tetapi pelaksanaannya lebih mudah.