Xotirani tartiblash va kengaytirish, virtual xotira

|
Xotirani tartiblash va kengaytirish, virtual xotira
|
bet | 62/222 | Sana | 15.05.2024 | Hajmi | 5,84 Mb. | | #236377 |
Xotirani tartiblash va kengaytirish, virtual xotira
Bo‘linish (fragmentatsiya)
Bo‘linish (fragmentatsiya) - bu xotiraning kichik o‘lchamdagi, qo‘shni bo‘lmagan maydonlarga bo‘linishidir. Bo‘linishni (fragmentatsiyani) ikkita turi mavjud: tashqi bo‘linish va ichki bo‘linish.
Tashqi bo‘linish
Xotiraning umumiy maydoni so‘rovni qondirish yoki undagi jarayonni o‘tkazish uchun yetarli, ammo u o‘zaro bog‘liq bo‘lmaydi, shuning uchun undan foydalanib bo‘lmaydi.
Ichki bo‘linish
Jarayonga belgilangan xotira bloki kattaroqdir. Xotiraning bir qismi ishlatilmay qoladi, chunki undan boshqa jarayon foydalana olmaydi. Quyidagi diagrammada bo‘linish qanday qilib xotira yo‘qolishiga olib kelishi va siqish texnikasidan foydalanib, bo‘lingan xotiradan ko‘proq bo‘sh xotirani yaratish uchun foydalanish mumkinligi ko‘rsatilgan.
Ichki bo‘linish xotirani taqsimlashning aniq algoritmini qo‘llagan tizim natijasida yuzaga kelishi mumkin, so‘rovga javoban xotira talab qilinganiga nisbatan biroz kattaroq ajratiladi.
3.11- rasm. Siqishdan oldingi xotiradagi bo‘linish
3.12- rasm. Siqishdan keyingi xotira
Masalan, kattaligi ikkita sahifaga qadar bo‘lgan. Xotirani sahifali tashkil etish ushbu ma’ruzada keyinchalik batafsil muhokama qilinadi.
O‘zgaruvchan qismli sxemalar
Bundan oldingi ko‘rib chiqilgan xotirani taqsimlash sxemalarida (belgilangan qismlar va dinamik qismlar) mavjud muammolarni (bo‘linishlarni oldini olish uchun) yechimi o‘zgaruvchan dinamik qismlarni ishlab chiqish edi.
Qoida bo‘yicha svoping (almashtirish) tizimi belgilangan qismlarga asoslanishi mumkin. Ammo dinamik taqsimlash yoki o‘zgaruvchi qismli sxemalar samarali hisoblanadi. Chunki ular hamma jarayonlar to‘liq ravishda xotirada joylashganda, yani svoping bo‘lmagan hollarda qo‘llaniladi.
Bu holda, boshida xotira butunlay bo‘sh va oldindan qismlarga bo‘lingan bo‘lmaydi. Yangi ishga tushirilayotgan vazifaga qat’iy ravishda kerakli xotiraning o‘zi ajratiladi (undan ko‘p emas). Jarayon chiqarilgandan so‘ng, xotira vaqtincha bo‘shatiladi. Bir qancha vaqt o‘tgandan so‘ng xotira turli o‘lchamdagi o‘zgaruvchan sonli qismlardan iborat bo‘lib qoladi. Yonma-yon bo‘lgan bo‘sh joylar birlashtirilishi mumkin.
Ushbu xotirani taqsimlash sxemasi yordamida xotira menejeri barcha bo‘sh bloklarni bir joyga to‘plash va bir xotira blokini yetarlicha katta qilish (kirishni kutayotgan ba’zi yoki barcha
vazifalarni joylashtirish uchun) va ularni siqish uchun dasturlarni o‘zgartiradi. Xotirani siqish operatsion tizim tomonidan xotira maydonining bo‘lingan (fragmentatsiya) qismlarini tiklash (defragmentatsiya) uchun amalga oshiriladi. Lekin bu oson ish emas. Birinchidan, xotiradagi har bir dastur bir-biriga qo‘shni bo‘lishi uchun ko‘chirilishi kerak, so‘ngra har bir manzil va har bir dasturdagi manzilga bog‘lanish, dasturning xotirada yangi joylashishini hisobga olgan holda sozlanishi kerak.
Tashqi bo‘linish
Vazifalar ro‘yhati: Vazifa 1 = 8K
Asosiy xotira
10K
18K
30K
62K
92K
Asosiy xotira
Asosiy xotira
Vazifa 2 = 16K Vazifa 4 = 32K Vazifa 5 = 48K Vazifa 6 = 84K(kutmoqda)
108K
Vazifa 1 (8K)
|
|
Vazifa 4 (32K)
|
|
Vazifa 2 (16K)
|
Vazifa 5 (48K)
|
|
Vazifa 1 (8K)
|
Vazifa 4 (32K)
|
Vazifa 2 (16K)
|
Vazifa 5 (48K)
|
|
Vazifa 1 (8K)
|
Vazifa 4 (32K)
|
Vazifa 2 (16K)
|
Vazifa 5 (48K)
|
Vazifa 6 (84K)
|
|
156K
(a)
(b)
(c)
3.13- rasm. O‘zgaruvchan qismli sxemaga misol
Dastlabki 10 Kb xotirani egallaydigan, operatsion tizimni xotirani siqishdan oldingi va keyingi uchta rasmi. 6-vazifa uchun 84 Kb kerak bo‘lsa, (a) tashqi bo‘linishdagi dastlabki xotira tuzilishi 96 Kbni tashkil qiladi. Siqishdan so‘ng (b) darhol tashqi bo‘linish bartaraf etildi, bu esa 6-vazifa uchun joy yaratishga imkon berdi, yuklangandan keyin (c) da ko‘rsatilgan.
|
| |