stack va heap xotiralarining farqlari

DOCX 16 стр. 29,0 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 16
stack va heap xotiralarining farqlari reja: 1. stack va heap xotiralarning umumiy tavsifi 2. kamchiliklari: cheklangan hajm, qisqa muddatli ma’lumotlar 3. afzalliklari: katta hajm, uzoq muddatli ma’lumotlar saqlash 4. stack va heapni dasturlashda qo‘llash misollari xulosa foydalanilgan adabiyotlar ram => random access memory, biz bilgan o‘sha tezkor xotira. dastur ishga tushganda, dasturda foydalanilgan vaqtinchalik ma’lumotlar shu qismda saqlanadi. clr xotirani oson boshqarishi uchun, xotirani ba’zi qismlarga ajratadi: 1. stack - bu ma’lumotlarni lifo ko‘rinishida saqlovchi ma’lumotlar tuzilmasi; 2. heap - bu xotiraning dynamic memory allocation’ga javob beradigan qismi; 3. native code instructions - bu mashina tiliga mos bo‘lgan code saqlanadigan xotiraning bir qismi; random access memory(ram) keling, birinchi stack nima ekanligi haqida gaplashamiz :) stack => xotiraning bu qismi asosan local o‘zgaruvchilarni saqlashga va method chaqiruvlarini boshqarishga xizmat qiladi. unda ma’lumot qo‘shish va o‘chirish judayam tez bo‘ladi. stack har bir method call qilinganda o‘sha method uchun mahsus stack frame yaratadi …
2 / 16
od’da ishlatilgan, va method o'z ishini tugatsa, uning ham yashash vaqti tugaydigan o‘zgaruvchilarga aytilgan. value type bo‘lgan method parametr’lari, .. va hokazo. ya’ni, value type’ga mansub o'zgaruvchilar qayerda yaratilishiga qarab xotira tanlaydi. unuting, "value type’li o'zgaruvchilar faqat stack’da joylashadi" degan gapni :) nega value type’li o'zgaruvchilar heap’da ham joylashishi kerak? nega stack’da joylashavermaydi ular? bir value type’ga doir bo‘lgan o‘zgaruvchi heap’da joylashishi uchun u bir nechta method’larda bir necha marta ishlatilishi kerak bo‘ladi. yuqorida aytganimday, stack frame’lar bir biridan izolyatsiyalangan bo‘ladi. bu shuni anglatadiki, siz birinchi method’da ishlatilgan o‘zgaruvchingizni ikkinchi method’da ishlata olmaysiz. shu sababdan global value type bo‘lgan o‘zgaruvchilar ham heap’da saqlanadi, har qaysi stack frame uchun uni address’i reference qilib qo‘yiladi va bu sizga sizning global o‘zgaruvchingizni istalgan method’ingizda, istalgan marotaba ishlatish imkonini beradi. stack’dan stack frame’ni pop qilish jarayoni qanday bo‘ladi? yuqorida aytganimdek, method o‘z ishini yakunlasa, stack frame’ham stack’dan pop qilinadi va shu bilan birgalikda, method’da …
3 / 16
turadi, stack frame pop bo‘lsa, gc borib, o‘zgaruvchini ham heap'dan tozalab yuboradi. endi navbat heap’ga keldi) heap => xotiraning bu qismida obyektlar va reference type'ga tegishli ma'lumotlar saqlanadi, qiymati heap'da, address’lari esa stack’da saqlab boriladi. u address’ga reference qilib qo‘yiladi. lekin bu hali hammasi emas, keling sal chuqurroq yondashamiz) heap o‘zi nima uchun yaratilgan? bizga stack’ni o‘zi yetmasmidi? bu yerda shuni aytish joizki, heap’ning asosiy ustunlik taraflari ma’lumotlarni betartib holatda joylashtirishi(unlimited joy), collection’larni boshidagi object’ni root reference qila olishidir. aytaylik, bizdagi stack frame’da global reference tip bo‘lgan o‘zgaruvchimiz bor, va u collection, agar uni boshqa stack frame’ga copy qilmoqchi bo‘lsak elementlarini bitta bitta o‘tkazib chiqishga to‘g‘ri kelar edi. heap bor bo‘lganligi uchun shunchaki o‘sha collection’ning root reference’i ulab qo‘yiladi xolos) heap’ning mavzuga doir tashkil topgan qismlarini aytib o'taman: 1. loh => large object heap(85 000 baytdan katta bo‘lgan ma’lumotli o‘zgaruvchilar saqlanadi) 2. soh => small object heap(85 000 baytdan kichik …
4 / 16
uning parametr va mahalliy o‘zgaruvchilari stekka qo‘shiladi. funksiya tugagach, stekdan bu ma’lumotlar olib tashlanadi. afzalliklari:tez ishlash. xotira ajratish va bo‘shatish avtomatik tarzda amalga oshiriladi. kamchiliklari: o‘lchami cheklangan. katta ma’lumotlar yoki dinamik ma’lumotlar strukturalari uchun mos emas. heap (xip) xususiyatlari:dinamik o‘lcham: xipda xotira dastur ishlashi davomida kerakli hajmda ajratilishi va bo‘shatilishi mumkin. tezkor emas: xotira ajratish va bo‘shatish jarayonlari stekdan sekinroq, chunki murakkab xotira boshqarish talab qilinadi. katta va kompleks ma’lumotlar: katta ma’lumotlar va dinamik strukturalar (masalan, massivlar, obyektlar) xipda saqlanadi. ishlash tizimi:xotira ajratishda dasturchi yoki garbage collector (axlat tozalovchi) tomonidan nazorat qilinadi. xotira ajratish uchun malloc, new kabi funksiyalar yoki operatorlar ishlatiladi. ajratilgan xotirani bo‘shatish uchun free, delete kabi funksiyalar yoki operatorlar ishlatiladi. afzalliklari:xotira hajmi dasturga moslashadi. katta hajmdagi ma’lumotlarni saqlash va ularga kirish imkonini beradi. kamchiliklari:xotira ajratish va bo‘shatish jarayonlari sekinroq. xotira bo‘shatishni unutish natijasida xotira sizib chiqishi (memory leak) muammosi kelib chiqishi mumkin. hisoblash arxitekturasidagi steklar - bu …
5 / 16
m uzunlikdagi o'zgaruvchilarni saqlash uchun ishlatiladi. dasturchilar keyinchalik o'zgaruvchan uzunlikdagi mahalliy ma'lumotlarni saqlash uchun stekdan aniq foydalanishni tanlashlari mumkin. agar xotira hududi ip stekida bo'lsa, bu xotira stekga ajratilgan deb aytiladi, ya'ni stekga asoslangan xotira ajratish (sbma). bu yig'indiga asoslangan xotira ajratish (hbma) bilan farqlanadi. sbma ko'pincha funktsiya chaqiruvlari to'plami bilan chambarchas bog'lanadi. ma'lumotlar oxirgi marta birinchi bo'lib qo'shilganligi va o'chirilganligi sababli, stekga asoslangan xotirani taqsimlash juda oddiy va odatda yig'ma-asoslangan xotirani taqsimlashdan (shuningdek, dinamik xotira ajratish sifatida ham tanilgan) ancha tezroq, masalan. c ning malloc. yana bir xususiyat shundaki, stekdagi xotira funksiya tugashi bilan avtomatik va juda samarali tarzda qayta tiklanadi, bu esa ma’lumotlar talab qilinmasa, dasturchi uchun qulay bo‘lishi mumkin.[1] (agar u alloca chaqiruvi sodir boʻlgunga qadar biror nuqtaga koʻchgan boʻlsa, xuddi shu narsa longjmp uchun ham amal qiladi.) ammo, agar maʼlumotlar qandaydir shaklda saqlanishi kerak boʻlsa, u holda funksiya chiqishdan oldin u stekdan toʻpga koʻchirilishi kerak. shuning …

Хотите читать дальше?

Скачайте все 16 страниц бесплатно через Telegram.

Скачать полный файл

О "stack va heap xotiralarining farqlari"

stack va heap xotiralarining farqlari reja: 1. stack va heap xotiralarning umumiy tavsifi 2. kamchiliklari: cheklangan hajm, qisqa muddatli ma’lumotlar 3. afzalliklari: katta hajm, uzoq muddatli ma’lumotlar saqlash 4. stack va heapni dasturlashda qo‘llash misollari xulosa foydalanilgan adabiyotlar ram => random access memory, biz bilgan o‘sha tezkor xotira. dastur ishga tushganda, dasturda foydalanilgan vaqtinchalik ma’lumotlar shu qismda saqlanadi. clr xotirani oson boshqarishi uchun, xotirani ba’zi qismlarga ajratadi: 1. stack - bu ma’lumotlarni lifo ko‘rinishida saqlovchi ma’lumotlar tuzilmasi; 2. heap - bu xotiraning dynamic memory allocation’ga javob beradigan qismi; 3. native code instructions - bu mashina tiliga mos bo‘lgan code saqlanadigan xotiraning bir qismi; random access memor...

Этот файл содержит 16 стр. в формате DOCX (29,0 КБ). Чтобы скачать "stack va heap xotiralarining farqlari", нажмите кнопку Telegram слева.

Теги: stack va heap xotiralarining fa… DOCX 16 стр. Бесплатная загрузка Telegram