asini bir necha marta o'chirib tashlaganida olib kelishi mumkin; ob'ekt aniq bir necha marta yo'q qilingan; ob'ektni boshqarish uchun ko'rsatgichdan foydalanishda emas bepul do'konga ajratilgan dasturchi ushbu ko'rsatgichning maqsadli ob'ektining zaxira xotirasini chiqarishga harakat qiladi; yoki ob'ektni ko'rsatgich orqali boshqasiga, noma'lum tashqi vazifa, ish zarrachasi yoki jarayon tomonidan boshqariladigan o'zboshimchalik bilan ishlaydigan xotira maydonini boshqarish paytida dasturchi ushbu ob'ekt holatini buzishi mumkin, ehtimol uning chegaralaridan tashqarida yozish va buzilgan bo'lishi mumkin. uning xotirasini boshqarish ma'lumotlari. Bunday harakatlar natijasini o'z ichiga olishi mumkin to'plangan korruptsiya, muddatidan oldin yo'q qilish boshqacha (va yangi yaratilgan) ob'ekt, bu ko'p marta o'chirilgan ob'ekt bilan xotirada bir xil joyni egallaydi, dastur a tufayli qulaydi segmentatsiya xatosi (buzilishi xotirani himoya qilish,) va boshqa shakllari aniqlanmagan xatti-harakatlar.
O'chirilgan narsalarga ko'rsatgichlar aylanadi yovvoyi ko'rsatgichlar agar o'chirishdan keyin foydalanilgan bo'lsa; bunday ko'rsatgichlardan foydalanishga urinish, diagnostikasi qiyin bo'lgan xatolarga olib kelishi mumkin.
Faqatgina foydalaniladigan tillar axlat yig'ish so'nggi ikki sinfdagi nuqsonlardan saqlanishlari ma'lum. Xotirada qochqinlar hali ham paydo bo'lishi mumkin (va chegaralangan qochqinlar tez-tez avlodlar yoki konservativ axlat yig'ish bilan sodir bo'ladi), lekin odatda qo'lda ishlaydigan tizimlarda xotira sızıntısından kamroq.
Xotirani dinamik ravishda taqsimlash
Ajratish haqidagi so'rovni bajarish vazifasi etarli hajmdagi foydalanilmagan xotira blokini topishdan iborat. Deb nomlangan katta xotira fondidan qismlarni ajratish orqali xotira talablari qondiriladi. Har qanday vaqtda, uyumning ba'zi qismlari ishlatilmoqda, ba'zilari esa "bepul" (foydalanilmayapti) va shu bilan kelajakda ajratish uchun mavjud.
Samaradorlik
Amalga oshirilgan maxsus dinamik xotirani taqsimlash algoritmi ishlashga sezilarli ta'sir ko'rsatishi mumkin. Tomonidan 1994 yilda o'tkazilgan tadqiqot Raqamli uskunalar korporatsiyasi tasvirlaydi qo'shimcha xarajatlar turli xil ajratuvchilar uchun jalb qilingan. O'rtacha eng past ko'rsatkich ko'rsatma yo'lining uzunligi bitta xotira uyasini ajratish uchun talab qilingan 52 (ko'rsatma darajasi bilan o'lchanganidek) profiler turli xil dasturiy ta'minotlarda).
Virtual manzil makoni
32-bit rejimida virtual manzil
Ko'pgina kompyuter arxitekturalarida virtual manzil noldan maksimal qiymatgacha bo'lgan raqam bo'lib, odatda kompyuterning kattaligi bilan belgilanadi, protsessor apparati tomonidan jismoniy manzilga aylantiriladi. IA-32 me'morchiligi ushbu qoidadan istisnolardan biridir. Birinchidan, dasturlarda 16-bitli selektor va 32-bitli ofsetdan iborat segmentlangan manzillar ishlatiladi, ya'ni. manzil bitta emas, balki juft juft. Ikkinchidan, Intel dasturlarda ishlatiladigan manzillarni mantiqiy deb atash uchun "virtual manzil" atamasidan foydalanmaydi; Shunday qilib, Intel hujjatlari nuqtai nazaridan dasturchi aniq mantiqiy manzillar bilan shug'ullanadi va "virtual manzil" atamasi IA-32 arxitekturasiga umuman aloqasi yo'q. Uchinchidan, virtual xotira mexanizmini qo'llab-quvvatlaydigan va shu sababli virtual manzillar bilan ishlaydigan IA-32 arxitekturasi uchun barcha operatsion tizimlar IA-32 segmentatsiya mexanizmidan faqat talab qilinadigan eng kam miqdordagi dasturlardan foydalanadilar, dasturlarni tekis manzil maydoni bilan ta'minlaydilar. ofset yordamida amalga oshiriladi va segment selektorlari o'zgarishsiz qoladi. Windows yoki Linux hujjatlari virtual manzillarni turli xil tizim qo'ng'iroqlariga o'tkazish haqida gapirganda, barcha hollarda faqat mantiqiy manzildan ofset o'tkaziladi.
64-bit rejimida virtual manzil
64-bitli rejimda segmentatsiya bekor qilinadi, shuning uchun dasturchi faqat bitta 64-bitli sondan iborat va chiziqli adreslarga to'g'ri keladigan manzillar bilan ishlaydi. Biroq, bu erda ham IA-32 arxitekturasi umumiy qoidalardan istisno: chiziqli va shuning uchun virtual manzil (Intel hujjatlaridagi mantiqiy), manzil aslida imzolangan raqamdir, chunki ular bo'lishi kerak " kanonik ", ya'ni shuning uchun manzilning eng muhim jismoniy bitlari qiymatiga qarab, manzilning barcha eng muhim bitlari nolga yoki bittaga teng bo'ladi. Masalan, IA-32 me'morchiligining birinchi 64-bitli mikroprotsessorlarida 64-bit emas, balki 48-bitli chiziqli manzillar jismoniy ravishda amalga oshiriladi, ular 0000_0000_0000_0000h dan 0000_7FFF_FFFF_FFFFh yoki FFF_8000_0000_00FFFFFFgacha, ya'ni FFF_8000_0000_00F_FFFgacha, imzolangan raqamlar sifatida –2 ** 47 dan + 2 ** 47-1 gacha.
Xulosa
Foydalanilgan adabiyotlar
http://library.ziyonet.uz/
https://osdev.fandom.com/
https://minussv.ru/
Dostları ilə paylaş: |