Stack memory гэдэг нь LIFO буюу Last in First Out зарчимаар ажилдаг компьютерийн санах ойг хэлнэ. Энэ нь програмчлалд функцийн дуудлага , локал хувьсагчийг хариуцдаг . Жишээлбэл функц дуудагдах болгонд Stack Frame буюу шинэ санах ойн блок Стак санах ойд үүсч хаягыг буцаадаг .Функц дуудагдаж дуусах үед буюу ажиллаж дуусах үед санах ойн блок устаж , тухайн санах ойг чөлөөлдөг.
Stack Memory-ийн шинж чанарууд нь
- LIFO бүтэцтэй : Сүүлд нэмэгдсэн нь түрүүлж гардаг .Бодит амьдрал дээрх зүйлтэй зүйрлэвэл давхарлаж тавьсан тавагтай ижил юм .
- Хэмжээний хувьд хязгаарлагдмал : Стак санах ой нь Heap санах ойтой харьцуулахад хэмжээний хувьд хязгаарлагдмал . Нийт стак санах ойн хэмжээ нь тухайн үйлдлийн систем , архитектураас хамаарна . Хэрвээ стак санах ойг хэт их ашиглавал Stack Overflow тохиолдоно.
- Автомат хуваарьлалт : Автоматаар санах ойг хуваарьлаж , чөлөөлдөг учир санах ойн менежмент хийх шаардлагагүй учир хөгжүүлэгчидэд илүү аюулгүй ба амархан болгодог .
- Хурдан хандалт : Стак санах ойн хувьд санах ойн блокууд нь залгаа , дараалласан байдаг тул хандахад илүү хурдан байдаг .
- Амьдрах хугацаа : Локал хувьсагч нь тухайн функцдээ л хүчинтэй ба тухайн функц ажиллаж дуусахад стак санах ойд хуваарьлагдсан байсан санах ой чөлөөлөгдөнө .
Stack memory хэрхэн ажилладаг вэ?
- Функц дуудагдах үед: Шинэ санах ойн блок стак санах ойнд нэмэгддэг. Энэ санах ойн блоконд дараах мэдээлэл хадгалагдана
- Буцах хаяг : Функц ажиллаж дууссаны дараа хаашаа буцахыг зааж өгдөг.
- Локал хувьсагчид : Тухайн функц доторх хувьсагчид.
- Push (нэмэх) ба Pop (хасах): Функц дуудагдах үед шинэ санах ойн блок стак санах ойд нэмэгддэг (push). Функцийн гүйцэтгэл дуусмагц санах ой чөлөөлөгддөг (pop).
Стак санах ой нь хурдтай ажиллагаа шаарддаг процессуудад тохиромжтой ч хэмжээний хязгаарлалтаас үүдэн их хэмжээний өгөгдлийг хадгалахад тохиромжгүй.